0 Grundlagen zu Lua in EEP 16

!!! Please ensure, that your contribution or question is placed into the relevant section !!!
Questions about rolling stock, for example, do not belong in "Questions about the Forum". Following is perhaps the right area where your question will be better looked after:
General questions to EEP , Splines, rolling stock, Structures in EEP, landscape elements, Signalling system and controlling, designers, Europe-wide EEP meetings , Gossip
Your cooperation to keep the forum clear is appreciated.
In the case of pictures that are attached to the article, the source must also be stated. This also applies to your own pictures, which were taken by you. Pictures without source information will be deleted!
  • 1 Die Programmiersprache Lua


    Lua (portugiesisch für Mond) ist eine imperative und erweiterbare Skriptsprache, also eine Programmiersprache, die während der Ausführung des Programms in Computerbefehle übersetzt wird.


    Lua wurde 1993 von Roberto Ierusalimschy, Luiz Henrique de Figueiredo und Waldemar Celes in der Computer Graphics Technology Grou der Päpstlichen Katholischen Universität von Rio de Janeiro in Brasilien entwickelt. Lua ist freie Software und wurde bis zur Version 4 unter einer eigenen BSD-Lizenz veröffentlicht, ab Version 5 unter der MIT-Lizenz.


    Lua kann sowohl zum Verfassen eigenständiger Programme verwendet werden als auch als eingebettete Sprache dienen. Die Vorteile von Lua sind die geringe Größe von 120 kB, die Erweiterbarkeit und die hohe Geschwindigkeit, verglichen mit anderen Skriptsprachen.


    Um einzelne Komponenten eines Computerspiels wie z.B. Konfigurationsdateien oder die künstliche Intelligenz von computergesteuerten Charakteren oder Gegnern von der Spiel-Engine zu trennen, kommt Lua bei der Entwicklung von Computerspielen oft zum Einsatz. Dies macht die meist teuer entwickelte Spiel-Engine flexibler und ermöglicht eine mit geringerem Aufwand verbundene Wiederverwendbarkeit, weshalb Lua im Bereich proprietärer Spiele verwendet wird. (Quelle: Wikipedia)


    Lua wurde in EEP mit dem Plug-in 2 zu "Eisenbahn-X" (EEP10.2) eingeführt.



    Logo der Skriptsprache Lua: Autor Alexandre Nakonechnyj (Grafik-Design) und Lua-Team (PostScript-Code)

    Fried-liche Grüße:aq_1:


    Ab einem gewissen Alter kann man sich so ziemlich alles erlauben. Niemand schimpft einen mehr aus, mit Ausnahme der Ärzte und der eigenen Kinder.

  • 2 Lua-Sprachreferenz


    Lua ist eine lebende Programmiersprache, d.h. sie wird laufend erweitert. Zu jeder Version wird ein Referenzhandbuch veröffentlicht, das die Syntax der Sprache beschreibt.


    In EEP 16 ist die Lua-Version 5.3 enthalten. Refenzhandbücher sind für diese Version nur in Englisch und Russisch verfügbar. Für die Lua-Version 5.2 gibt es neben einem englischen Referenzhandbuch noch welche in Polnisch und Portugiesisch. Ein Referenzhandbuch in deutscher Sprache ist bislang "nur" für die Lua-Version 5.1 unter


    https://www.lua.org/manual/5.1/de/


    verfügbar. Der Umfang dieses Referenzhandbuch dürfte aber - vielleicht mit Ausnahme für einige wenige Lua-Experten - durchaus mehr als ausreichend sein, um Lua-Skripte für EEP zu schreiben.


    Diese Handbücher sind sehr umfangreich. Thomas Lauer hat auf seiner Webseite eine Kurzreferenz veröffentlicht - zwar auch nur in Englisch -


    http://thomaslauer.com/download/luarefv51.pdf


    jedoch stellt er Links zu deutschen Online-Google-Übersetzungen in zweispaltiger und einspaltiger Form zur Verfügung.


    Für Lua-Anfänger sind sicher deutschsprachige Tutorials mit Beispielen erklärender, wie zum Beispiel:

    Probieren geht über Studieren. Die schnellste und einfachste Art Lua-Code auszuprobieren, geht über die Testseite der Lua-Entwickler:


    http://www.lua.org/demo.html


    Code eingeben, auf "run" klicken und schon erscheint das Ergebnis oder eine Fehlerbeschreibung.


    Neben dem in Lua enthaltenen Sprachumfang stehen in EEP zusätzlich noch eine Anzahl spezifischer Variablen und Funktionen zur Verfügung, die eine Verbindung zu EEP-Anlagen herstellen und diese beeinflussen können. Sie beginnen alle mit EEP (siehe hier im Lua-Handbuch bzw. im Dokument EEP-spezifische Lua-Variablen und Funktionen.pdf).

    Fried-liche Grüße:aq_1:


    Ab einem gewissen Alter kann man sich so ziemlich alles erlauben. Niemand schimpft einen mehr aus, mit Ausnahme der Ärzte und der eigenen Kinder.

  • 3 Lua-Einbindung in EEP


    3.1 Der (interne) Lua-Skript-Editor


    Zur Eingabe von Lua-Code enthält EEP einen Skript-Editor (Bild 3.1). Diesen Editor öffnet man mit einem Klick mit der linken Maustaste auf das in Bild 3.2 gekennzeichnete Symbol in der Menüleiste.



    Der in EEP installierte Lua Skript-Editor ist ein sehr einfacher Editor. Er bietet u. a. keine farbliche Lua-Unterstützung, der Tabulator ist fest auf 4 Zeichen eingestellt und er bietet keine Erweiterungsmöglichkeiten z. B. für Vorschläge zur Lua-Syntax und spezifischen EEP-Funktionen.


    Wichtig: Ein erstelltes Skript muss immer an EEP übertragen werden.


    Nachdem ein Skript erstellt oder Änderungen daran vorgenommen wurden, muss stets die Schaltfläche "Skript neu laden" (Bild 3.3 und Bild 3.1 unten rechts) angeklickt werden! Ansonsten geht das Skript oder die daran vorgenommenen Änderungen verloren, wenn der Skript-Editor geschlossen wird.



    Wurde der Skript-Editor zur Bearbeitung aus dem 2D-Fenster aufgerufen, startet das neu geladene Lua-Skript immer erst nach der Umschaltung ins 3D-Fenster. Wurde der Skript-Editor aus dem 3D-Editor zur Bearbeitung aufgerufen, startet das Script direkt nach dem Anklicken der "Skript neu laden"-Schaltfläche.


    Ein erstelltes Skript wird automatisch gemeinsam mit der Anlage gespeichert und geladen.


    Eine Speicherung des Skripts unabhängig von der Anlage - zum Beispiel als Backup -, erfolgt über die Schalfläche "Lua Skript speichern" (rechts im Bild 3.4). Umgekehrt kann man ein extern gespeichertes Skript über die Schaltfläche "Lua Skript laden" (links im Bild 3.4) in den Skript-Editor holen. Aber Achtung, auch hier muss das neu geladene Skript mit der Schaltfläche "Skript neu laden" (Bild 3.3) nach EEP übertragen werden.

    Fried-liche Grüße:aq_1:


    Ab einem gewissen Alter kann man sich so ziemlich alles erlauben. Niemand schimpft einen mehr aus, mit Ausnahme der Ärzte und der eigenen Kinder.

  • 3.2 Nutzung eines externen Editors


    Bei der Nutzung eines externen Editors zur Erstellung von Lua-Code für eine EEP-Anlage muss man unbedingt darauf achten, dass als Kodierung ANSI (und nicht UTF-8) eingestellt ist.


    Bis einschließlich EEP 16 kann man bei geschlossenem EEP nur den Data-Slot-Teil am Ende der MeineAnlage.lua bearbeiten, der im internen Lua-Skript-Editor nicht sichtbar ist. Wird auch der Code geändert, ignoriert EEP ihn vollständig und zeigt stattdessen den Standard-Eröffnungscode an. Dies kann man umgehen, indem man den Code im externen Editor nach der Bearbeitung in die Zwischenablage kopiert und ihn daraus dann in den internen EEP-Lua-Editor einfügt.

    Fried-liche Grüße:aq_1:


    Ab einem gewissen Alter kann man sich so ziemlich alles erlauben. Niemand schimpft einen mehr aus, mit Ausnahme der Ärzte und der eigenen Kinder.

  • 3.3 Ausgabe von Meldungen im EEP-Ereignisfenster

    Lua-Fehlermeldungen oder mit der Lua-Funktion print() im Skript erstellte eigene Meldungen werden im EEP Ereignis-Fenster ausgegeben (Bild 3.6).


    Damit das Ereignisfenster auf dem Bildschirm dargestellt wird, muss es in den Programmeigenschaften (erreichbar über den Menüpunkt "Datei") im Bereich "Optionale Funktionsweise" aktiviert werden (siehe Bild 3.7).


    Neben den Lua-Fehlermeldungen und eigenen Meldungen können auch Statusmeldungen von Signal-, Weichen-, Fahrzeug- und Kontaktpunktereignissen im Ereignisfenster angezeigt werden, wenn dies entsprechend im Skript-Editor aktiviert wird (siehe Bild 3.1 links unten und Bild 3.8).


    Fried-liche Grüße:aq_1:


    Ab einem gewissen Alter kann man sich so ziemlich alles erlauben. Niemand schimpft einen mehr aus, mit Ausnahme der Ärzte und der eigenen Kinder.

  • 4 Lua-Wizard


    Der in EEP enthaltene Lua-Wizard liefert die Möglichkeit Lua-Skripte bzw. EEP-spezifische Funktionen auf einfache Art zu erstellen. Den Wizard öffnet man über das Menü Extras -> Wizard. Nach dem Start legt er sich über das Menü und die Werkzeugleiste von EEP, ist aber frei beweglich. Der Wizard besteht zunächst neben einem Kurzmenü nur aus einer Auswahlleiste für die zu erstellenden diversen Lua-Aufgaben (Bild 4.1). Die nicht nummerierte Schaltfläche am Ende der Leiste schließt den Wizard. Nach Betätigen einer der mit 1 - 6 nummerierten Schaltflächen erscheint grundsätzlich zuerst ein Fenster mit der Frage, ob man die Anlage vor dem Aufruf des Wizards gespeichert hat. Hierzu wird dringend geraten. Erst nach Bejahung der Frage erscheinen nacheinander weitere Fenster, die einen durch den Wizard führen.


    4.1 Erstellung eines Lua-Skripts für einen EEP-Fahrplan


    Durch einen Klick auf die mit 1 im Bild 4.1 gekennzeichnete Schaltfläche erscheint das Hauptfenster für die Fahrplanerstellung (Bild 4.2).


    Durch Anklicken der Schaltfläche "Hinzufügen" erscheint ein Detailfenster zur Eingabe der entsprechenden Daten (Bild 4.3). Dort klickt man nach der Dateneingabe auf die Schaltfläche "Angaben übernehmen.


    Um eine Datensatz zu ändern, markiert man ihn zunächst durch Anklicken im Hauptfenster (Bild 4.2) und klickt dann auf die Schaltfläche "Ändern". Es erscheint hierfür wieder das Detailfenster (Bild 4.3).


    Um einen Datensatz zu löschen, verfährt man ebenso: Datensatz markieren und Schaltfläche "Löschen" anklicken.


    Sind alle Datensätze eingegeben, klickt man auf die Schaltfläche "Skript erstellen". Es erscheint ein neues Fenster (Bild 4.4) mit dem fertigen Skript inclusive des Lua-Codes, der bereits vorher in der Anlage gespeichert war. Dies kopiert man in die Zwischenablage mit einem Klick auf die gleichnamige Schaltfläche.


    Nachdem sich das Skript-Fenster geschlossen hat, wird man aufgefordert im Lua-Skript-Editor den vorhandenen Text durch den soeben kopierten zu ersetzen und das Skript neu zu laden.

    Hierzu öffnet man den Lua-Script-Editor (siehe Kapitel 3), klickt einmal in den vorhandenen Text und markiert ihn durch gleichzeitiges Drücken der Tasten Strg + A. Danach ersetzt man den markierten Text durch das in der Zwischenablage hinterlegte neue Lua-Skript durch gleichzeitiges Drücken entweder der Tasten Strg + V oder der Tasten Shift + Einfg (gleichwertige Möglichkeiten). Zum Schluss überträgt man das Skript mit der Schaltfläche "Skript neu laden" (Bild 3.3) an EEP.


    Um nach einem späteren erneuten Aufruf der Anlage gegebenenfalls den EEP-Fahrplan zu ändern, ruft man einfach erneut den Lua-Wizard wieder auf.


    Hinweis: Einen Fahrplan, der auch Züge und Routen berücksichtigt und kein Lua-Skript benötigt, kann im Menü "Routen" unter der Option "Fahrplan" erstellt werden (siehe hierzu Kapitel 6.3.2 im EEP-Handbuch).


    4.2 Erstellung eines Lua-Skripts für einen beschrankten Bahnübergang


    Durch einen Klick auf die mit 2 im Bild 4.1 gekennzeichnete Schaltfläche wird man nach der Speicherabfrage gebeten, in den 2D-Modus "Signalsystem" zu wechseln. Nach der Bestätigung mit OK erscheint das Eingabefenster zum Bahnübergang (Bild 4.5). (Achtung: Es erfolgt keine Plausibilitätsprüfung, jedoch ist der nächste Schritt nur im 2D-Modus "Signalsystem" möglich.)


    Folgen Sie den Angaben im Hinweisfenster und klicken Sie die dem Bahnübergang zugehörigen Schranken nacheinander an. Der Wizard ermittelt selbständig die Signal-ID der Schranken und trägt sie in das obere Fenster ein.


    Sind alle Schranken eingegeben schließt man das Fenster über die Schaltfläche "Nächster Schritt". Es öffnet sich das Fenster für das fertige Skript (wie Bild 4.4 nur mit dem Skript für den Bahnübergang). Auch hier enthält das Skript den Code, der bereits vorher in der Anlage gespeichert war. Über die gleichnamige Schaltfläche kopiert man alles in die Zwischenablage.


    Danach wird man aufgefordert im Lua-Skript-Editor den vorhandenen Text durch den soeben kopierten zu ersetzen und das Skript neu zu laden (Vorgehensweise siehe oben "Erstellung eines Lua-Skripts für einen EEP-Fahrplan".)


    Lua-mäßig ist der Bahnübergang damit abgeschlossen. Damit sich die Schranken aber schließen und wieder öffnen, müssen einige Kontaktpunkte gesetzt werden.


    Zunächst setzt man einen Zug-Kontaktpunkt (KP) vor den Bahnübergang in einer Entfernung, dass die Schranken geschlossen sind, bevor sie vom schnellsten Zug auf der Anlage erreicht werden. Im KP setzt man die Häkchen zur Fahrtrichtung (rote Markierung in Bild 4.6) so, dass das Dreieck des KPs in Richtung des Bahnübergangs zeigt. Unter Lua-Funktion (gelbe Markierung) trägt man den Funktionsnamen zum Schließen der Schranken aus dem Lua-Skript BUE_1_SCHLIESSEN ohne die runden Klammern ein.


    Den nächsten Zug-Kontaktpunkt setzt man auf demselben Gleisstrang direkt hinter dem Bahnübergang. Hier setzt man im KP die Häkchen zur Fahrtrichtung so, dass das Dreieck des KPs von dem Bahnübergang weg zeigt. Der KP muss hier vom Zugschluss durch das entsprechend gesetzte Häkchen (grüne Markierung) ausgelöst werden. Unter Lua-Funktion trägt man den Funktionsnamen zum Öffnen der Schranken aus dem Lua-Skript BUE_1_OEFFNEN ohne die runden Klammern ein.


    Für jeden weiteren Gleisstrang zwischen den Schranken setzt man in gleicher Weise KPs.


    Wird ein Gleisstrang von beiden Richtungen befahren, so sind Schließen-Kps wie oben beschrieben auf beiden Seiten des Bahnübergangs zu erstellen. Zum Öffnen genügt ein KP und zwar genau in der Mitte des Bahnübergangs. Im KP sind beide Häkchen für die Fahrtrichtung (rote Markierung in Bild 4.6) zu setzen. Auch hier muss der KP durch das entsprechende Häkchen durch den Zugschluss ausgelöst werden. Damit der KP aber wirklich erst nach dem Passieren des Bahnübergangs durch den Zug ausgelöst wird, setzt man eine Aktivierungsdistanz von 15 Metern (blaue Markierung). Letztlich ist unter Lua-Funktion BUE_1_OEFFNEN einzutragen.


    Befinden sich auf einer Anlage mehrere Bahnübergänge, so ruft man für jeden den Wizard auf. Der Wizard erkennt, dass bereits ein Skript für einen Bahnübergang existiert und erhöht im nächsten Skript entsprechend die ID des Bahnübergangs.


    Wenn ein Bahnübergang zur Zufriedenheit funktioniert, könnte eventuell die dauernde Ausgabe der Meldungen "Bahnübergang 1 schließen" und "Bahnübergang 1 wird geöffnet" nerven. In dem Fall öffnet man den Lua-Skript-Editor und setzt vor die print-Anweisungen 2 Minus-Zeichen, also -- print("Bahnnübergang …).

    Fried-liche Grüße:aq_1:


    Ab einem gewissen Alter kann man sich so ziemlich alles erlauben. Niemand schimpft einen mehr aus, mit Ausnahme der Ärzte und der eigenen Kinder.

  • 4.3 Erstellung von Lua-Codes zu EEP-spezifischen Funktionen


    Im Gegensatz zu den bisher genannten Anwendungsmöglichkeiten, bei denen fertige Lua-Skripte erzeugt wurden, ist das bei in Bild 4.1 mit 3 bis 6 bezeichneten Möglichkeiten nicht der Fall. Hier werden nur Codes für EEP-spezifische Funktionen erzeugt. Diese können zwar auch über die Zwischenablage im Skript-Editor (siehe Kapitel 3) in den dort vorhandenen Text kopiert werden, um sie aber während des Anlagenbetriebs zur Anwendung kommen zu lassen, sind mindestens Lua-Grundkenntnisse zur Eingabe von umgebendem Code notwendig.


    Auf alle Konstellationen hier einzugehen, ist nicht möglich. Jedoch sei kurz aufgezeigt, welche Eintragungen notwendig sind, um eine solche EEP-spezifische Funktion über einen Kontaktpunkt aufzurufen.

    • Kopieren Sie den im Wizard erzeugten Code über die Zwischenablage z.B. ans Ende des vorhandenen Codes
    • Fügen Sie davor folgende Zeile ein: function TuWasBestimmtes(). Hierbei ist TuWasBestimmtes ein Synonym für einen von Ihnen gewählten Ausdruck für das, was die EEP-Funktion tun soll.
    • Fügen Sie hinter der Zeile mit der EEP-Funktion eine Zeile mit dem Wort end ein.

    Damit könnte ein Code im Skript wie folgt aussehen:

    Lua
    function Kamera_Uebersicht()
        ok = EEPSetCamera(0,"Uebersicht")
    end

    Kamera_Uebersicht wäre dabei das Synonym für TuWasBestimmtes.

    Die mittlere Zeile ist der vom Wizard erzeugte Code.


    Den Funktionsnamen - im Beispiel also Kamera_Uebersicht - fügt man ohne die Klammern in den auslösenden Kontaktpunkt unter Lua-Funktion ein (siehe Bild 4.6 gelbe Markierung).


    Solange man sich in einem Wizard-Bereich - z.B. für Immobilien-Funktionen - befindet, kann man zwischen dem Lua-Skript-Editor und dem Wizard hin und her bewegen, um z.B. mehrere Funktionen für dieselbe Immobilie oder für andere Immobilien zu erstellen.


    Sobald man aber von einem Wizard-Bereich in einen anderen wechseln will, muss man vorher im Lua-Skript-Editor das bis dahin erstellte Skript über die Schaltfläche "Skript neu laden" an EEP übertragen und danach den Skript-Editor schließen. Der Wizard selbst kann derweil geöffnet bleiben.


    4.4 Erstellung einer EEP-spezifischen Immobilien-Funktion


    Durch einen Klick auf die mit 3 im Bild 4.1 gekennzeichnete Schaltfläche erscheint nach der Speicherungsabfrage das Wizardfenster für Immobilien-Funktionen (Bild 4.7). Entweder im 2D-Immobilienmodus oder im 3D-Objekt-Editiermodus klickt man die gewünschte Immobilie an, deren Lua-Name automatisch im oberen Feld übernommen wird.


    Der Wizard erkennt ebenso automatisch welche EEP-spezifischen Funktionen erstellt werden können. Nicht bei der Immobilie vorhandene Funktionen werden ausgegraut.


    Je nach Auswahl der gewünschten Funktion ändert sich das Feld darunter. Bei Rauch, Licht und Feuer hat man die Wahl zwischen ein- und ausschalten.


    Wenn Achsen vorhanden sind, muss diese ausgewählt werden, auch wenn nur eine existiert. Auch hier können sich die Eingabemöglichkeiten Achsen-spezifisch verändern.


    Zur Änderung der Position bzw. der Rotation sind die X-, Y- und Z-Werte einzugeben.


    Wie oben beschrieben kann die generierte Funktion über die Zwischenablage in das Lua-Skript eingefügt und danach das Skript neu geladen werden.


    4.5 Erstellung einer EEP-spezifischen Kamera-Funktion


    Durch einen Klick auf die mit 4 im Bild 4.1 gekennzeichnete Schaltfläche kann eine EEP-spezifische Kamera-Funktion erstellt werden.


    Hierzu muss allerdings in der Anlage mindestens eine statische Kamera gespeichert sein. Ist keine statische Kamera gespeichert, erscheint nach der obligatorischen Speicherungsabfrage eine kryptische Fehlermeldung. Diese kann zwar über die Schaltfläche "Weiter" übergangen werden, doch im dann erscheinenden Wizardfenster für Kamera-Funktionen (Bild 4.8) kann auch keine auf ein Rollmaterial gerichtete Kamera ausgewählt werden, selbst wenn Fahrzeuge vorhanden sind.


    Ist mindestens eine statische Kamera in der Anlage gespeichert, so muss die gewünschte in der Auswahlliste markiert werden und der hierfür erstellte Befehl erscheint direkt im untersten Anzeigefeld.


    Durch Anklicken von "Kameras auf Rollmaterial" erscheint eine Auswahlliste der vorhandenen Fahrzeuge, aus der das gewünschte Fahrzeug ausgewählt werden muss. Unter der Auswahlliste befinden sich 10 Schaltflächen mit den Ziffern 0 bis 9. Sie entsprechen den numerischen Tasten für die Kameraauswahl:

    0 = Perspektive der "alten Kabine" (ggf. andere Perspektive als bei 8)

    1 = direkt auf die linke Seite des Fahrzeugverbandes,

    2 = direkt auf die rechte Seite des Fahrzeugverbandes,

    3 = seitlich von oben auf die linke Seite des Fahrzeugverbandes,

    4 = seitlich von oben auf die rechte Seite des Fahrzeugverbandes,

    5 = von der Front des Fahrzeugverbandes in Fahrtrichtung,

    6 = von vorne auf die Front des Fahrzeugverbandes,

    7 = aktiviert diejenige automatische Kamera, die dem ausgewählten Fahrzeugverband am nächsten steht,

    8 = aus dem Führerstand (ggf. andere Perspektive als bei 0),

    9 = oberhalb des Fahrzeugverbandes in Fahrtrichtung oder die mit EEPRollingstockSetUserCamera() definierte Position


    In diesen Fahrzeugverfolgerkameras wird zwar die erstellte Funktion im untersten Anzeigefeld unvollständig angezeigt, aber mit Klick auf die entsprechende Schaltfläche korrekt in die Zwischenablage übertragen.


    Wie oben beschrieben kann die generierte Funktion über die Zwischenablage in das Lua-Skript eingefügt und danach das Skript neu geladen werden.


    4.6 Erstellung einer EEP-spezifischen Rollmaterial-Funktion


    Durch einen Klick auf die mit 5 im Bild 4.1 gekennzeichnete Schaltfläche erscheint nach der Speicherungsabfrage das Wizardfenster für Rollmaterial-Funktionen (Bild 4.9). Zur Fahrzeugauswahl muss man in den 3D-Objekt-Editiermodus wechseln. Ist das gewünschte Fahrzeug Teil eines Fahrzeugverbands so muss man zuerst das Führungsfahrzeug des Verbands (z.B. die Lok) anklicken. Im oberen Anzeigefenster erscheint automatisch der Lua-Name (mit #-Zeichen) des Fahrzeugverbandes.


    Danach wählt man die gewünschte Funktion aus. Handelt es sich hierbei um eine spezifische Zug(Train)-Funktion wird vom Wizard im untersten Anzeigefeld in der Funktion der Lua-Name des Fahrzeugverbandes (mit #) eingetragen. Handelt es sich dagegen um eine Fahrzeug(Rollingstock)-Funktion erscheint ein Auswahlfeld für die im Fahrzeugverband enthaltenen Fahrzeuge. Hier muss man nun das gewünschte auswählen und im untersten Anzeigefeld wird in der Funktion automatisch der Name des Fahrzeugs (ohne #) eingetragen.


    Je nach Funktion erscheinen im Detailbereich weitere Auswahl- bzw. Eingabefelder für die entsprechenden Parameter der Funktion.


    Achtung: Hier erfolgt keine Plausibilitätsprüfung, ob die ausgewählte Funktion bei dem ausgewählten Fahrzeug möglich bzw. sinnvoll ist.


    Wie oben beschrieben kann die generierte Funktion aus der Zwischenablage in das Lua-Skript eingefügt und danach das Skript neu geladen werden.


    4.7 Erstellung einer EEP-spezifischen Gleis-Funktion


    Durch einen Klick auf die mit 6 im Bild 4.1 gekennzeichnete Schaltfläche erscheint nach der Speicherungsabfrage das Wizardfenster für zwei Gleis-Funktionen (Bild 4.9).


    Entweder im 2D-Gleismodus oder im 3D-Objekt-Editiermodus klickt man das gewünschte Gleis an. Es erscheint im Ausgabefeld sofort der Befehl zur Abfrage, ob das Gleis besetzt ist. Die generierte Funktion kopiert man über die entsprechende Schaltfläche in die Zwischenablage und fügt sie daraus im Lua-Skript-Editor in das Skript ein.


    Da das Gleis für diese Besetztabfrage registriert werden muss, kehrt man in den Wizard zurück. Dort setzt man das Häkchen für Auswahl registrieren. Jetzt erscheint der Registrierungsbefehl für das ausgewählte Gleis im Anzeigefeld und kopiert ihn ebenfalls über die Zwischenablage in das Lua-Skript.


    Neben Eisenbahn-Gleisen erkennt der Wizard auch andere Gleis-Typen und Straßen und Wege. Im 3D-Objekteditiermodus wird sofort der Typ beim Anklicken erkannt und die entsprechende Funktion als Befehl eingestellt. In 2D muss vorher in den entsprechenden Modus gewechselt werden, also z.B. vom Gleis-Modus in den Straßen-Modus.

    Fried-liche Grüße:aq_1:


    Ab einem gewissen Alter kann man sich so ziemlich alles erlauben. Niemand schimpft einen mehr aus, mit Ausnahme der Ärzte und der eigenen Kinder.

  • 5 Aufruf von Lua-Funktionen in Kontaktpunkten


    Im Lua-Skript definierte Funktionen können prinzipiell in jedem Kontaktpunkt aufgerufen werden (siehe auch Bild 4.6). Hierzu trägt man in dessen Objekteigenschaften den Funktions-namen ohne runde Klammern und ohne Parameter ein (rote Markierung in Bild 5.1). Will man allerdings "nur" eine Lua-Funktion aufrufen, so empfiehlt sich hierfür ein Sound-Kontakt, wie hier abgebildet.


    Wichtig: Bevor man aber eine Lua-Funktion in einen Kontaktpunkt einträgt, muss diese im Skript eingetragen (wobei ggf. "function Funktionsname" innerhalb eines Kommentars ausreicht) und nach dem Laden des Skripts dieses einmal (durch einen Wechsel in den 3D-Modus) ausgeführt worden sein. Ansonsten erhält man beim Klick auf OK eine Fehlermeldung.


    Seit EEP11.2 Plug-in 2 übergibt EEP den Namen des Fahrzeugverbandes, der einen Kontaktpunkt überfährt, als Funktionsparameter an die im Kontaktpunkt eingetragene Funktion. Diesem Parameter kann man einen beliebigen Namen geben, z.B. mein_Zug.


    Der Parameter wird nur in der Funktion im Skript eingetragen. In die Objekteigenschaften des Kontaktpunktes darf nur der Funktionsname eingetragen werden.


    Die Möglichkeit andere oder weitere Parameter direkt in einem Kontaktpunkt einzutragen, bietet das Lua-Modul BetterContacts von Benjamin Hogl (BH2). Download, Beschreibung und Einbindungsanweisung ist dem vorgenannten Link zu entnehmen.

    Fried-liche Grüße:aq_1:


    Ab einem gewissen Alter kann man sich so ziemlich alles erlauben. Niemand schimpft einen mehr aus, mit Ausnahme der Ärzte und der eigenen Kinder.