System-Scriptvariablen und -Events

  • Auflistung und Beschreibung von System-Scriptvariablen.

    Es gibt eine Reihe von System-Variablen. Das Script darf auf die Systemvariable schreibend und/oder lesend zugreifen, je nach Variable.


    Einige System-Variablen sind schon "von alleine" da und dürfen nirgendwo extra deklariert werden, aber es gibt auch andere System-Variablen, die in der "PUBLIC VARS"-Sektion im Script trotzdem deklariert werden müssen.


    Die Variablen, die noch deklariert werden müssen, sind in der letzten Spalte "Dekl." mit "muss" beschriftet, die, die bereits deklariert sind, mit "ist".

    1 Allgemein

    Variablenname Beschreibung Typ Einheit Schreibzugriff Dekl.
    Timegap
    Zeitdauer seit letztem Berechnungsschritt Single Sekunden
    ist
    NightTex
    Map-weite Variable zur Steuerung der Nachttexturen von Gebäuden u.Ä. Integer -
    ist
    EnvirBrightness Umgebungshelligkeit (am Fahrzeug, fällt auch am Tage ab, wenn das Fahrzeug unter Brücken oder in Tunneln fährt) Single 0..1 ist
    EnvirBrightnessSurface Umgebungshelligkeit (an der Erdoberfläche, unabhängig von der Position des Fahrzeuges) Single 0..1
    ist
    DistrictLight Zustand des verknüpften Beleuchtungsbezirkes. Ist kein Beleuchtungsbezirk verknüpft, dann wird immer 1 zurück gegeben. Single ist
    TimeOfDay Uhrzeit Single 0 = 0:00,
    0.5 = 12:00,
    1 = 24:00
    muss
    Date Datum in Tagen ab dem 30.12.1899, Achtung! Ohne Uhrzeit! Single 1 = ein Tag muss
    Hint
    Hinweis-Text. Setze diese Variable auf eine Sprachdatei-ID, damit der zugehörige Text im Hint-Fenster in LOTUS erscheint. Dies ist z.B. geeignet, wenn dem User bei einer Fehlbedienung ein Hinweis gegeben werden soll, warum etwas nicht geht.

    Konvention ist hierbei, dass die benutzerdefinierten Sprach-IDs folgendermaßen aufgebaut sind:
    "[Fahrzeugname].Hint.[Kurztext]"

    Beispiel: "GT6N.Hint.ReverserNotSet"

    Es muss dann eine eigene Sprach-Datei angelegt werden, bei der jene IDs in die links Spalte und die dazugehörigen darzustellenden Texte (der jeweiligen Sprache) rechts eingetragen werden. Auf diese Weise können - mit mehreren Sprachdateien - auch Hints in verschiedenen Sprachen realisiert werden.
    String - X muss
    Mouse_X & Mouse_Y Bewegung des Mauszeigers seit dem letzten Simulationsschritt Single Pixel muss
    RealisticElecSupply Zustand der Benutzer-Einstellung "Stromversorgung real" Boolean - muss
    InitReadyForMovement Zustand der Benutzer-Einstellung "Abgerüstet platzieren":
    0 = Kalt & Dunkel (z.B. Richtungswender auf 0, Stromabnehmer abgesenkt, Hauptschalter aus, Umformer aus
    1 = Aufgerüstet (z.B. Richtungswender auf I oder *, Stromabnehmer angehoben, Hauptschalter ein, Umformer ein)
    2 = Fahrbereit (z.B. Richtungswender auf V)
    Integer 0..2 muss
    InitPosInTrain Position des Wagens im Zug unmittelbar nach Platzieren des Zuges (0 = vorderstes Fahrzeug). Integer muss
    InitCarIsReversed Gibt die Ausrichtung des Wagens im Zugverband nach Platzieren des Zuges an. False = steht in Zug-Richtung, True = steht entgegen der Zug-Richtung. Boolean muss
    InitUserPlaced Wurde der Benutzer beim erstmaligen Platzieren in diesen Wagen gesetzt? Wird im Anschluss der Wagen verlassen oder gekuppelt usw., ändert sich diese Variable trotzdem nicht mehr. Integer 0 = nein
    1 = vorne
    -1 = hinten
    muss
    DeadMansSwitch Zustand der Benutzer-Einstellung "SiFa/Totmann simulieren" Boolean muss
    mirrortex_{i} Wenn Rückspiegel (o.Ä.) definiert werden, dann hinterlegt LOTUS die jeweiligen Textur-Indizes in den Variablen dieses Namens (i = Index des Rückspiegels, beginnend bei 0), sodass in den Materialeigenschaften darauf zurückgegriffen werden kann. Integer 0... muss


    2 Remote-Control (KI-/Multiplayer, Standzug)

    Die folgenden Variablen dienen der Kommunikation zwischen Multiplayer-, KI-Fahrzeugen und dem Userfahrzeug. Falls das Fahrzeug das User-Fahrzeug ist, dann ist "RC_Active" false und die Variablen können gesetzt werden, im Folgenden "Sende-Modus" genannt. Ist es kein User-Fahrzeug, d.h. ein Multiplayer-, ein KI- oder ein vom User abgestelltes Fahrzeug, dann ist "RC_Active" true und die Variablen können nur gelesen werden, das Fahrzeug befindet sich im sog. "Empfangs-Modus".


    Variablenname Beschreibung Typ Einheit Schreibzugriff Dekl.
    RC_Active Zug befindet sich im Empfangs-/Remote-Control-Modus. Dies bedeutet, dass es zur Zeit nicht vom User gesteuert wird, sondern dass es sich um die Darstellung des Fahrzeuges eines anderen Spielers (im Multiplayer) bzw. ein KI- oder ein abgestelltes Fahrzeug handelt. Ist die Variable false, dann ist es ein User-Fahrzeug und befindet sich im Sende-Modus. Boolean - muss
    RC_DirLeaver Hiermit kann der sendende Zug übertragen, welches Fahrzeug im Zugverband der "Master" ist (üblicherweise wenn der Richtungswender aus der Nullstellung hinausbewegt wird) und aus welchem Fahrerraum dies getan wird. Laut Konvention geht es hier nicht darum, welche Fahrtrichtung eingestellt wird:

    - Wenn der Richtungswender im vorderen Fahrerraum betätigt wird (oder bei Einrichtern auf dem "Hauptfahrpult"), dann wird der Wert immer auf 1 gesetzt, auch in der Stellung "R"
    - Wenn der Richtungswender im hinteren Fahrerraum betätigt wird (oder bei Einrichtern auf der Rückfahreinrichtung), dann wird der Wert immer auf -1 gesetzt, auch in der Stellung "V".

    Wird diese Variable im gesamten Zug nicht gesetzt, dann:
    - Wird für bestimmte folgende Variablen (RC_Belling, RC_Cockpitlight) die Position des Users im sendenden Zug verwendet
    - Erhalten alle empfangenden Fahrzeuge eine 0 als Variablenwert.

    Wird diese Variable in mehr als einem Fahrzeug ungleich 0 gesetzt, dann gilt der Wert des ersten Fahrzeug relativ zum Zugverband. Alle weiteren Werte werden ignoriert.
    Integer 1 = im vorderen Fahrerstand gesetzt
    0 = nicht gesetzt
    -1 = im hinteren Fahrerstand gesetzt

    (gesetzt = V, I oder R, aber NICHT 0)
    [falls Sende-Modus]
    muss
    RC_Throttle Dient der Übertragung der Antriebsleistung, absolut betrachtet, d.h. ohne Berücksichtigung der Richtung. Es wird über die einzelnen Werte der Fahrzeuge im sendenden Zug das Maximum ermittelt und für den Zug übertragen. Der Wert dient nicht der Antriebsphysik (das empfangende Fahrzeug wird ohnehin genauso bewegt wie das sendende Fahrzeug), sondern zur korrekten Simulation insbesondere des Sounds, aber auch von Animationen und Lichtern, die von der Leistung abhängig sind. Single 0..1 [falls Sende-Modus] muss
    RC_Brake Dient der Übertragung der Bremsleistung. Behandlung und Nutzen wie RC_Throttle, normiert auf 0..1. Single 0..1 [falls Sende-Modus] muss
    RC_IndR, RC_IndL Blinker rechts / links. Diese Variable zeigt an/übermittelt, ob der rechte und/oder linke Blinker aktiv ist. Wenn beide Variablen true sind, dann ist der Warnblinker aktiv.

    Das Besondere an diesen Variablen ist, dass die einzelnen Fahrzeuge die Variable stets "richtungssensitiv" erhalten bzw. senden. Beispiel: Fahren in einem Zug zwei Wagen "Rücken-an-Rücken" und soll dieser Zug seitens der KI in Fahrtrichtung rechts blinken, dann wird beim "vorwärts" eingereihtem Fahrzeug die Variable RC_IndR auf true gesetzt, beim "rückwärts" eingereihtem Fahrzeug die Variable RC_IndL.

    Im Sende-Modus reicht es, wenn nur ein Fahrzeug die jeweilige Variable auf true setzt, damit der Zug als blinkend interpretiert wird. Im Empfangs-Modus werden die Variablen sämtlicher Fahrzeuge gesetzt.
    Boolean - [falls Sende-Modus] muss
    RC_FrontLight_Front
    RC_FrontLight_Back
    Diese Variable wird nur für das erste und letzte Fahrzeug des Zuges übertragen und dort nur für das ungekuppelte Ende. Im Empfangsbetrieb verbleibt die Variable an gekuppelten Enden bei 0. Integer 0 = aus
    1 = Standlicht
    2 = Abblendlicht
    3 = Fernlicht
    [falls Sende-Modus] muss
    RC_OtherLights_Front
    RC_OtherLights_Back
    Hiermit können weitere Lichter am vorderen oder hinteren Ende übertragen werden, beispielsweise Rück- und Bremslichter, Nebelschlussleuchten o.Ä.

    Diese Variable wird nur für das erste und letzte Fahrzeug des Zuges übertragen und dort nur für das ungekuppelte Ende. Im Empfangsbetrieb verbleibt die Variable an gekuppelten Enden bei 0.
    Integer Bit-Flags:
    +1 = Rücklicht
    +2 = Bremslicht
    +4 = Rückfahrlicht
    +8 = Nebelscheinwerfer
    +16 = Nebelschluss
    +32 = frei
    +64 = frei
    +128 = frei
    [falls Sende-Modus] muss
    RC_Belling Zustand der Klingel. Im Sendebetrieb ist es unerheblich, welches Fahrzeug den Klingelzustand sendet. Im Empfangsbetrieb erhält nur das Fahrzeug, in welchem der Richtungswender gesetzt wurde (andernfalls wo sich der sendende User befindet), den Klingelvariablen-Zustand; alle anderen erhalten 0. Integer [falls Sende-Modus] muss
    RC_Sanding Zustand der Sandstreuer. Wenn mindestens ein Fahrzeug im Zug sandet, wird dieser Zustand auf den gesamten empfangenden Zug übertragen. Boolean [falls Sende-Modus] muss
    RC_DoorsOpen_Left, RC_DoorsOpen_Right Diese Variablen dienen dem übertragen der Türzustände. Die Zustände werden bitweise in je eine Integer-Zahl für die linken und rechten Türen kodiert; wie das geht, wird exemplarisch in diesem Artikel beschrieben: Bit-Flags.

    Es empfielt sich, als Zustand das "Ziel" der Türbewegung zu übertragen. Der Grund sei am Gegenbeispiel dargestellt: Würde man bspw. als Öffnungszustand die Formel "Türöffnung > 0.5" übertragen, dann würde der Schließvorgang bei den Multiplayer-Kollegen erst beginnen, wenn beim User die Türen schon halb geschlossen sind. Insbesondere beim Vorlauf mit Türschließwarnanlage würde es damit zu einer erheblichen Verzögerung kommen.

    ACHTUNG: Damit diese Übertragung funktioniert, muss zunächst die Anzahl der Türen in den "Objekteinstellungen" im ContentTool eingetragen werden! Diese Anzahl zählt pro Seite, wobei die jeweils größere Zahl von Türen zu wählen ist. Also: Wert = Maximum( Türanzahl linke Seite, Türanzahl rechte Seite ).
    Integer Bit-Flags [falls Sende-Modus] muss
    RC_CockpitLight Das User-Fahrzeug (bzw. Fahrzeug mit gesetztem Richtungswender) im sendenden Zugverband kann hierüber den Zustand seiner Fahrerraumbeleuchtung übertragen. Boolean [falls Sende-Modus] muss
    RC_CabinLight
    Die Variable wird im Bit-Flags-Verfahren übertragen, damit mehrere Cabinlight-Kreise realisierbar sind (z.B. Ober- und Unterdeck). Beim Senden gilt pro Lichtkreis, dass ein Wagen ausreicht, damit das Licht im gesamten Zug an ist (Bitweises OR). Max. 8 Bit. Integer Bit-Flags [falls Sende-Modus] muss
    RC_PantographApplied Zustand der Pantographen des Wagens. Diese musst Du lediglich durchzählen und setzt dann das jeweilige Bit (siehe Lexikonartikel Bit-Flags) für den jeweiligen Stromabnehmer (sendendes Fahrzeug) bzw. liest es aus (empfangendes Fahrzeug). Diese Information wird je Wagen individuell übertragen (wie bei den Türen). Integer Bit-Flags [falls Sende-Modus] muss
    RC_Wiper Modus des Scheibenwischers. Gelesen und geschrieben wird immer nur das Fahrzeug, in dem der Richtungswender gesetzt wurde (oder andernfalls sich der User befindet).
    Integer 0: Aus
    1: Intervall
    2: Normal
    3: Schnell
    4: Waschen
    ab 5: User-definiert
    [falls Sende-Modus] muss
    RC_PIS_Line Dient dem Übertragen der geschilderten Liniennummer (0 bis 65535), des Sonderzeichen-Codes (0 bis 4095) und bietet noch Platz für einen frei nutzbaren Wert (0 bis 15, s. unterh. Tab.)

    Hierbei erfolgt eine spezielle Kodierung, die beim Senden beide Werte zusammenfasst und beim Empfangen wieder trennt:

    Senden:
    RC_PIS_Line :=
    ( {Sonderzeichen} and $FFF) +
    ( {Linie} and $FFFF) shl 12 +
    ( {freier Wert} and $F) shl 28;

    Empfangen:
    {Sonderzeichen} := RC_PIS_Line and $FFF;
    {Linie} := (RC_PIS_Line shr 12) and $FFFF;
    {freier Wert} := RC_PIS_Line shr 28;

    Achtung: In Fahrplänen ist das Sonderzeichen nicht hinterlegt; das führt dazu, dass in KI-Fahrzeugen der Wert {Sonderzeichen} nicht in dieser Variable enthalten ist (= 0). In diesem Fall muss das Sonderzeichen mittels der Funktion PIS_GetRouteSpecialCharCode und über die Routeninformation geholt werden.
    Integer
    [falls Sende-Modus] muss
    RC_PIS_Terminus Dient dem Übertragen des internen Index des geschilderten Zieles (entspricht "TERMINUS_LISTINDEX" der Standard-Module der Basecontent-Fahrzeuge, -1 falls keine gültige Route) und bietet noch Platz für einen frei nutzbaren Wert (0 bis 65535, s. unterh. Tab.)

    Sofern kein freier Wert genutzt werden soll, muss lediglich der Ziel-Index 1:1 übertragen werden. Andernfalls erfolgt eine spezielle Kodierung, die beim Senden beide Werte zusammenfasst und beim Empfangen wieder trennt:

    Senden:
    RC_PIS_Terminus :=
    ( {Zielindex} and $FFFF) +
    ( {freier Wert} and $FFFF) shl 16;

    Empfangen:
    {Zielindex} := RC_PIS_Terminus - (RC_PIS_Terminus and $FFFF0000);
    {freier Wert} := RC_PIS_Terminus shr 16;

    Achtung: Im Falle von KI-Fahrzeugen ist es meistens so, dass als Zielindex die Zahl 65535 (bzw. $FFFF) übertragen wird! In diesem Fall möchte die KI, dass das Ziel per FIS-Datei aus Linie und Route entnommen werden soll! Da das Ziel ggf. abhängig von der aktuellen Haltestelle ist, soll hierbei auch die RC-Variable RC_PIS_StopSeq verwendet werden, auch wenn diese momentan KI-seitig noch nicht geschrieben wird.
    Integer [falls Sende-Modus] muss
    RC_PIS_Route Dient dem Übertragen des internen Index der ausgewählten Route (entspricht "ROUTE_LISTINDEX" der Standard-Module der Basecontent-Fahrzeuge, -1 falls keine gültige Route) und bietet noch Platz für einen frei nutzbaren Wert (0 bis 65535, s. unterh. Tab.)

    Sofern kein freier Wert genutzt werden soll, muss lediglich der Routen-Index 1:1 übertragen werden. Andernfalls erfolgt eine spezielle Kodierung, die beim Senden beide Werte zusammenfasst und beim Empfangen wieder trennt:

    Senden:
    RC_PIS_Route :=
    ( {Routenindex} and $FFFF) +
    ( {freier Wert} and $FFFF) shl 16;

    Empfangen:
    {Routenindex} := RC_PIS_Route - (RC_PIS_Route and $FFFF0000);
    {freier Wert} := RC_PIS_Route shr 16;
    Integer [falls Sende-Modus] muss
    RC_PIS_StopSeq Dient dem Übertragen des Indexes der aktuellen Haltestelle innerhalb der ausgewählten Route (entspricht "STOP_SEQ" der Standard-Module der Basecontent-Fahrzeuge, -1 falls keine gültige Route oder Haltestelle) und bietet noch Platz für einen frei nutzbaren Wert (0 bis 65535, s. unterh. Tab.)

    Sofern kein freier Wert genutzt werden soll, muss lediglich der Haltestellenindex 1:1 übertragen werden. Andernfalls erfolgt eine spezielle Kodierung, die beim Senden beide Werte zusammenfasst und beim Empfangen wieder trennt:

    Senden:
    RC_PIS_StopSeq:=
    ( {Haltestellenindex} and $FFFF) +
    ( {freier Wert} and $FFFF) shl 16;

    Empfangen:
    {Haltestellenindex} := RC_PIS_StopSeq- (RC_PIS_StopSeqand $FFFF0000);
    {freier Wert} := RC_PIS_StopSeq shr 16;
    Integer [falls Sende-Modus] muss


    2.1 Zu den RC_PIS-Variablen

    Wie alle anderen RC-Variablen haben auch diese eine Doppelrolle, die hier besonders zum Tragen kommt: Einerseits dienen sie der Übertragung des FIS-Zustandes zwischen den Multiplayer-Fahrzeugen, d.h. das User-Fahrzeug sendet hierüber seinen FIS-Zustand an den Server und dieser verteilt diese Information auf die Fahrzeuge der Mitspieler, andererseits der Kommunikation zwischen KI-Steuerung, dem visuellen Fahrzeug und – je nach Variable – auch der Fahrgäste. Aus diesem Grund gibt es die oben näher beschriebene Aufteilung in einen fest vorgegebenen Wert und einen freien Wert. Der freie Wert dient der Übertragung von optionalen Zustandswerten, die über den Rahmen der im festen Wert hinausgehen. Nichtsdestotrotz ist aber nicht zu vergessen, dass die KI nicht diese optionalen Zustandswerte liefert! D.h. ein KI-Fahrzeug erhält nur die festen Werte, die freien Werte sind stets 0. Dennoch muss auch in diesem Fall sinnvoll geschildert werden! Umgekehrt erwarten die Fahrgäste valide Werte unter den festen Werten! Sie können die optionalen Werte nicht verarbeiten. Momentan – und voraussichtlich auch in Zukunft – beschränken sich die Fahrgäste aber auf die Variable RC_PIS_Terminus.


    3 Fahrzeuge

    3.1 Allgemein

    Variablenname Beschreibung Typ Einheit Schreibzugriff Dekl.
    veh_number Fahrzeugnummer, z.B. "1749" String - [X] muss
    veh_registration Kennzeichen, z.B. "B-V 1749" String -
    [X]
    muss
    v_ground Geschwindigkeit in Richtung Fahrzeug-Längsachse Single Meter pro Sekunde muss
    a_ground Beschleunigung in Richtung Fahrzeug-Längsachse Single Meter pro Quadratsekunde muss
    acc_x, acc_y, acc_z Beschleunigung des Schwerpunktes im lokalen Koordinatensystem Single Meter pro Quadratsekunde muss
    panto_voltage_{a} Oberleitungsspannung am Stromabnehmer mit dem Index {a} verfügbar.
    Trolley: Stange hängt an einem Fahrdraht und dieser steht unter Spannung.
    Pantograph: Der niedrigste Fahrdraht (dessen Höhe übergeben wird) steht unter Spannung. Ob der Stromabnehmer selbst angelegt ist, muss vom Scripter geprüft werden.
    boolean - muss
    panto_{a} Höhe des niedrigsten Fahrdrahtes im Bereich des (Scheren-/Einholm-) Stromabnehmers mit dem Index {a}. Die Angabe erfolgt im Koordinatensystem des Fahrzeugobjektes zuzüglich des Bewegungszustands der assoziierten Animation. Single m muss
    trolley_angle_{a}_hori, trolley_angle_{a}_vert
    Auslenkung der Trolley-Stange mit dem Index {a} horiziontal gegenüber der Mittelposition (_hori) bzw. vertikal gegenüber der Waagerechten (_vert) des Fahrzeugobjektes zuzüglich des Bewegungszustands der assoziierten Animation.

    Schreibzugriff ist solange möglich, bis der Trolley eingegleist ist. Auf diese Weise können Trolley-Entgleisungs-Schutzmechanismen simuliert werden.
    Single Grad (°) [X] muss
    trolley_free_{a} Trolley-Rad ist weder in der Oberleitung eingegleist noch wird es vom User gezogen. {a} ist der Index des Stromabnehmers. Boolean - muss
    trolley_online_{a} Trolley-Rad ist an der Oberleitung. {a} ist der Index des Stromabnehmers. Boolean - muss
    TextureRaindropSet_{x}
    Texturindex des Regentropfenfensters mit Index {x} (0-basiert). Integer -
    ist
    coupled_{a} Gekuppelt: An der vorderen (a = 0) bzw. hinteren (a = 1) Kupplung ist ein weiteres Fahrzeug angekuppelt (und die Kupplung ist verriegelt) Boolean - ist
    couplingState_{a} Kupplungszustand:
    0: Kupplung deaktiviert, beim Heranfahren passiert nichts - "nur Puffer"
    1: Kupplung bereit, beim Heranfahren wird angekuppelt - Automatikkupplung
    2: Angekuppelt
    Vorne: a = 0, hinten: a = 1.
    Integer - [X] ist
    couplingOffsetY_{a} Kupplung temporär in Y-Richtung verschieben, z.B. falls die Kupplung wie beim GT eingeklappt werden kann. Vorne: a = 0, hinten: a = 1. Single - [X] muss

    3.2 Bahn

    Variablenname Beschreibung Typ Einheit Schreibzugriff Dekl.
    M_Axle_N_{b}_{a}
    Traktionskraft des Rades am Kontaktpunkt zur Schiene. Hierzu zählen auch die Kräfte der E-Bremse. {b} = Index des Drehgestells, {a} = Index der Achse, jeweils 0-basiert. Single Newton X muss
    MBrake_Axle_N_{b}_{a}
    Bremskraft des Rades an der Kontaktfläche zum Gleis. Nur positive Werte; diese wirken stets entgegen der Fahrtrichtung und haben die Fähigkeit, den Zug auch auf einem Gefälle festzuhalten. {b} = Index des Drehgestells, {a} = Index der Achse, jeweils 0-basiert Single Newton X muss
    sanding_{b}_{a} Sanden. Wenn diese Variable auf true gesetzt wird, dann wird diese Achse besandet. Boolean - X muss
    F_RailBrake_Bogie_N_{b}
    Anpresskraft einer Schienenbremse am Drehgestell Nr. {b} (0-basiert). Die Wirkung hängt vom aktuellen Reibungskoeffizienten der Schiene ab. Die Wirkung ist immer der Fahrtrichtung entgegengesetzt und hat die Fähigkeit, den Zug auch auf einem Gefälle festzuhalten. Single Newton X muss
    v_Axle_mps_{b}_{a}
    Geschwindigkeit des Rades an seinem Kontakt mit der Schiene. Wenn das Rad weder blockiert noch durchdreht ist diese Geschwindigkeit die Fahrzeuggeschwindigkeit. {b} = Index des Drehgestells, {a} = Index der Achse, jeweils 0-basiert Single Meter pro Sekunde
    ist
    alpha_Axle_deg_{b}_{a}
    Drehwinkel der Achse. {b} = Index des Drehgestells, {a} = Index der Achse, jeweils 0-basiert Single Grad (°)
    ist
    spring_Axle_m_{b}_{a}
    Aktuelle Auslenkung der Achsfederung (Primärfederung) aus der Nullstellung. Die Nullstellung ist jene Stellung, in der sich die Feder befindet, wenn der Wagen ohne Zuladung ruhig auf einem horizontalen Gleis steht. {b} = Index des Drehgestells, {a} = Index der Achse, jeweils 0-basiert Single Meter
    ist
    loadforce_Axle_N_{b}_{a}
    Aktuelle Andruckkraft der Achse gegenüber der Schiene. {b} = Index des Drehgestells, {a} = Index der Achse, jeweils 0-basiert Single Newton
    muss
    invradius_abs_max Betrag der maximalen Krümmung des unter den Achsen dieses Fahrzeug liegenden Gleisabschnitts. Die Krümmung ist der Kehrwert des Radiusses: 200 m Radius bedeuten eine Krümmung von 0,005, 100 m dagegen 0.01. Single 1 / m
    muss
    invradius_{b}_{a} Aktuelle Krümmung des Gleises unter der Achse. {b} = Index des Drehgestells, {a} = Index der Achse, jeweils 0-basiert Single 1 / m
    muss
    railquality_{b}_{a} Schienenlage und -qualität unter der Achse: ( {b} = Index des Drehgestells, {a} = Index der Achse, jeweils 0-basiert)
    0 = Gleichmäßiger Verlauf
    1 = Ungleichmäßiger Verlauf
    2 = mit Herzstücken, gleichmäßig
    3 = mit Herzstücken, ungleichmäßig
    4 = Flachrille
    5 = Sehr gleichmäßiger Verlauf (z.B. Hochgeschwindigkeitsstrecke)
    6 = Verdreckt mit gleichmäßigem Verlauf
    7 = Verdreckt mit ungleichmäßigem Verlauf
    Integer - muss
    surfacetype_{b}_{a} Oberfläche unterhalb des Gleises: ( {b} = Index des Drehgestells, {a} = Index der Achse, jeweils 0-basiert)
    0 = Normal (Schotter)
    1 = Straße
    2 = Rasen
    Integer - muss
    V_ThirdRailCollector_{b}_{L/R} Es wird geprüft, ob sich neben dem Drehgestellt mit dem Index {b} auf der Seite L und/oder R eine Stromschiene befindet und welche Spannung dort anliegt. Single -1.0: neben dem Drehgestell befindet sich keine Stromschiene
    -0.5: neben dem Drehgestellt befindet sich teilweise eine Stromschiene
    0: Stromschiene vorhanden, aber spannungslos
    1: Stromschiene vorhanden und Normspannung verfügbar
    muss


    Hinweis: Beim Ersetzen der Indizes in den Variablennamen fallen die geschwungenen Klammern weg! Beispiel: loadforce_Axle_N_{b}_{a} am ersten Drehgestell, zweite Achse, lautet: loadforce_Axle_N_0_1.

    3.3 Straßenfahrzeuge

    Variablenname Beschreibung Typ Einheit Schreibzugriff Dekl.
    Steering Lenkeinschlag, normiert auf den maximalen Lenkeinschlag Single -1 (voll L) ... +1 (voll R) X muss
    M_Axle_N_{a} Traktionskraft der Räder einer Achse am Kontaktpunkt zur Straße. Hierzu zählen auch die Kräfte der Motor- und/oder Getriebe-Bremse. {a} = Index der Achse, 0-basiert. Single Newton X muss
    MBrake_Wheel_N_{a}_{s} Bremskraft eines Räder einer Achse an der Kontaktfläche zur Straße. Nur positive Werte; diese wirken stets entgegen der Fahrtrichtung und haben die Fähigkeit, das Fahrzeug auch auf einem Gefälle festzuhalten. {a} = Index der Achse, 0-basiert, {s} = Seite, 0 = L, 1 = R Single Newton X muss
    v_Wheel_mps_{a}_{s} Geschwindigkeit des Rades an seinem Kontakt mit der Straße. Wenn das Rad weder blockiert, noch durchdreht, ist diese Geschwindigkeit die Fahrzeuggeschwindigkeit. {a} = Index der Achse, 0-basiert, {s} = Seite, 0 = L, 1 = R Single Meter pro Sekunde ist
    alpha_Wheel_deg_{a}_{s} Drehwinkel des Rades. {a} = Index der Achse, 0-basiert, {s} = Seite, 0 = L, 1 = R Single Grad (°) ist
    spring_Wheel_m_{a}_{s} Aktuelle Auslenkung der Radfederung aus der Nullstellung. Die Nullstellung ist jene Stellung, in der sich die Feder befindet, wenn der Wagen vollständig angehoben ist, sodass das Rad den Boden nicht mehr berührt. {a} = Index der Achse, 0-basiert, {s} = Seite, 0 = L, 1 = R Single Meter ist
    steering_Wheel_m_{a}_{s} Drehwinkel des Rades aufgrund des Lenkeinschlages um die Hochachse gegenüber der Längsrichtung. {a} = Index der Achse, 0-basiert, {s} = Seite, 0 = L, 1 = R Single Grad (°), >0 = R ist


    Hinweis: Beim Ersetzen der Indizes in den Variablennamen fallen die geschwungenen Klammern weg! Beispiel: MBrake_Wheel_N_{b}_{a} auf der ersten Achse, rechte Seite, lautet: MBrake_Wheel_N_0_1.

    4 Szenerieobjekte

    Variablenname Beschreibung Typ Einheit Schreibzugriff Dekl.
    trafficlight_phase Aktuelle Phase der verknüpften Ampelanlage und Richtung:
    0..2 = drei verschiedene Rotphasen
    3..5 = drei verschiedene Gelbphasen für den Übergang Rot => Grün
    6..8 = drei verschiedene Grünphasen
    9..11 = drei verschiedene Gelbphasen für den Übergang Grün => Rot
    12 = Ampel ausgeschaltet für die primäre (Vorfahrt) Richtung
    13 = Ampel ausgeschaltet für die sekundäre (Vorfahrt gewähren) Richtung
    14..16 = drei verschiedene Phasen für sonstige Zwecke
    Integer - muss


    5 System-Events

    Das den System-Events zugrundeliegende System ist folgendermaßen zu verstehen: Es gibt gewisse LOTUS-interne Ereignisse, die aus dem Fahrzeug heraus ausgelöst werden sollen. Hierzu soll nicht nur ggf. eine Tastenkombination aufgerufen werden, sondern es sollen auch Maus-Klickspots im Fahrzeug definiert werden können. Momentan werden System-Events nicht aufgelistet, wenn man einem Fahrzeug-Mesh ein Maus-Event zuweisen möchte. Stattdessen müssen System-Events manuell eingetippt werden.


    Event-Name Funktion
    TrolleyRerail_{a}
    Dient dem (Wieder-) Eingleisen des Stangen-Stromabnehmers in die Oberleitung. Hierzu wird der so markierte Klickspot angeklickt, die Maus gedrückt gehalten und bewegt, um den Stromabnehmer zu drehen und zu haben bzw. senken. An der Wunschposition wird die Maustaste losgelassen.

    6 System-Send-Events

    Das Script kann in LOTUS bestimmte Ereignisse auslösen. Hierfür gibt es procedure SendEvent(self: integer; id: string; value: integer). Als erster Parameter muss stets die (automatisch von LOTUS deklarierten) Public-Var "Self" gesetzt werden. Im Folgenden sind die möglichen IDs aufgelistet:


    Event-ID Funktion
    TrolleyDerail Lässt den Trolley-Stromabnehmer "absichtlich" entgleisen. Mit "value" wird der Index des zu entgleisenden Stromabnehmers angegeben.