System-Scriptvariablen und -Events: Unterschied zwischen den Versionen

Aus LOTUS Wiki DE
Wechseln zu: Navigation, Suche
imported>DrBlackError
Keine Bearbeitungszusammenfassung
 
K (1 Version importiert: Init)
 
(kein Unterschied)

Aktuelle Version vom 23. Oktober 2023, 23:03 Uhr


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 Single 0..1 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 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; 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} Schienenqualität unter der Achse: ( {b} = Index des Drehgestells, {a} = Index der Achse, jeweils 0-basiert) 0 = Gut 1 = Schlecht 2 = mit Herzstücken, gut 3 = mit Herzstücken, schlecht 4 = Flachrille 5 = Sehr gut (z.B. Hochgeschwindigkeitsstrecke) 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


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.