Der ThemaScript-Tester dient zum Ausprobieren von ThemaScripten. Hierzu muss nicht gespeichert werden.
Der Tester lässt sich oben rechts mit dem Knopf „Script-Tester“ einblenden, die Ausgabe mit dem Knopf „Testergebnis“. Wird der Tester ausgeführt, wird der Tester geschlossen und das Testergebnis geöffnet - in der Überschrift ist ein Icon zum nochmaligen Ausführen des Tests (mit gleichen Werten, falls das Script selbst geändert wurde) sowie zum Öffnen des Testers.
Parameter | Eingabe | Funktion |
---|---|---|
Werte von TID | Zugtemplate-ID | Füllt zusätzlich die Felder Länge und Geschwindigkeit aus und liefert die vom Zugtemplate durchfahrenen AIDs als Dropdown-Liste |
Thema | Thema und Klasse (Drop down) | Nur Zeilen mit dem übergebenen Thema und Klasse werden im Test ausgeführt. Mehrere Klassen können mit Komma getrennt angegeben werden. |
Länge | Zahl | Startlänge für den Test (damit wird gerechnet) |
Tempo | Zahl | Starttempo für den Test (damit wird gerechnet) |
Verspätung | Zahl (in Minuten) | Startverspätung für den Test (damit wird gerechnet) |
Aktiv? | Aktiv-Status zu Beginn des Tests | |
Aktuelle Spielstunde | Zahl | Die Spiel-Stunde zu der das Script ausgeführt wird |
Aktuelle AID | Anlagen-ID | AID für den Test - wenn eine TID geladen wurde, als Dropdown-Liste |
Wurde gesteuert? | Bestimmt die Ausgabe des Befehls wurdegesteuert | |
Wird gesteuert? | Bestimmt die Ausgabe des Befehls wirdgesteuert |
Thema: '', Klasse: 'start', AIDs: '', ZIDs: '' UPN-Code: '1,sub' Script passt nicht wegen Klasse.
Für jeden Codeblock wird jeweils der Blockkopf aufgelöst und zusammen mit dem UPN-Code wie im obigen Beispiel dargestellt.
Anschliessend wird der Kopf ausgewertet: alle Bedingungen, welche durch den Blockkopf gestellt werden, müssen erfüllt sein. Passt mindestens eine Bedingung nicht, wird die Zeile nicht ausgeführt und eine entsprechende Meldung gezeigt.
Thema: 'herbst', Klasse: 'Start', AIDs: '', ZIDs: '' UPN-Code: '$tempo,$tempo,3,7,rnd,/,-,tempo' Script passt #Token: '$tempo' #Stack: {5} #Token: '$tempo' #Stack: {5},{5} #Token: '3' #Stack: {5},{5},{3} #Token: '7' #Stack: {5},{5},{3},{7} #Token: 'rnd' #Stack: {5},{5},{5} #Token: '/' #Stack: {5},{1} #Token: '-' #Stack: {4} #Token: 'tempo' setze Tempo auf 4 #Stack: {}
Hier sieht man, wie die einzelnen Werte in den Speicher (Stack) geladen werden. Sobald der Tester auf einen Befehl trifft, wird dieser ausgeführt, und nimmt weitere Werte vom Stack.
#Token: '$wurdegesteuert' #Stack: {1} #Token: '(nop)' #Stack: {1},{nop} #Token: '($verspaetung,0,$abstunde,1,+,$abstundev,-,2,*,rnd,+,verspaetung)' #Stack: {1},{nop},{$verspaetung,0,$abstunde,1,+,$abstundev,-,2,*,rnd,+,verspaetung} #Token: 'if' #Token: 'nop' #Stack: {}
Bei „if-Befehlen“ werden die in Klammern stehenden Teile welche ausgewertet werden, wenn die Bedingung wahr bzw. falsch ist, als ganzes in Speicher geladen. Um Fehler in diesem Teil des Codes zu finden müssen diese Teilblöcke in einen neuen Codeblock kopiert werden und dieser durch den Tester ausgewertet werden lassen.
Mit diesen Werten kann nicht gerechnet werden.