Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
stellwerksim:2_erbauer:tutorials:bauen:zuege:themascript-use [2016/02/13 19:50] – angelegt admin | stellwerksim:2_erbauer:tutorials:bauen:zuege:themascript-use [Unknown date] (aktuell) – gelöscht - Externe Bearbeitung (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Anwendung von Themascripts ====== | ||
- | Im weiteren soll auf die praktische Anwendung von Themascripts eingegangen werden. Um sich selbst mit diesen Skripten vertraut zu machen, empfiehlt es sich bereits vorhandene aus der ThemaScript-library zu studieren und zu verstehen, was dort gemacht wird. | ||
- | Grundsätzlich kann man sich in der library alle Skripte ansehen. Die Skripte gehören jedoch einem Benutzer und in der Regel kann natürlich auch nur dieser Benutzer das Skript bearbeiten. Man kann jedoch auch ein vorhandenes Skript kopieren und dieses dann für eigene Zwecke benutzen. | ||
- | |||
- | ===== Beispiel 1: Verspätung und Tempo ===== | ||
- | Betrachten wir das Standardbeispiel (schon recht komplex), das auch im Skript-Editor angeführt wird: | ||
- | | ||
- | Pflücken wir es auseinander. Zunächst haben wir einen Blockkopf // | ||
- | |||
- | Betrachten wir nun das eigentliche Skript zwischen den runden Klammern. Bei der umgekehrten polnischen Notation bietet es sich häufig an von rechts nach links zu lesen. Beeinflußt werden soll das //tempo// eines Zuges, es wird auf einen (//oneof//) der Werte 3, 5, 6 oder 7 gesetzt. Gesetzt wird ebenfalls die Eigenschaft // | ||
- | |||
- | Übrigens, das Standardthemaskript, | ||
- | |||
- | ===== Beispiel 2: Mehrere Zeilen ===== | ||
- | Das Skript darf natürlich aus mehreren Zeilen bestehen, die nacheinander abgearbeitet werden. Ein sehr einfaches Beispiel sind die Themenskripte, | ||
- | | ||
- | | ||
- | | ||
- | Dieses Skript besteht aus drei Zeilen. Die erste Zeile gilt immer. Es wird mit dem Befehl //sub// ein anderes Themenskript mit eingebunden, | ||
- | |||
- | ===== Beispiel 3: Abfragen ===== | ||
- | Es wird komplizierter. Nun wollen wir Änderungen auf ein Template in Abhängigkeit von bestimmten Voraussetzungen wirken lassen. Hierfür gibt es die // | ||
- | | ||
- | Was passiert hier? Wir lesen wieder zunächst den Kopf: Das Skript gilt für jeden Bahnhof. Das Skript selbst ist etwas schwieriger zu lesen. Von rechts gelesen wissen wir zunächst, dass es sich um eine Abfrage (//if//) handelt. Das Ergebnis der Abfrage bestimmt sich aus einer booleschen Operation, also einem Operation die " | ||
- | Wenn $altaid gleich 412 ist, setze die Länge des Zuges auf 7. | ||
- | oder auch | ||
- | Wenn Augsburg durchfahren wurde, erhält der Zug Länge 7. | ||
- | Für Abfragen gibt es vielfältige Möglichkeiten. Allerdings sind solche Abfragen programmier- und laufzeittechnisch gesehen in der Regel sehr langsam. Sie sollten nur eingesetzt werden, wenn eine andere Lösung nicht möglich ist. | ||
- | |||
- | ===== Beispiel 4: Verwendung von simparam ===== | ||
- | Kommen wir zur hohen Kunst der Themaskripterstellung - die Verwendung von simparam. Die Syntax ist dabei eigentlich sogar leichter als bei den Abfragen, es lassen sich aber komplexe Beeinflussungen eines Templates realisieren. | ||
- | |||
- | Wir stellen uns mal ein Stellwerk vor, in dem ein Übergang auf eine Schnellfahrstrecke ab dem Bahnsteig " | ||
- | | ||
- | Dieses Skript gilt also für das Stellwerk mit ID 10 und 11, mit Befahren des Bahnsteigs " | ||
- | |||
- | | [[stellwerksim: |