[font='Trebuchet MS, Helvetica, sans-serif']INFORMATION:
[i]Das Meiste des folgenden ist nicht ausreichend dokumentiert.[/i]
[i]alle Informationen setzen sich aus offiziellen, inoffiziellen und meinen Erkenntnissen zusammen.[/i]
[i]Alle Inhalte ohne Gewähr.[/i]
[i][b]Inhalt und Richtigkeit kann sich jederzeit ändern, da es sich nicht um kein offizielles Dokument handelt.[/b][/i]
[lines][/lines]
[size=12]== Grundl[/size][/font][size=12]egendes ==
[/size]
[b][font='Trebuchet MS, Helvetica, sans-serif']Ereignisse[/font][/b]
[b][font='Trebuchet MS, Helvetica, sans-serif']"Events"[/font][/b]
[font='Trebuchet MS, Helvetica, sans-serif']- werden durch Erfolg oder Misserfolg einer Anweisung oder den Abschluss eines Triggers ausgelöst
- in der Fahrplan Ansicht können sie in den Feldern "[i]Erfolgsbedingung[/i][i]", "Auslösen Erfolg"[/i] und "[i]Auslösen Fehler" verwendet werden[/i]
[b]"DefferedEvents"[/b]
- können auch durch einen Skriptaufruf durch die Funktion "[i]TriggerDeferredEvent" [/i]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
[b]Bedingungen[/b]
- 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 "[i]Erfolgsbedingung"[/i] hinzugefügt werden
- Bedingungen können auch durch einen Aufruf der Skriptfunktion[i] "BeginConditonCheck"[/i] 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.
[b]Szenarioskript[/b][/font]
- ein ScenarioScript.lua muss im Stammverzeichnis des Szenarios platziert werden
- Diese sollte zwei Funktionen definieren:
- mit "[tt]function OnEvent ( event )[/tt]" werden alle Ereignisaufrufe aus dem Szenariosystem verarbeitet
- [i]TRUE[/i] (1), wenn das Ereignis behandelt wird
- [i]FALSE[/i] (0), wenn das Ereignis unbekannt ist
[i] - "event" [/i]Name des Ereignisses, wie in der Anweisung, dem Trigger oder dem [i]"TriggerDeferredEvent"[/i] definiert
- mit "[tt]function TestCondition ( condition )[/tt]" wird getestet, ob der Spieler zusätzliche Bedingungen für eine Anweisung erfüllt hat
- [i]CONDITION_NOT_YET_MET[/i] (0), [i]CONDITION_SUCCEEDED[/i] (1) oder [i]CONDITION_FAILED[/i] (2) zurückgeben
[i] - "condition"[/i] Name der Bedingung, wie in der Anweisung oder in "[i]BeginConditonCheck" [/i]definiert
- Szenarioskripte haben eine andere Aufrufkonvention als andere Skripte im Spiel
- Statt Call, verwendet das Szenario Skript "[i]SysCall"[/i]
[i] "SysCall"[/i] hat Zugriff auf eine Reihe globaler Funktionen, sowie auf die normalen [i]Skriptfunktionen[/i] aller benannten Objekte
[i] "SysCall"[/i] verwendet eine Doppelpunktnotation, um das Objekt oder das Modul zu beschreiben, für das der Funktionsaufruf erforderlich ist z.B.:
[tt]SysCall ( "ScenarioManager:ShowMessage", "Title", "Message" )[/tt]
[tt]richtung = SysCall ( "PlayerEngine:GetControlValue", "Regulator" );[/tt]
Eine zweite Doppelpunktnotation kann verwendet werden, um ein untergeordnetes Objekt abzurufen z.B.:
[tt]SysCall ( "PlayerEngine:Main Smoke Stack:GetEmitRate" )[/tt]
- Jedes in einem Szenario platzierte Objekt kann im Eigenschaften-Flyout im Feld " [i]Objektname[/i] " benannt werden.
[i]- PlayerEngine[/i] ist ein besonderer Wert, dieser bezieht sich immer auf die "PlayerEngine".
- Auch jedes nummerierte Schienenfahrzeug kann verwendet werden.
[b]Wichtig:[/b]
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
[lines][/lines]
[size=12][font='Trebuchet MS, Helvetica, sans-serif']== Funktionen ==
[/font][/size]
[b]Szenario Manger:[/b]
[size=14][font='Trebuchet MS, Helvetica, sans-serif'][b]TriggerScenarioComplete[/b][/font][/size]
[font='Trebuchet MS, Helvetica, sans-serif'][size=14][/size][/font]
[table]
[tr]
[td][font='Trebuchet MS, Helvetica, sans-serif']Syntax[/font][/td]
[td][font='Trebuchet MS, Helvetica, sans-serif']TriggerScenarioComplete ( [i]message[/i] )[/font][/td]
[/tr]
[tr]
[td][font='Trebuchet MS, Helvetica, sans-serif']Funktion[/font][/td]
[td][font='Trebuchet MS, Helvetica, sans-serif']Erfolgreicher Abschluss eines Szenarios[/font][/td]
[/tr]
[tr]
[td][font='Trebuchet MS, Helvetica, sans-serif']Eingabewerte[/font][/td]
[td][font='Trebuchet MS, Helvetica, sans-serif'][i]message [/i]Meldung, weshalb das Szenario erfolgreich war
[/font][/td]
[/tr]
[tr]
[td][font='Trebuchet MS, Helvetica, sans-serif']Ausgabe[/font][/td]
[td][font='Trebuchet MS, Helvetica, sans-serif']N/A[/font][/td]
[/tr]
[/table]
[size=14][font='Trebuchet MS, Helvetica, sans-serif'][b]TriggerScenarioFailure[/b][/font][/size]
[font='Trebuchet MS, Helvetica, sans-serif'][size=14][/size][/font]
[table]
[tr]
[td][font='Trebuchet MS, Helvetica, sans-serif']Syntax[/font][/td]
[td][font='Trebuchet MS, Helvetica, sans-serif']TriggerScenarioFailure ( [i]message[/i] )[/font][/td]
[/tr]
[tr]
[td][font='Trebuchet MS, Helvetica, sans-serif']Funktion[/font][/td]
[td][font='Trebuchet MS, Helvetica, sans-serif']Nicht erfolgreicher Abschluss eines Szenarios[/font][/td]
[/tr]
[tr]
[td][font='Trebuchet MS, Helvetica, sans-serif']Eingabewerte[/font][/td]
[td][font='Trebuchet MS, Helvetica, sans-serif'][i]message [/i]Meldung, weshalb das Szenario nicht erfolgreich war
[/font][/td]
[/tr]
[tr]
[td][font='Trebuchet MS, Helvetica, sans-serif']Ausgabe[/font][/td]
[td][font='Trebuchet MS, Helvetica, sans-serif']N/A[/font][/td]
[/tr]
[/table]
[size=14][b]TriggerDeferredEvent[/b]
[/size]
[table]
[tr]
[td]Syntax[/td]
[td]TriggerDeferredEvent ( [i]event, time[/i] )[/td]
[/tr]
[tr]
[td]Funktion[/td]
[td]Löst ein verzögertes Ereignis aus[/td]
[/tr]
[tr]
[td]Eingabewerte[/td]
[td][i]event [/i] Name des Ereignisses
[i]time[/i] Zeit in Sekunden, bis das Ereignis ausgelöst werden soll[/td]
[/tr]
[tr]
[td]Ausgabe[/td]
[td][i]false[/i], wenn das Ereignis bereits geplant ist[/td]
[/tr]
[/table]
[size=14][b]CancelDeferredEvent[/b]
[/size]
[table]
[tr]
[td]Syntax[/td]
[td]CancelDeferredEvent ( [i]event[/i] )[/td]
[/tr]
[tr]
[td]Funktion[/td]
[td]Bricht ein verzögertes Ereignis ab[/td]
[/tr]
[tr]
[td]Eingabewerte[/td]
[td][i]event [/i] Name des Ereignisses[/td]
[/tr]
[tr]
[td]Ausgabe[/td]
[td][i]false,[/i] wenn das Ereignis nicht mehr geplant war[/td]
[/tr]
[/table]
[size=14][b]BeginConditionCheck[/b]
[/size]
[table]
[tr]
[td]Syntax[/td]
[td]BeginConditionCheck ( [i]condition[/i] )[/td]
[/tr]
[tr]
[td]Funktion[/td]
[td]Beginnt mit dem Testen eines Zustands[/td]
[/tr]
[tr]
[td]Eingabewerte[/td]
[td][i]condition [/i]Name der Bedingung[/td]
[/tr]
[tr]
[td]Ausgabe[/td]
[td][i]false,[/i] wenn die Bedingung bereits getestet wird[/td]
[/tr]
[tr]
[td]Hinweis[/td]
[td]Sobald die Bedingung als [i]CONDITION_SUCCEEDED[/i] (1)
oder [i]CONDITION_FAILED[/i] (2)abgeschlossen wurde,
wird die Bedingung nicht mehr getestet.[/td]
[/tr]
[/table]
[size=14][b]EndConditionCheck[/b]
[/size]
[table]
[tr]
[td]Syntax[/td]
[td]EndConditionCheck ( [i]condition[/i] )[/td]
[/tr]
[tr]
[td]Funktion[/td]
[td]Beendet das Testen eines Zustands[/td]
[/tr]
[tr]
[td]Eingabewerte[/td]
[td][i]condition [/i]Name der Bedingung[/td]
[/tr]
[tr]
[td]Ausgabe[/td]
[td][i]false,[/i] wenn die Bedingung bereits nicht mehr getestet wird[/td]
[/tr]
[tr]
[td]Hinweis[/td]
[td]Kann nicht aus [i]TestCondition [/i]heraus gefunden werden[/td]
[/tr]
[/table]
[size=14][b]GetConditionStatus[/b]
[/size]
[table]
[tr]
[td]Syntax[/td]
[td]GetConditionStatus ( [i]condition[/i] )[/td]
[/tr]
[tr]
[td]Funktion[/td]
[td]Ruft den Status einer Skriptbedingung ab[/td]
[/tr]
[tr]
[td]Eingabewerte[/td]
[td][i]condition [/i]Name der Bedingung[/td]
[/tr]
[tr]
[td]Ausgabe[/td]
[td][i]CONDITION_NOT_YET_MET[/i] (0)
[i]CONDITION_SUCCEEDED[/i] (1)
[i]CONDITION_FAILED[/i] (2)[/td]
[/tr]
[tr]
[td]Hinweis[/td]
[td]testet nur den gespeicherten Status einer Bedingung
generiert keinen Aufruf von [i]CheckCondition.[/i][/td]
[/tr]
[/table]
[table]
[/table]
[size=14][b]ShowMessage[/b]
[/size]
[table]
[tr]
[td]Syntax[/td]
[td]ShowMessage ( [i]title, message, type[/i] )[/td]
[/tr]
[tr]
[td]Funktion[/td]
[td]Dialogfeld mit einer Nachricht[/td]
[/tr]
[tr]
[td]Eingabewerte[/td]
[td][i]title [/i]Titel des Dialogsfelds
[i]message [/i]Inhalt der Nachricht
[i]type [/i]Typ des Meldungsfelds [i]INFO[/i] (0) oder [i]ALERT[/i] (1)[/td]
[/tr]
[tr]
[td]Ausgabe[/td]
[td]N/A[/td]
[/tr]
[tr]
[td]Hinweis[/td]
[td]Wenn [i]title [/i]oder [i]message [/i]im UUID-Format vorliegen, werden sie als Schlüssel für die Sprachtabelle verwendet[/td]
[/tr]
[/table]
[size=14][b]ShowInfoMessageExt[/b]
[/size]
[table]
[tr]
[td]Syntax[/td]
[td]ShowInfoMessageExt ( [i]title, message, time, pos, size, pause[/i] )[/td]
[/tr]
[tr]
[td]Funktion[/td]
[td]Dialogfeld mit einer Nachricht und erweiterten Attributen[/td]
[/tr]
[tr]
[td]Eingabewerte[/td]
[td][i]title [/i]Titel des Dialogfelds
[i]message [/i]Inhalt oder .html
[i]time [/i]Zeit zum Anzeigen der Nachricht, 0.0 für unbestimmte Zeit
[i]pos [/i]Position ( [i]MSG_TOP[/i] (1), [i]MSG_VCENTRE[/i] (2), [i]MSG_BOTTOM[/i] (4), [i]MSG_LEFT[/i] (8), [i]MSG_CENTRE[/i] (16), [i]MSG_RIGHT[/i] (32))
[i]size [/i]Größe ( [i]MSG_SMALL[/i] (0), [i]MSG_REG[/i] (1), [i]MSG_LRG[/i] (2))
[i]pause [/i]Spiel unterbrechen ( TRUE, FALSE)[/td]
[/tr]
[tr]
[td]Ausgabe[/td]
[td]N/A[/td]
[/tr]
[tr]
[td]Hinweis[/td]
[td]Wenn [i]title [/i]oder [i]message [/i]im UUID-Format vorliegen, werden sie als Schlüssel für die Sprachtabelle verwendet[/td]
[/tr]
[/table]
[size=14][b]ShowAlertMessageExt[/b]
[/size]
[table]
[tr]
[td]Syntax[/td]
[td]ShowAlertMessageExt ( [i]title, message, time, event[/i] )[/td]
[/tr]
[tr]
[td]Funktion[/td]
[td]Dialogfeld mit einer Nachricht und erweiterten Attributen[/td]
[/tr]
[tr]
[td]Eingabewerte[/td]
[td][i]title [/i]Titel des Dialogfelds
[i]message [/i]Inhalt
[i]time [/i]Zeit zum Anzeigen der Nachricht, 0.0 für unbestimmte Zeit
[i]event [/i]Ereignis wird bei Klicken auf die Nachricht ausgelöst[/td]
[/tr]
[tr]
[td]Ausgabe[/td]
[td]N/A[/td]
[/tr]
[tr]
[td]Hinweis[/td]
[td]Wenn [i]title [/i]oder [i]message [/i]im UUID-Format vorliegen, werden sie als Schlüssel für die Sprachtabelle verwendet[/td]
[/tr]
[/table]
Sie betrachten gerade eine ältere Version des Eintrags. Klicken Sie hier, um zur aktuellen Version zu gelangen.