Szenario Skripting

Discord Einladung
Trete unserem Discord-Server bei (klicke hier zum Beitreten).

Sie betrachten gerade eine ältere Version des Eintrags. Klicken Sie hier, um zur aktuellen Version zu gelangen.

  • IN ARBEIT!

    Der Train Simulator bietet Skriptfunktionen für Szenarioereignisse und -bedingungen.
    Diess können verwendet werden, um Animation abzuspielen, einen Kamerawechsel auszulösen, Elemente des Spielerzugs zu messen und zu steuern.

    Dies is eine Auflistung verschiedener Möglichkeiten, die es im Szenario Skripting gibt.

    INFORMATION:
    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.

    Ergänzung wird in Kürze folgen.
    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



    == Funktionen ==

    Szenario 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

Teilen