Fahrstraßen 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.
  • Ich habe heute gleich zwei neue fertige Lua-Skripts anzubieten, wobei beide eine Fahrstraße stellen sollen.

    Beide sind (hoffentlich) ausreichend im Skript dokumentiert.

    Wenn Fragen dennoch offen bleiben: In diesem Thread nachfragen, nicht per PN (dann haben alle was davon :ae_1:).


    Beide Skripts in den EEP-Ordner/Lua speichern


    Das eine Skript heißt: Fahrstrassen_per_Route_merken
    Hiermit werden nicht nur die Fahrstraßen gemerkt, wenn diese zunächst besetzt ist, sondern es kann auch je nach Route geschaltet werden.


    Das zweite Skript ist: Fahrstrasse_per_Signal

    Mit diesem Skript werden einfach die Signale abgefragt, ob ein Zug davor (bzw.zwischen Vorsignal und Signal) steht (bzw. sich befindet).

    Auch hierbei kann man zwischen den Routen wählen.

    Als Zugabe ist es sogar noch möglich, dass man eine Verweildauer optional angeben kann. Die Fahrstraße also erst später geschaltet wird.


    Beide Skripts liegen (wie meine anderen Skripts) in meiner Cloud:

    https://c.gmx.net/@378456013973494533/pf6hRmoYQdC5fpm4iJaACA

  • Hallo Hokau ,


    ich habe mir dein Script mal angesehen, eine sehr schöne vorgehensweise,

    sehr kompakt programmiert.

    Werde das auch mal in den nächsten Tagen, auf einer Anlage von mir probieren.


    Wieder einmal ist erkennbar wie Leistungsstark die Nutzung von Tabellen in Lua ist.

    Vielleicht noch ein kleiner Hinweis, wenn du in deiner Tabelle die Nutzung von fortlaufenden

    Slotspeichern (Id´s > 1000) und eventuell noch Text für die Meldeausgabe, so ähnlich wie ich das
    in meinen Lua-Lern-Videos zeige, möglich machst, dann bleiben keine Wünsche mehr offen.


    Sehr gute Idee.


    Gruß Dieter

    1.MSI 17,3" Intel® i7-8750H 16GB SSD + HDD GeForce® GTX 1060 »GV72 8RE-013DE (00179E-013)

    2. PC:Win10/64, i7-7700K, 4.2 GHz, GPU GTX 1070/8 GB, 16 GB RAM(DDR4), SSD 960 Evo 500GB, Ilyama PL2490
    EEP 6.1 - EEP 14 E


    Ich wünsche mir eine freizügige Script-Sprache und eine leistungsfähige Grafik Engine für EEP.
    Ein Leben ohne EEP ist möglich, aber sinnlos, so ganz sicher bin ich mir nicht mehr.


    http://www.parry-36.jimdo.com
    https://www.twitch.tv/parry_36/

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

  • Vielleicht noch ein kleiner Hinweis, wenn du in deiner Tabelle die Nutzung von fortlaufenden


    Slotspeichern (Id´s > 1000) und eventuell noch Text für die Meldeausgabe, so ähnlich wie ich das
    in meinen Lua-Lern-Videos zeige, möglich machst, dann bleiben keine Wünsche mehr offen.

    Hm, ehrlich gesagt weiß ich jetzt nicht genau, was du meinst. Vielleicht liegt es auch daran, dass ich deine Videos nicht genau kenne.


    Allerdings fällt mir auf, dass ich oben einen wichtigen Hinweis vergessen habe:

    Beim Skript Fahrstrassen_per_Route_merken werden Slots benutzt und dabei entsprechen die Slotsnummern den IDs der Signale. Für Signal 134 wird also der Slot 134 benutzt.

    Das ist dann wichtig, wenn man andere Skripts hat, die ebenfalls Slots benutzen. Damit es keine Überschneidungen gibt, sollten die Slots der anderen Skripts beim nächsthöheren Slot anfangen, wie das Signal/Weiche mit der höchsten ID. Hat man also z.B. 254 Weichen und Signale, so dürfen bei den anderen Skript die Slots erst bei 255 anfangen. Besser noch auf die nächste 100 (also 300) aufrunden, dann hat man noch einen Puffer, falls man noch ein Signal aufstellen will.


    Das Skript Fahrstrasse_per_Signal benutzt keine Slots, da sich das "Merken" durch den Zug erledigt wird. Und genau deshalb wird man auch einen Vorteil entdecken können. Man kann theoretisch einen Zug zwischen ein Vorsignal und Hauptsignal getrost aufgleisen. Die Fahrstraße wird trotzdem gestellt.


    Ich weiß jetzt nicht auswendig, ob ich das in den Skript geschrieben habe. Da es aber wichtig ist, schreibe ich es sicherheitshalber noch mal hier:

    Alle Routenbezeichnungen dürfen keine Umlaute enthalten, da Lua sowas nicht mag und zu Fehlern führt.

  • Mein Bericht zu diesem Thema:


    Ich habe den Codeschnipsel von Hokau in eine Anlage von mir, einfach zu dem

    vorhandenen Code, dazu kopiert, ich kann verkünden, es funktioniert.

    Also keine Bange, immer mal etwas wagen, wie sagte Lehrer Bömmel:


    "Die Pänz en d'r Klass verstecke sing Schohn, als hä en Dampfmaschin erkläre will: "Da stelle me uns e mal janz dumm. Watt is en Dampfmaschin? .."


    Ich meine natürlich die Tabellen in Lua, was is en Tabell, hat vorne einen Namen und eine hinten schöne {} ,

    wenn ihr wollt, so macht bitte weiter.


    Werde für alle Interessierte, meine kleine Versuchsanlage in den nächsten Tagen in meiner Hompage

    im Downloadbereich hochladen.


    Gruß Dieter

    1.MSI 17,3" Intel® i7-8750H 16GB SSD + HDD GeForce® GTX 1060 »GV72 8RE-013DE (00179E-013)

    2. PC:Win10/64, i7-7700K, 4.2 GHz, GPU GTX 1070/8 GB, 16 GB RAM(DDR4), SSD 960 Evo 500GB, Ilyama PL2490
    EEP 6.1 - EEP 14 E


    Ich wünsche mir eine freizügige Script-Sprache und eine leistungsfähige Grafik Engine für EEP.
    Ein Leben ohne EEP ist möglich, aber sinnlos, so ganz sicher bin ich mir nicht mehr.


    http://www.parry-36.jimdo.com
    https://www.twitch.tv/parry_36/

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

  • Alle Routenbezeichnungen dürfen keine Umlaute enthalten, da Lua sowas nicht mag und zu Fehlern führt.

    Das ist falsch!


    In Strings sind Umlaute erlaubt. Und Routennamen sind Strings. Dürfen also Umlaute enthalten.

    Lua kann diese Strings mit Umlauten auch fehlerfrei mit anderen Strings vergleichen, welche im Skript (z.B. in einer Tabelle) bereit stehen und die selben Umlaute enthalten.


    Man muss nur darauf achten, dass man sein Skript im ANSI Format kodiert. Im EEP-eigenen Editor ist das garantiert. Beim Einsatz von Notepad++ und vergleichbaren Editoren muss man es einstellen. Dort ist die voreingestellte Kodierung oft UTF-8

    "Guess about all I got left now is doubts. Doubts and scars."

    John Marston


  • Ich habe ganz andere Erfahrung gemacht. Als ich versucht habe Umlaute zu benutzen (als String wohlgemerkt), kam es zu einer Fehlermeldung. Wenn ich die Umlaute umformuliert habe (ä = ae), gab es keine Fehlermeldung.

    Also: Keine Umlaute benutzen.

  • Als ich versucht habe Umlaute zu benutzen (als String wohlgemerkt), kam es zu einer Fehlermeldung.

    Weil dein Skript nicht ANSI-kodiert war.


    Mit ANSI-Kodierung funktionieren Umlaute:



    Bei anderer Kodierung werden Umlaute falsch gelesen:




    Und dann stimmen sie nicht mit den Umlauten in Routennamen überein:



    "Guess about all I got left now is doubts. Doubts and scars."

    John Marston


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

  • Hallo Dieter,


    ich baue zur Zeit Dein Lua Script in eine Anlage ein.

    In der Zuganmeldung:

    wird ja der Zugname mit ausgelesen.

    Wie kann ich unter

    Code
    1. EEPSaveData( a_znSlot["FS_"..Fs_Id][1], s_route )

    den Zugnamen mit speichern, um ihn in einer Funktion weiter nutzen zu können.

    Ich bekomme nur Fehlermeldungen bei meinen Versuchen.


    Danke im voraus.

    Es können aber auch andere mich in die richtige Spur bringen.

    Viele Grüße Reiner

    Windows 10 Home 64 bit, Intel® Core™ i7-6700k Processor 4 x 4000 MHz,(4633 Mhz mit Wasserkühlung)

    Palit Geforce GTX 1060 /6 GB , DDR4-2133 16 GB) --->> und kein Zug ruckelt mehr<<---:ap_1:


    Fast alles ab EEP4

  • Hallo Reiner,


    das ist relativ einfach, in dem du in der Anmeldefunktion nicht die Route speicherst,

    sondern den Zugnamen.
    Lösch die Zeile 4 und speicher nur den Zugnamen, bei der eventuell nötigen Weiterverarbeitung

    kannst du dann aus dem Zugnamen im Speicher die Route ermitteln.

    Wenn nötig, dann frage nochmal nach, bin immer mit Rat und Tat zu erreichen.


    Für sehr Fortgeschrittene ist es auch möglich, beide Werte, den Zugnamen und die Route
    zu speichern um später darauf zu zugreifen.

    Erkläre ich beispielweise in der Demoanlage "Umkehren-Wendezug".


    Gruß Dieter

    1.MSI 17,3" Intel® i7-8750H 16GB SSD + HDD GeForce® GTX 1060 »GV72 8RE-013DE (00179E-013)

    2. PC:Win10/64, i7-7700K, 4.2 GHz, GPU GTX 1070/8 GB, 16 GB RAM(DDR4), SSD 960 Evo 500GB, Ilyama PL2490
    EEP 6.1 - EEP 14 E


    Ich wünsche mir eine freizügige Script-Sprache und eine leistungsfähige Grafik Engine für EEP.
    Ein Leben ohne EEP ist möglich, aber sinnlos, so ganz sicher bin ich mir nicht mehr.


    http://www.parry-36.jimdo.com
    https://www.twitch.tv/parry_36/

  • Hallo Dieter,


    Danke für die schnelle Antwort, werde das so machen.

    Die Demoanlage Umkehren-Wendezug sehe ich mir auch an.


    Gruß Reiner

    Windows 10 Home 64 bit, Intel® Core™ i7-6700k Processor 4 x 4000 MHz,(4633 Mhz mit Wasserkühlung)

    Palit Geforce GTX 1060 /6 GB , DDR4-2133 16 GB) --->> und kein Zug ruckelt mehr<<---:ap_1:


    Fast alles ab EEP4

  • Hallo Dieter,

    im EEP Ereignisfenster steht: "#DB 211-273,HB3,P_NahB"


    Zug und Route . aber wie trenne ich diese wieder?

    Bekomme immer nil


    Gruß Reiner und gute Nacht

    Windows 10 Home 64 bit, Intel® Core™ i7-6700k Processor 4 x 4000 MHz,(4633 Mhz mit Wasserkühlung)

    Palit Geforce GTX 1060 /6 GB , DDR4-2133 16 GB) --->> und kein Zug ruckelt mehr<<---:ap_1:


    Fast alles ab EEP4

  • Hallo Reiner RS-Chemnitz


    :aq_1:

    Intel i3-540 3,2GHz 8GB, RAID10, HD 6570 1GB, W7/64 Prof., EEP 6-6.1, 10-14, HN13, MK, TM, "Schiefe Ebene 6 + 8", "Bahn2000"

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

  • Hallo Reiner,


    eigendlich wollte ich dieses erweiterte Abspeichern von mehreren Werten, hier nicht

    weiter verfolgen, da doch relativ mehr Lua-Verständnis notwendig ist.


    eep_gogo hat dir bereits einen Weg gezeigt, nur löst das nicht das Problem bei mehr

    als 2 Werten.

    Ich verwende zu diesem Zweck "string.gmatch( s, pattern)", auf deutsch sind pattern
    eine Musterauswahl der verwendeten Werte.

    z.B. %a = Buchstaben, %d = digits (Zahlen) usw.


    Es ist nicht sinnvoll, fertige Vorlagen einzustellen, die dann nur kopiert werden, damit wird

    man Lua niemals richtig verstehen lernen.

    Code
    1. for w in string.gmatch( s, pattern ) do
    2. table.insert( list, w )
    3. end

    Sollte Widererwarten doch Interesse zu diesem Thema bestehen, so kann ich das ja auf
    TwitchTV bringen.


    Gruß Dieter

    1.MSI 17,3" Intel® i7-8750H 16GB SSD + HDD GeForce® GTX 1060 »GV72 8RE-013DE (00179E-013)

    2. PC:Win10/64, i7-7700K, 4.2 GHz, GPU GTX 1070/8 GB, 16 GB RAM(DDR4), SSD 960 Evo 500GB, Ilyama PL2490
    EEP 6.1 - EEP 14 E


    Ich wünsche mir eine freizügige Script-Sprache und eine leistungsfähige Grafik Engine für EEP.
    Ein Leben ohne EEP ist möglich, aber sinnlos, so ganz sicher bin ich mir nicht mehr.


    http://www.parry-36.jimdo.com
    https://www.twitch.tv/parry_36/

  • Hallo Dieter,

    ich bin mittlerweile auf eine andere Lösung gekommen.

    Ich hole mir die Route und Namen aus den kompletten String, der im Slot gespeichert ist.


    Danke für Deine Bemühungen auch an eep_go_go

    Schönes Wochenende


    Reiner

    Windows 10 Home 64 bit, Intel® Core™ i7-6700k Processor 4 x 4000 MHz,(4633 Mhz mit Wasserkühlung)

    Palit Geforce GTX 1060 /6 GB , DDR4-2133 16 GB) --->> und kein Zug ruckelt mehr<<---:ap_1:


    Fast alles ab EEP4

  • Ich habe den Code von eep_gogo noch etwas erweitert, so konnte ich dieser Methode

    doch noch etwas positives entlocken:


    Viel Spaß beim Programmieren, man lernt nie aus.:aa_1:


    Gruß Dieter

    1.MSI 17,3" Intel® i7-8750H 16GB SSD + HDD GeForce® GTX 1060 »GV72 8RE-013DE (00179E-013)

    2. PC:Win10/64, i7-7700K, 4.2 GHz, GPU GTX 1070/8 GB, 16 GB RAM(DDR4), SSD 960 Evo 500GB, Ilyama PL2490
    EEP 6.1 - EEP 14 E


    Ich wünsche mir eine freizügige Script-Sprache und eine leistungsfähige Grafik Engine für EEP.
    Ein Leben ohne EEP ist möglich, aber sinnlos, so ganz sicher bin ich mir nicht mehr.


    http://www.parry-36.jimdo.com
    https://www.twitch.tv/parry_36/

    The post was edited 4 times, last by Parry36 ().

  • Das ist richtig super, habe es gleich mal probiert.

    Aber kalt.:aa_1:


    1.MSI 17,3" Intel® i7-8750H 16GB SSD + HDD GeForce® GTX 1060 »GV72 8RE-013DE (00179E-013)

    2. PC:Win10/64, i7-7700K, 4.2 GHz, GPU GTX 1070/8 GB, 16 GB RAM(DDR4), SSD 960 Evo 500GB, Ilyama PL2490
    EEP 6.1 - EEP 14 E


    Ich wünsche mir eine freizügige Script-Sprache und eine leistungsfähige Grafik Engine für EEP.
    Ein Leben ohne EEP ist möglich, aber sinnlos, so ganz sicher bin ich mir nicht mehr.


    http://www.parry-36.jimdo.com
    https://www.twitch.tv/parry_36/

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

  • Hallo Icke,

    das werde ich in Zukunft so handhaben.

    Sieht gut aus.


    Reier

    Windows 10 Home 64 bit, Intel® Core™ i7-6700k Processor 4 x 4000 MHz,(4633 Mhz mit Wasserkühlung)

    Palit Geforce GTX 1060 /6 GB , DDR4-2133 16 GB) --->> und kein Zug ruckelt mehr<<---:ap_1:


    Fast alles ab EEP4

  • hallo,


    ich habe mir das skript Fahrstasse_mit_route heruntergeladen und versucht auf einer teststrecke zu benutzen.

    ich habe alles in eep skript kopiert.


    es kommt bei mir zu zwei Fehlermeldungen...

    zum einen Zeile 25: [string "EEP Script"]:25: bad argument #1 to 'EEPLoadData (number expected, got string)

    dieser Fehler taucht nicht mehr auf, wenn ich die schleife:

    Code
    1. for k,v in pairs(Anmeldungen) do

    in die function Fahrstrasse_stellen() hereinziehe (der Fehler kommt auch wenn ich nach der Anleitung vorgehe und es mit require einbinde).


    zum anderen kann ich keinen Funktionsaufruf im Kontakt schreiben mit Anmeldung_16. Das verstehe ich aus meinem Kenntnisstand auch, da es ja keine function mit Anmeldung_16 im Quelcode gibt. Zumindest erkenne ich das nicht.


    Was mache ich falsch oder was ist am skript falsch?


    Meine Testanlage:

    Aufgebaut ist ein Gleisfächer mit 4 Gleisen, wo ein Fahstraßensignal (Nummer 16) am anfang steht und alle vier Gleise bedient, der mit einem Oval zum Kreis geschlossen wird

    Meine Routen heißen: FV, GV, SV, NV.

    Ich habe vier züge aufgleist und habe jedem zug eine Route zugewiesen.

    Lg Stephan :aa_1:


    ______________________________________________________________________________

    ______________________________________________________________________________

    - Rechnerinformation:

    Asus ROG

    AMD Ryzen 5 1600 6x 3,2GHz

    8GB DDR 4

    Radeon RX 580 4GB GDDR5


    - EEP Versionen:
    EEP 13-Expert; EEP 12-Expert; EEP 11; EEP X-Expert; EEP 9;EEP 8; EEP 7; EEP 6; EEP 5

    ______________________________________________________________________________