Handbuch

STS Handbuch

Stellwerksim Handbuch

Webseiten-Werkzeuge


stellwerksim:erbauer:tutorials:bauen:zuege:themascript-use

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
stellwerksim:erbauer:tutorials:bauen:zuege:themascript-use [2019/01/21 09:27] billystellwerksim:erbauer:tutorials:bauen:zuege:themascript-use [2019/01/21 09:49] billy
Zeile 14: Zeile 14:
  
 ===== Beispiel 2: Mehrere Zeilen ===== ===== Beispiel 2: Mehrere Zeilen =====
-Das Skript darf natürlich aus mehreren Zeilen bestehen, die nacheinander abgearbeitet werden. Ein sehr einfaches Beispiel sind die Themenskripte, mit denen man Templates themenabhängig steuern kann, z.B.:+Das Skript darf natürlich aus mehreren Zeilen bestehen, die nacheinander abgearbeitet werden. Ein sehr einfaches Beispiel sind die Themenskripte, mit denen man Zugtemplates themenabhängig steuern kann, z.B.:
  *(1,sub);  *(1,sub);
  Winter:Start(N,aktiv);  Winter:Start(N,aktiv);
  schwerer_Winter:Start(N,aktiv);  schwerer_Winter:Start(N,aktiv);
-Dieses Skript besteht aus drei Zeilen. Die erste Zeile gilt immer. Es wird mit dem Befehl //sub// ein anderes Themenskript mit eingebunden, nämlich das Standardthemenskript ID 1, das üblicherweise für alle Züge aktiv ist. Die zweite Zeile gilt beim Thema "Winter" und schaltet für das Template den Wert //aktiv// auf //N//, also nein. Damit ist also dieses Template beim Thema "Winter" nicht aktiv und der Sim schickt diese Züge gar nicht erst los. Analog die dritte Zeile bei "schwerem Winter".+Dieses Skript besteht aus drei Zeilen. Die erste Zeile gilt immer. Es wird mit dem Befehl //sub// ein anderes Themenskript mit eingebunden, nämlich das Standardthemenskript ID 1, das üblicherweise für alle Züge aktiv ist. Die zweite Zeile gilt beim Thema "Winter" und schaltet für das Zugtemplate den Wert //aktiv// auf //N//, also nein. Damit ist also dieses Zugtemplate beim Thema "Winter" nicht aktiv und der Sim schickt diese Züge gar nicht erst los. Analog die dritte Zeile bei "schwerem Winter".
  
 ===== Beispiel 3: Abfragen ===== ===== 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 //if//-Abfrage. Wir wollen es wieder anhand eines Beispiels aufzeigen:+Es wird komplizierter. Nun wollen wir Änderungen auf ein Zugtemplate in Abhängigkeit von bestimmten Voraussetzungen wirken lassen. Hierfür gibt es die //if//-Abfrage. Wir wollen es wieder anhand eines Beispiels aufzeigen:
  *:bahnhof($altaid,412,=,(7,laenge),(nop),if);  *:bahnhof($altaid,412,=,(7,laenge),(nop),if);
 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 "wahr" oder "falsch" als Ergebnis hat. Dementsprechend gibt es auch genau zwei mögliche Aktionen, die ausgeführt werden - nämlich den Befehl der bei "falsch" ausgeführt wird und den Befehl der bei "wahr" ausgeführt wird. In unserem Beispiel ist der "Falsch Befehl" der Befehl //nop//, d.h. tue gar nichts. Der "Wahr Befehl" ist //(7,laenge)//, d.h. setze die Länge auf den Wert 7. Was uns nun noch fehlt ist die boolesche Operation, die uns überhaupt erst auf den einen oder anderen Befehl führt. Diese findet sich in den (von rechts gelesen) letzten drei Feldern: //$altaid,412,=//. Die zwei Werte //$altaid// und //412// müssen //=// also gleich sein. //$altaid// ist dabei die Anlagen-ID des vorherigen Stellwerks, das durchfahren wurde. Setzen wir die Informationen zusammen: 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 "wahr" oder "falsch" als Ergebnis hat. Dementsprechend gibt es auch genau zwei mögliche Aktionen, die ausgeführt werden - nämlich den Befehl der bei "falsch" ausgeführt wird und den Befehl der bei "wahr" ausgeführt wird. In unserem Beispiel ist der "Falsch Befehl" der Befehl //nop//, d.h. tue gar nichts. Der "Wahr Befehl" ist //(7,laenge)//, d.h. setze die Länge auf den Wert 7. Was uns nun noch fehlt ist die boolesche Operation, die uns überhaupt erst auf den einen oder anderen Befehl führt. Diese findet sich in den (von rechts gelesen) letzten drei Feldern: //$altaid,412,=//. Die zwei Werte //$altaid// und //412// müssen //=// also gleich sein. //$altaid// ist dabei die Anlagen-ID des vorherigen Stellwerks, das durchfahren wurde. Setzen wir die Informationen zusammen:
Zeile 30: Zeile 30:
  
 ===== Beispiel 4: Verwendung von simparam ===== ===== 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.+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 Zugtemplates realisieren.
  
-Wir stellen uns mal ein Stellwerk vor, in dem ein Übergang auf eine Schnellfahrstrecke ab dem Bahnsteig "NBS" simuliert wird. Im Stellwerk (ID=10) ist das maximale Tempo auf 5 gesetzt. Bestimmte Züge sollen mit Anfang der Schnellfahrstrecke auf Tempo 7 gesetzt werden. Das gleiche soll auch im Stellwerk mit ID=11 passieren. Für die Templates dieser Züge könnte man nun folgendes Themaskript setzen:+Wir stellen uns mal ein Stellwerk vor, in dem ein Übergang auf eine Schnellfahrstrecke ab dem Bahnsteig "NBS" simuliert wird. Im Stellwerk (ID=10) ist das maximale Tempo auf 5 gesetzt. Bestimmte Züge sollen mit Anfang der Schnellfahrstrecke auf Tempo 7 gesetzt werden. Das gleiche soll auch im Stellwerk mit ID=11 passieren. Für das Zugtemplates dieser Züge könnte man nun folgendes Themaskript setzen:
  *:Bahnhof:10,11(7,soll_tempo,NBS,simparam);  *:Bahnhof:10,11(7,soll_tempo,NBS,simparam);
 Dieses Skript gilt also für das Stellwerk mit ID 10 und 11, mit Befahren des Bahnsteigs "NBS" wird in diesen Stellwerken das Tempo auf 7 gesetzt (solange bis das Stellwerk verlassen wird oder ein anderer Bahnsteig in diesem Stellwerk erreicht wird). Dieses Skript gilt also für das Stellwerk mit ID 10 und 11, mit Befahren des Bahnsteigs "NBS" wird in diesen Stellwerken das Tempo auf 7 gesetzt (solange bis das Stellwerk verlassen wird oder ein anderer Bahnsteig in diesem Stellwerk erreicht wird).
  
 | [[stellwerksim:erbauer:tutorials:bauen|Nach oben: Bauen]] | | [[stellwerksim:erbauer:tutorials:bauen|Nach oben: Bauen]] |
stellwerksim/erbauer/tutorials/bauen/zuege/themascript-use.txt · Zuletzt geändert: 2021/04/14 16:37 von DevonFrosch