Das Meiste des folgenden ist nicht ausreichend dokumentiert.
Alle Informationen setzen sich aus offiziellen, inoffiziellen und meinen Erkenntnissen zusammen.
Alle Inhalte ohne Gewähr.
Inhalt und Richtigkeit kann sich jederzeit ändern, da es sich nicht um kein offizielles Dokument handelt.
Beispiele werden ebenfalls folgen.
Für einen kleinen Überblick, siehe hier.
== Grundlegendes ==
Ereignisse
"Events"
- werden durch Erfolg oder Misserfolg einer Anweisung oder den Abschluss eines Triggers ausgelöst
- in der Fahrplan Ansicht können sie in den Feldern "Erfolgsbedingung", "Auslösen Erfolg" und "Auslösen Fehler" verwendet werden
"DefferedEvents"
- können auch durch einen Skriptaufruf durch die Funktion "TriggerDeferredEvent" ausgelöst werden (dazu später)
- Ereignisse, deren Auslösung nach einem festgelegten Intervall erfolgt
- Sie sind der Mechanismus, um das gesamte Timing durchzuführen, wenn sie mit einem Spiel gespeichert werden
Bedingungen
- Testen von zusätzlichen Anforderungen an den Spieler, wenn eine Anweisung ansonsten erfolgreich wäre
- Zum Beispiel kann für eine "Gehe über"-Anweisung eine Bedingung getestet werden, wenn der Zug in die Markierung einfährt
- Bedingungen können zu einer Anweisung im Feld "Erfolgsbedingung" hinzugefügt werden
- Bedingungen können auch durch einen Aufruf der Skriptfunktion "BeginConditonCheck" getestet werden (dazu später)
- Überprüfte Bedingungen sind eine Möglichkeit zu testen, ob eine Bedingung über einen bestimmten Zeitraum beibehalten wird z.B.: Druck
- Sobald eine Bedingung abgeschlossen ist, wird ihr Wert gespeichert und alle weiteren Überprüfungen geben diesen gespeicherten Wert zurück.
Szenarioskript
- ein ScenarioScript.lua muss im Stammverzeichnis des Szenarios platziert werden
- Diese sollte zwei Funktionen definieren:
- mit "function OnEvent ( event )" werden alle Ereignisaufrufe aus dem Szenariosystem verarbeitet
- TRUE (1), wenn das Ereignis behandelt wird
- FALSE (0), wenn das Ereignis unbekannt ist
- "event" Name des Ereignisses, wie in der Anweisung, dem Trigger oder dem "TriggerDeferredEvent" definiert
- mit "function TestCondition ( condition )" wird getestet, ob der Spieler zusätzliche Bedingungen für eine Anweisung erfüllt hat
- CONDITION_NOT_YET_MET (0), CONDITION_SUCCEEDED (1) oder CONDITION_FAILED (2) zurückgeben
- "condition" Name der Bedingung, wie in der Anweisung oder in "BeginConditonCheck" definiert
- Szenarioskripte haben eine andere Aufrufkonvention als andere Skripte im Spiel
- Statt Call, verwendet das Szenario Skript "SysCall"
"SysCall" hat Zugriff auf eine Reihe globaler Funktionen, sowie auf die normalen Skriptfunktionen aller benannten Objekte
"SysCall" verwendet eine Doppelpunktnotation, um das Objekt oder das Modul zu beschreiben, für das der Funktionsaufruf erforderlich ist z.B.:
SysCall ( "ScenarioManager:ShowMessage", "Title", "Message" )
richtung = SysCall ( "PlayerEngine:GetControlValue", "Regulator" );
Eine zweite Doppelpunktnotation kann verwendet werden, um ein untergeordnetes Objekt abzurufen z.B.:
SysCall ( "PlayerEngine:Main Smoke Stack:GetEmitRate" )
- Jedes in einem Szenario platzierte Objekt kann im Eigenschaften-Flyout im Feld " Objektname " benannt werden.
- PlayerEngine ist ein besonderer Wert, dieser bezieht sich immer auf die "PlayerEngine".
- Auch jedes nummerierte Schienenfahrzeug kann verwendet werden.
Wichtig:
Es ist zu empfehlen, jegliches Scripting mit einem geeigneten Text-Editor durchzuführen (Notepad++, LuaEdit, etc.)
Zustände in Szenarioskripten werden bei Speichern und Fortsetzen des Szenarios nicht beibehalten
Scenario Manger:
TriggerScenarioComplete
Syntax | TriggerScenarioComplete ( message ) |
Funktion | Erfolgreicher Abschluss eines Szenarios |
Eingabewerte | message Meldung, weshalb das Szenario erfolgreich war |
Ausgabe | N/A |
TriggerScenarioFailure
Syntax | TriggerScenarioFailure ( message ) |
Funktion | Nicht erfolgreicher Abschluss eines Szenarios |
Eingabewerte | message Meldung, weshalb das Szenario nicht erfolgreich war |
Ausgabe | N/A |
TriggerDeferredEvent
Syntax | TriggerDeferredEvent ( event, time ) |
Funktion | Löst ein verzögertes Ereignis aus |
Eingabewerte |
event Name des Ereignisses time Zeit in Sekunden, bis das Ereignis ausgelöst werden soll |
Ausgabe | false, wenn das Ereignis bereits geplant ist |
CancelDeferredEvent
Syntax | CancelDeferredEvent ( event ) |
Funktion | Bricht ein verzögertes Ereignis ab |
Eingabewerte | event Name des Ereignisses |
Ausgabe | false, wenn das Ereignis nicht mehr geplant war |
BeginConditionCheck
Syntax | BeginConditionCheck ( condition ) |
Funktion | Beginnt mit dem Testen eines Zustands |
Eingabewerte | condition Name der Bedingung |
Ausgabe | false, wenn die Bedingung bereits getestet wird |
Hinweis | Sobald die Bedingung als CONDITION_SUCCEEDED (1) oder CONDITION_FAILED (2)abgeschlossen wurde, wird die Bedingung nicht mehr getestet. |
EndConditionCheck
Syntax | EndConditionCheck ( condition ) |
Funktion | Beendet das Testen eines Zustands |
Eingabewerte | condition Name der Bedingung |
Ausgabe | false, wenn die Bedingung bereits nicht mehr getestet wird |
Hinweis | Kann nicht aus TestCondition heraus gefunden werden |
GetConditionStatus
Syntax | GetConditionStatus ( condition ) |
Funktion | Ruft den Status einer Skriptbedingung ab |
Eingabewerte | condition Name der Bedingung |
Ausgabe |
CONDITION_NOT_YET_MET (0) CONDITION_SUCCEEDED (1) CONDITION_FAILED (2) |
Hinweis | testet nur den gespeicherten Status einer Bedingung generiert keinen Aufruf von CheckCondition. |
ShowMessage
Syntax | ShowMessage ( title, message, type ) |
Funktion | Dialogfeld mit einer Nachricht |
Eingabewerte |
title Titel des Dialogsfelds message Inhalt der Nachricht type Typ des Meldungsfelds INFO (0) oder ALERT (1) |
Ausgabe | N/A |
Hinweis | Wenn title oder message im UUID-Format vorliegen, werden sie als Schlüssel für die Sprachtabelle verwendet |
ShowInfoMessageExt
Syntax | ShowInfoMessageExt ( title, message, time, pos, size, pause ) |
Funktion | Dialogfeld mit einer Nachricht und erweiterten Attributen |
Eingabewerte |
title Titel des Dialogfelds message Inhalt oder .html time Zeit zum Anzeigen der Nachricht, 0.0 für unbestimmte Zeit pos Position ( MSG_TOP (1), MSG_VCENTRE (2), MSG_BOTTOM (4), MSG_LEFT (8), MSG_CENTRE (16), MSG_RIGHT (32)) size Größe ( MSG_SMALL (0), MSG_REG (1), MSG_LRG (2)) pause Spiel unterbrechen ( TRUE, FALSE) |
Ausgabe | N/A |
Hinweis | Wenn title oder message im UUID-Format vorliegen, werden sie als Schlüssel für die Sprachtabelle verwendet |
ShowAlertMessageExt
Syntax | ShowAlertMessageExt ( title, message, time, event ) |
Funktion | Dialogfeld mit einer Nachricht und erweiterten Attributen |
Eingabewerte |
title Titel des Dialogfelds message Inhalt time Zeit zum Anzeigen der Nachricht, 0.0 für unbestimmte Zeit event Ereignis wird bei Klicken auf die Nachricht ausgelöst |
Ausgabe | N/A |
Hinweis | Wenn title oder message im UUID-Format vorliegen, werden sie als Schlüssel für die Sprachtabelle verwendet |
IsAtDestination
Syntax | IsAtDestination ( service, dest ) |
Funktion | Löst ein verzögertes Ereignis aus |
Eingabewerte |
service Name des Ereignisses dest Zeit in Sekunden, bis das Ereignis ausgelöst werden soll |
Ausgabe | false, wenn Ereignis bereits geplant war |
Hinweis | Es kann nur ein Ereignis pro Aktualisierung ausgelöst werden. Zwei Ereignisse mit derselben Ablaufzeit werden in aufeinanderfolgenden Frames ausgelöst. |
GetSceanrioTime
Syntax |
GetScenarioTime () |
Funktion | Ruft die Zeit seit dem Start des Szenarios in Sekunden ab |
Eingabewerte | N / A |
Ausgabe | Die Zeit seit dem Start des Szenarios in Sekunden |
Hinweis | - |
GetTimeOfDay
Syntax | GetTimeOfDay () |
Funktion | Ruft die Zeit seit 0:00Uhr in Sekunden ab |
Eingabewerte |
N / A |
Ausgabe | Die Zeit seit Mitternacht in Sekunden
|
Hinweis | - |
LockControls
Syntax | LockControls() |
Funktion | Sperrt alle Bedienelemente und Tastaturbefehle im Simulator |
Eingabewerte | N / A |
Ausgabe | N / A |
Hinweis | Lok kann erst vom User wieder bedient werden, wenn der Befehl UnlockControls gegeben wurde |
UnlockControls
Syntax | UnlockControls() |
Funktion | Entsperrt alle Bedienelemente und Tastaturbefehle im Simulator |
Eingabewerte | N / A |
Ausgabe | N / A |
Hinweis | - |
GetSeason
Syntax | GetSeason() |
Funktion | Ruft die Jahreszeit ab |
Eingabewerte |
N / A |
Ausgabe | SEASON_SPRING = 0, SEASON_SUMMER = 1, SEASON_AUTUMN = 2, SEASON_WINTER = 3 |
Hinweis | - |
WetterController:
GetCurrentPrecipitationType
Syntax | GetCurrentPrecipitationType () |
Funktion | Ruft die aktuelle Niederschlagsart ab |
Argumente | N / A
|
Rückgabe | 0 = Regen, 1 = Schneeregen, 2 = Hagel, 3 = Schnee |
Hinweis | - |
GetCurrentPrecipitationDensity
Syntax | GetPrecipitationDensity () |
Funktion | Ruft die Dichte des Niederschlags ab |
Argumente | N / A |
Rückgabe | Wert zwischen 0 und 1 |
Hinweis | Wert variiert |
GetCurrentPrecipitationSpeed
Syntax | GetPrecipitationSpeed () |
Funktion | Ruft die Geschwindigkeit des Niederschlags ab |
Argumente | N / A |
Rückgabe | Die vertikale Fallgeschwindigkeit des Niederschlags in Metern pro Sekunde |
Hinweis | - |
WetterController:
ActivateCamera
Syntax | ActivateCamera ( name, time) |
Funktion | Wechseln Sie zu einer benannten Kamera |
Argumente |
name Name der Kamera time Zeit in Sek., bevor zur vorherigen Kamera zurückgekehrt wird. 0 für kein rücksetzen |
Rückgabe | N / A |
Hinweis | Die Kamera kann eine der Standardkameras oder eine benutzerdefinierte Kamera sein. Standardkameras: CabCamera - Führerstandsansicht (wie 1) ExternalCamera - Zugverfolgungskamera (wie 2 ) HeadOutCamera - Abfertigungskamera (aus dem Fenster schauen) (wie Umschalt + 2) TrackSideCamrea - streckenseitige Kamera (wie 4) CarriageCamera - Wageninnenkamera/Passagierkamera (wie 5) CouplingCamera - Kopplungskamera (wie 6 ) YardCamera - Ansicht der Kamera von oben nach unten (wie 7 ) FreeCamera - freie Kamera ( wie "8" ) |
LookAt
Syntax | LookAt ( name ) |
Funktion | die Kamera auf Objekt richten |
Argumente | name Name des Objekts |
Rückgabe | True, wenn das benannte Objekt gefunden wurde |
Hinweis | Ist name eine Schienenfahrzeugnummer, schaut die Kamera auf dieses Schienenfahrzeug. Ist name ein benannten Objekts, wird das Objekt von der freien Kamera betrachtet. |
JumpTo
Syntax | JumpTo ( longitude, latitude, height ) |
Funktion | Bewegt die Kamera an einen bestimmten Ort |
Argumente |
longitude Längengrad latitude Breitengrad height Höhe über n.N. |
Rückgabe | right , wenn sich die Kamera an den Ort bewegen konnte |
Hinweis | Drei Achsen; Nur für die freie Kamera verfügbar |