Ansteuerung von beschriftbaren Zugzielanzeigern mit LUA

!!! 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.
  • Guten Tag und ein Hallo an alle,

    habe mal eine Frage. Gibt es bei diesem Set LUA Vorlagen zum Anzeigen verschiedener Zug Ziele wie beim Set von DB2. Ich bin nämlich nicht fündig geworden.

    Es gibt bestimmt einige User (so wie ich), die eine LUA Vorlage für die ZZA von DU1 sehr gut gebrauchen könnten. Viellicht hat ein LUA Könner (zbs.Götz) für das Forum schon etwas im Petto.


    Vielen Dank für euere Antworten und viele Grüße

    Lothar (DB54)

    EEP6, EEP14, EEP15.Patch3, EEP16.Patch3 - PC: Win 10 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 32 GB RAM , GK Nvidia Palit RTX 2080Ti Gaming Pro

  • DB54

    Im Augenblick kann ich nur Hilfe zur Selbsthilfe anbieten:


    Hier ist noch einmal ein Bild mit durchnummerierten Textfeldern als Orientierungshilfe



    Du benötigst diese EEP Funktion dazu


    Den Modellnamen findest du in den Objekteigenschaften



    Du kannst jetzt jedes der Textfelder im Modell direkt mit der Lua-Funktion ansprechen

    LUA Source Code
    1. EEPStructureSetTextureText( "#27" , 1 , "1" )
    2. EEPStructureSetTextureText( "#27" , 2 , "ICE" )
    3. EEPStructureSetTextureText( "#27" , 3 , "795" )
    4. EEPStructureSetTextureText( "#27" , 4 , "Abfahrt 17" )
    5. EEPStructureSetTextureText( "#27" , 5 , "45" )
    6. EEPStructureSetTextureText( "#27" , 6 , "Hannover" )
    7. EEPStructureSetTextureText( "#27" , 7 , "Magdeburg" )
    8. EEPStructureSetTextureText( "#27" , 8 , "A B C D E" )
    9. EEPStructureSetTextureText( "#27" , 9 , "Berlin" )

    Aber das ist nicht sinnvoll, weil du für mehrere Anzeiger und verschiedene Züge wahnsinnig viel Code schreiben müsstest. Und wenn du dabei irgendwo durcheinander kommst, dann suchst du dir in tausenden Zeilen, die alle fast identisch aussehen, 'nen Wolf.


    Besser ist, du schreibst den Text erst einmal in eine Tabelle

    Genau genommen ist das eine Tabelle für mehrere Züge. Und unter dem Zugnamen ist eine Untertabelle, in der die benötigten Texte liegen. Die sind schon den entsprechenden Feldnummern auf der ZZA zugeordnet. Ein Text für das Feld 1 fehlt, weil das die Gleisnummer ist. Die ändert sich nicht mit jedem Zug :af_1:


    Außerdem benötigst du für jedes Gleis eine Liste mit den ZZA Modellen, Da stehen ja immer mehrere und alle werden denselben Text bekommen:

    LUA Source Code
    1. ZZA = {
    2. Bahnsteig_1 = {"#27","#31","#32","#41"},
    3. Bahnsteig_2 = {"#28","#34","#35","#40"},
    4. }


    Jetzt noch eine Funktion für den Kontaktpunkt, welche den Zugnamen bekommt, sich dazu passend die richtigen Infos raussucht und an alle ZZAs des entsprechenden Bahnsteigs übermittelt:

    LUA Source Code
    1. function Einfahrt_Gleis_1(Zugname)
    2. for Element, Modell in pairs(ZZA.Bahnsteig_1) do
    3. for Zeile, Text in pairs(Zug[Zugname]) do
    4. EEPStructureSetTextureText( Modell , Zeile , Text )
    5. end
    6. end
    7. end


    In einem Kontaktpunkt an geeigneter Stelle muss nun unter "Lua-Funktion" stehen: Einfahrt_Gleis_1


    Das genügt so noch nicht für einen kompletten Betrieb mit mehreren Zügen, verschiedenen Zeiten etc. Aber du musst das Schritt für Schritt lernen. Das hier sind die notwendigen Grundlagen.

    "... this poltroonish loiter-sack. This wiffle-waffle fustylugs who doesn't have a sense of a ninnyhammer, you gilli-wet-foot fribble!"

    - Stephen Colbert -

    The post was edited 5 times, last by Goetz: Korrekturen in den Skripten ().

  • Hallo Götz,


    vielen Dank für Deine tolle Unterstützung. Werde mich gleich einmal eingehend mit den LUA Skripten beschäftigen damit ich die ZZA Dank deiner Hilfe zum laufen bringen kann.

    Vielleicht noch eine Frage. Wenn ein Zug abgefahren ist, sollten die ZZA keine Anzeige haben, sprich sie sollen außer der Gleisnummer leer sein und erst mit dem nächsten Zug mit dem einlaufenden Zug die Anzeige aktualisieren. Das wird sicherlich auch mit einem Kontaktpunkt mit dementsprechender LUA Funktion realisiert.


    Noch einmal vielen Dank für deine Mühen.


    Viele grüße

    Lothar (DB54)

    EEP6, EEP14, EEP15.Patch3, EEP16.Patch3 - PC: Win 10 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 32 GB RAM , GK Nvidia Palit RTX 2080Ti Gaming Pro

  • Vielleicht noch eine Frage. Wenn ein Zug abgefahren ist, sollten die ZZA ...

    Ja, das ist klar, Lothar

    Und sie werden noch viel mehr sollen.


    Aber: immer einen Schritt nach dem anderen machen.

    Erst kapieren - wirklich kapieren - und dann die Feature-Liste vergrößern.

    Du musst deinen Fokus auf das Lernen richten. Nicht auf das Ergebnis. Das ist immens wichtig!

    "... this poltroonish loiter-sack. This wiffle-waffle fustylugs who doesn't have a sense of a ninnyhammer, you gilli-wet-foot fribble!"

    - Stephen Colbert -

    The post was edited 1 time, last by Goetz ().

  • Hallo,


    da wäre es fast wünschenswert das sich mehrere ZZAs auf einem Bahnsteig (wovon einer als Master) sich verknüpfen liessen. Dann wäre nur noch ein ZZA pro Bahnsteig zu beschriften...


    Vorausgesetzt dies ist machbar?!


    LG,

    subwait

  • da wäre es fast wünschenswert ...

    Ja - fast.

    Denn wenn du dir die Skript-Beispiele oben ansiehst (die schon mehrere ZZAs berücksichtigen), dann siehst du dass damit nichts gewonnen ist. Weil das Ansprechen mehrerer ZZAs von allem das einfachste ist.

    "... this poltroonish loiter-sack. This wiffle-waffle fustylugs who doesn't have a sense of a ninnyhammer, you gilli-wet-foot fribble!"

    - Stephen Colbert -

  • Hallo,


    man sollte sich von der Vorstellung lösen solche ZZA rein mit KP ansteuern zu wollen, das kann aus meiner Sicht nicht funktionieren, weil die Möglichkeiten zu groß sind. Das wird nur über LUA gehen und dann braucht man über Kopplungen oder sowas nicht nachdenken.


    Gruß Michael


    P.S.: Soll ich vielleicht den ganzen Teil zur Ansteuerung von ZZA (der ja allgemeiner Natur ist und nicht nur für DU1, sondern auch für DB2 und DL1 gilt) in einen eigenen Thread verschieben?

    163-katalog-banner-jpg

    Hardwarekonfiguration:
    Laptop: Lenovo IdeaPad L340 4*2,4 GHz, 16GB RAM, Win10 64 bit, EEP 6.1/EEP 16.1 Expert


  • Hallo Götz,


    habe nach mehreren Versuchen und dem Verstehen von deinem Skript leider noch keinen Erfolg. Irgendwie stimmt bei mir mit dem Zug Namen in der Function etwas nicht. Bekomme immer eine Fehlermeldung beim Überfahren vom Kontaktpunkt für die ZZA.


    Viele Grüße

    Lothar

    EEP6, EEP14, EEP15.Patch3, EEP16.Patch3 - PC: Win 10 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 32 GB RAM , GK Nvidia Palit RTX 2080Ti Gaming Pro

  • Hallo Lothar,


    laut deinem Ereignisfenster überfährt der Zug "#ICE" den Kontaktpunkt, aber nicht der Zug "#BZUG_01_ICE3", welcher bei Dir in der Tabelle steht. Der Name "#ICE" wird deshalb in der Tabelle Zug nicht gefunden und deren Untertabellenplätze. Weiterhin würde ich den Funktionsaufruf von Götz function Einfahrt_Gleis_1(Zugname) so lassen und nicht function Einfahrt_Gleis_1(ICE) . Doppelte Namen kommen in einer Funktion nicht gut an, was die Lesbarkeit betrifft. Es werden ja später nicht nur ICE's dort fahren. :ae_1:



    MfG. Jörg

    MfG. Jörg
    Notebook: i7-6700K, 4[8]x4.0 GHz, 32GB RAM DDR4, NVIDIA GTX 980M 8GB, Windows 10, 64-Bit
    installiert: EEP15.1 Patch2 mit Plugin 1; EEP16.0 Patch3

    Zusatzprogramme: ResourcenSwitcher2

  • Ergänzend zu Tufftuffs richtigem Hinweis:





    Die Variable bekommt von EEP den Namen des Zuges, der den KP überfahren hat.

    Damit kann sie aus der Tabelle Zug die passenden Daten raussuchen.

    Dafür müssen die richtigen Zugnamen in der Tabelle stehen.

    Als Variablennamen nützen sie nichts.


    Die eckigen Klammern um den Zugnamen [ "#ICE3" ] machen ihn zu einer Adresse in dieser Tabelle.

    Das = dahinter und die geschweiften Klammern {} fassen alles zwischen diesen Klammern als ein Paket zusammen, welches unter dieser Adresse abgelegt wird.

    So kann die Funktion genau das Datenpaket finden, welches zum auslösenden Zug passt.



    Du musst bitte verstehen, dass Funktionen so etwas wie Arbeitsmuster sind. Deshalb müssen an bestimmten Stellen einer Funktion Mustereinträge stehen. Nämlich überall dort, wo später im Betrieb unterschiedliche Daten benutzt werden sollen. In unserem Beispiel mal dieser, mal jener Zugname.


    Diese Mustereinträge sind die Variablen. Und Variablen bekommen einen beliebigen Namen. Du kannst sie dasHier nennen oder Dings1. Im Betrieb wird der Variablennamen dann durch die richtigen Daten ersetzt. Nicht im Skript.

    "... this poltroonish loiter-sack. This wiffle-waffle fustylugs who doesn't have a sense of a ninnyhammer, you gilli-wet-foot fribble!"

    - Stephen Colbert -

    The post was edited 2 times, last by Goetz ().

  • Habe es mit diesem Script versucht, und alle Versuche kamen zu richtigen Ergebnis.

    Danke für die Scriptvorlagen.


    Peter

    Betriebsystemname: Microsoft Windows 10 Pro Education

    Prozessor: AMD Ryzen 5 1600 Six-Core Processor, 3200 MHz, 6 Kern(e), 12 logische(r) Prozessor(en)

    PC:RAM 16 GB

    Grafik Karte: Name NVIDIA GeForce GTX 1060 6GB


    EEP6 mit allen Plugins und Patches
    EEP7 bis13 mit allen Patches und Plugins

    EEP 15 und EEP 16
    Modelkonverter
    PlanEx 3.1
    Home-Nostruktor 13.0
    Modellkatalog
    Bodentextur Tool



  • Hallo Götz,


    vielen Dank für die lehrreichen Erläuterungen zu den Skripten. Komme jetzt so langsam Dank deine Hilfe :bn_1:ein wenig bei LUA an. Habe es jetzt geschafft alles zum laufen zu bringen.

    Werde jetzt versuchen die ZZA zum leeren der Anzeige zu bringen. Werde mich nachher wieder hier melden.


    Wünsche Dir uns allen Usern einen schönen ersten Advent.


    Viele Grüße

    lothar

    EEP6, EEP14, EEP15.Patch3, EEP16.Patch3 - PC: Win 10 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 32 GB RAM , GK Nvidia Palit RTX 2080Ti Gaming Pro

  • Hallo Goetz,


    habe mir dein Script angepasst für die ZZA von DB2.

    funktioniert zumindest schon mal mit Anzeigen E+F. Die Anzeigen A-D brauche ich zur Zeit noch nicht. Die Anpassung dafür ist aber nicht schwer sind nur mehr Felder.

    Wenn ich das richtig sehe sprichst du mit deinem Script nur 1 Seite an.


    Hier mal meine Anpassung für die Anzeigen E+F Von DB2

    gibt es eine möglichkeit das so zusammen zu fassen das man nur einen Eintrag bearbeiten muss für Vorder- und Rückseite. In meinem Fall 1+2, 3+4, usw. Bei deinem Beispiel wären es 2+11, 3+12, usw.

    Viele Grüße aus der Kurpfalz (Ma)


    Jürgen




    PC Win10x64, Mainboard: ASUS Prime B350M-A, CPU: AMD Ryzen 5 1600, Grafik: NVIDIA GTX 1050TI GDDR5, Ram: 32GB DDR4 - Monitor: Penq 32" 2560x1440 HDMI + 19" Monitor 1824x1026 90Grad gedreht
    Laptop MSI GL72M 7Rex, Intel Core i7-7700HQ 2.8Ghz, NVIDIA GTX1050ti 4GB GDDR5, Ram: 16GB DDR4, 512GB SSD, 1TB HDD, Win10x64
    EEP 13.1, EEP14 Patch4, EEP15.1 Patch2, EEP16 Patch3

    Für meine Modelle verwende ich unter anderem Texturen von https://www.textures.com



  • Wenn ich das richtig sehe sprichst du mit deinem Script nur 1 Seite an.

    Ja und nein ...

    Auf Vorder- und Rückseite desselben Anzeigers stehen ja immer identische Informationen. Nur an unterschiedlichen Plätzen.

    Deshalb hat DU1 für beide Seiten das selbe Textfeld benutzt und nur entsprechend anders arrangiert. Denn die Positionen sind weder identisch, noch spiegelbildlich.


    Die zweite Tafel im Sceenshot mit dem Feldnummern ist für das Gleis nebenan. Da bekommen die Felder andere Informationen und haben deshalb bei diesem Doppelanzeiger auch andere Nummern.

    "... this poltroonish loiter-sack. This wiffle-waffle fustylugs who doesn't have a sense of a ninnyhammer, you gilli-wet-foot fribble!"

    - Stephen Colbert -

  • Hallo Götz,


    es hat mit dem folgenden Skript Eintrag Funktioniert:aa_1:


    Die ZZA ist leer

    EEP6, EEP14, EEP15.Patch3, EEP16.Patch3 - PC: Win 10 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 32 GB RAM , GK Nvidia Palit RTX 2080Ti Gaming Pro

  • Hallo Goetz,


    dachte das wären Vorder bzw Rückseite einer Tafel. Bei DU1 wird also durch 1 Eintrag das entsprechende Feld auf Vorder- und Rückseite beschriftet.

    Viele Grüße aus der Kurpfalz (Ma)


    Jürgen




    PC Win10x64, Mainboard: ASUS Prime B350M-A, CPU: AMD Ryzen 5 1600, Grafik: NVIDIA GTX 1050TI GDDR5, Ram: 32GB DDR4 - Monitor: Penq 32" 2560x1440 HDMI + 19" Monitor 1824x1026 90Grad gedreht
    Laptop MSI GL72M 7Rex, Intel Core i7-7700HQ 2.8Ghz, NVIDIA GTX1050ti 4GB GDDR5, Ram: 16GB DDR4, 512GB SSD, 1TB HDD, Win10x64
    EEP 13.1, EEP14 Patch4, EEP15.1 Patch2, EEP16 Patch3

    Für meine Modelle verwende ich unter anderem Texturen von https://www.textures.com