kompletter Neuling in 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.
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!
  • Hallo an das Lua-Forum,

    ich habe mich vor wenigen Tagen entschlossen, mich mit Lua zu beschäftigen (lange Weile, Rentner ... warum auch immer).

    Meine erste Frage ist natürlich, wo finde ich wirkliche Einsteiger-Tutorials???????

    Dann habe ich mir das Lua-Handbuch vorgenommen um rauszubekommen, was in Lua möglich ist, und festgestellt, dass es 187 Variable und Funktionen gibt, die sich kein Anfänger merken kann. Um schnell eine Funktion mit ihrer Kurzbeschreibung zu finden, habe ich mir also eine EXEL-Tab mit Suchfunktion angelegt, die ich hier (gerade für die Einsteiger und auch für mich zum Testen) mal zur Verfügung stellen würde, wenn das ginge. Vielleicht besteht ja Interesse und die Möglichkeit.

    Hier mal 2 Screenshots:

    Aber wie gesagt, am wichtigsten sind mir erstmal Einsteiger-Tutorials.

    Danke schon mal für Eure Hinweise

    Grüße von der Insel

    Micha

    :aq_1:Grüße von der Sonneninsel Usedom

    Micha

    EEP 17, Win 10pro (mit TeamViewer15), 64 Bit, Lenovo i7-3770, 16GB RAM, 256-er SSD, 2TB HDD

    NVIDIA GT 640, 2 GB, Samsung curved 27''

    "Wer etwas will, sucht Wege --- wer etwas nicht will, sucht Gründe!!!" (H. Kostial)

    "Humor ist der Knopf, der verhindert, dass uns der Kragen platzt!" (Joachim Ringelnatz)

  • Hallo Micha ( Micha 56 ),

    eine sehr gute Idee, dass Du Dich mit (EEP)-Lua beschäftigen möchtest.

    So manche "Schaltkringel" mit den darin enthaltenen UND- und ODER-Verknüpfungen und IF-Abfragen, auch wenn man diese dort nicht sofort erkennt, sind komplizierter aufgebaut, als dies in einem Lua-Skript abzubilden wäre.

    Und fast jeder EEP-User hat das "Programmieren" mit "Schaltkringeln" gelernt. Warum also auch nicht das Programmieren in EEP-Lua lernen.

    Wirklich viel Arbeit, die Du Dir mit der Excel Tabelle gemacht hast.

    Aber eine Anmerkung von mir.

    Du hast geschrieben, dass Du damit SCHNELL etwas finden kannst.

    Und das ist schon mal das erste Problem beim Programmieren, vor allem, wenn man damit beginnen möchte.

    Man sollte sich die Zeit nehmen, die es braucht. Die Geschwindigkeit kommt später von ganz alleine.

    Und ein "Nachteil" Deiner Excel-Tabelle ist, dass Du nun zwei Nachschlagewerke benötigst, die auch immer auf dem aktuellen Stand sein sollten. Denn welche Parameter und Rückgabewerte eine EEP-Funktion hat, weißt Du, ohne im Handbuch nachzuschauen, nicht.

    Ich kann nur immer wieder das Lua Online Handbuch hier im Forum empfehlen.

    Dieses ist immer aktuell und durch die Gliederung nach Funktionsgruppen lässt sich jede EEP-Lua-Funktion, inclusive der Parameter und Rückgabewerte und oft mit kleinem Skript-Beispiel, finden.

    Auch hat Fried in den Grundlagen vieles erklärt und auch einige Dokumentationen zum Erlernen der Lua-Grundkenntnisse genannt.

    Und wenn Du dann einige Grundkenntnisse hast, lohnt sich auch immer wieder der Blick in fertige Lua-Skripte, um zu sehen, wie ein anderer Dein Problem gelöst hat.

    Und nicht nur das Skript kopieren, sondern auch versuchen die Funktion zu verstehen.

    Nur musst Du beachten, dass Du nicht immer nur die Skripte eines Autors anschaust. Denn schnell gewöhnt man sich dann Dinge an, die dieser Autor als gut empfindet, aber manchmal anders, besser, einfacher und performance- und resourcenschonender zu lösen wären.

    Ich wünsche Dir viel Erfolg und Spaß mit Lua.

    Und leider wird es auch manchmal den unvermeidlichen Frust geben. Davon solltest Du Dich aber nicht abschrecken lassen.

    Jürgen

    EEP: 12.1, 13.2, 14.1, 15.1, 16.4 (z.Zt. installiert aber nur für Tests im Einsatz)

    keinerlei externe Zusatztools und manuell manipulierte Anlagendateien

    Prozessor: Intel(R) Core(TM) i5-4460S CPU @ 2.90 GHz 2.90 GHz
    PC: RAM 12 GB, Windows 10 Home, 64 Bit
    GK: NVIDIA Geforce GT 730, 4 GB

    Edited 2 times, last by JuergenSchm (November 19, 2023 at 7:55 AM).

  • Ich hatte zu Beginn von Lua bei EEP keine Ahnung von Lua.

    Meine ersten Versuche habe ich damit gemacht, das ich Scripte aus dem Wizzard erweitert habe, Immer nur eine Zeile dazu geschrieben und beobachtet, was passiert.

    So habe ich es mir bei gebracht. Und aus dem Forum habe ich viel gelernt.

    Gruss

    Peter

    Betriebsystemname: Microsoft Windows 11 Pro

    Prozessor:Prozessor AMD Ryzen 7 7700X 8-Core Processor, 4501 MHz, 8 Kern(e), 16 logische(r) Prozessor(en)

    PC:RAM 32 GB, Name NVIDIA GeForce RTX 4070 Ti

    EEP 17 mit allen Plug ins und Patches

    Modelkonverter, Home-Nostruktor 16.0, Modellkatalog, Bodentextur Tool

  • Das sind schon viele gute Tipps. - Lass Dir einfach Zeit und experimentiere herum. Als Basis kannst Du dazu gut die Tutorial verwenden. Ob Du jemals alle 187 Variable und Funktionen verwendest, halte ich für fraglich. (Wusste gar nicht, dass es so viele sind!) - Ich empfehle Dir auch mit NotePad++ (kostenlos im Internet) zu programmieren. Eine Lua.xml für Notepad++ findest Du hier unter "Kostenfrei" usw.

    EEP 3, EEP 5, EEP 8, EEP 14; EEP 16.4 Expert (x64), PlugIns: 2, EEP 17.2 Expert (x64) Patch 1, Plugins: 1,2

    ModellKatalog, Tauschmanger, ModellMultipier, Tauscher, Notepad++

    Windows 10 Home 64-bit

    Intel(R) Core(TM) i5-10400F CPU @ 2.90GHz (12 CPUs), ~2.9GHz Memory: 64,0 GB, NVIDIA GeForce GTX 1660 SUPER

  • Hallo und danke an alle,

    ich denke, hier habe ich erstmal Einiges, womit ich arbeiten und lernen kann.

    JuergenSchm natürlich will ich mit meiner Tabelle kein neues HB schreiben. Das ist vielmehr meine Methode, ein für mich vollkommen neues Programm zu lernen - erstmal gucken, was ist überhaupt möglich. Wenn ich nicht weiß, dass mein Auto Nebelscheinwerfer hat, werde ich nie auf die Idee kommen, nach dem Schalter dafür zu suchen :) :) :)

    Dass ich nicht auf das HB verzichten kann und will ist schon daran zu erkennen, dass ich ja in der letzten Spalte den Verweis auf die entsprechende Seite im HB habe.

    Also frisch an's Werk, der Winter ist lang und das Boot steht in der Halle.

    Grüße von der Insel

    Micha

    :aq_1:Grüße von der Sonneninsel Usedom

    Micha

    EEP 17, Win 10pro (mit TeamViewer15), 64 Bit, Lenovo i7-3770, 16GB RAM, 256-er SSD, 2TB HDD

    NVIDIA GT 640, 2 GB, Samsung curved 27''

    "Wer etwas will, sucht Wege --- wer etwas nicht will, sucht Gründe!!!" (H. Kostial)

    "Humor ist der Knopf, der verhindert, dass uns der Kragen platzt!" (Joachim Ringelnatz)

  • Hallo Micha 56 ,

    auch von mir ein Willkommen unter den "Mondsüchtigen"!

    Hier wurde dir ja schon das Online-Lua-Handbuch als das aktuellste empfohlen.

    Das PDF-Handbuch ist - bis auf wenige Textkorrektur - genauso aktuell. Neue Lua-Funktionen gibt es mit neuen EEP-Versionen und/oder neuen Plug-ins. Parallel dazu werden beide Versionen aktualisiert. Die PDF-Version hat gegenüber der Online-Version ein paar Vorteile. Sie besteht aus 3 Teilen - Funktionen und Variablen, Grundlagen und Beschreibung der Tutorialanlagen - zwischen denen man über Links hin und her pendeln kann. Ebenso gibt es Links in das Online-Lua-Handbuch.
    Jede der 3 PDFs besitzen Lesezeichen, was das Suchen neben der Suchfunktion der PDF-Reader vereinfacht. Den größten Vorteil sehe ich aber darin, dass der Teil mit den Funktionen und Variablen ein Stichwortregister besitzt. Dies nur zu deiner Info, falls du das noch nicht wusstest.

    Fried
    August 25, 2023 at 6:04 PM

    Ich wünsche dir auf jeden Fall, viel Spaß beim Programmieren mit Lua.

    Fried-liche Grüße:aq_1:

    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr.

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.2.1 Plug-in 1 + 2; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Hallo Fried ,

    danke für den Link, die 3 HB hatte ich mir sogar schon in meinen Ordner Lua_lernen gelegt, bin aber natürlich in den letzten 5 Tagen (die ich mich erst mit Lua beschäftige) noch nicht dazu gekommen, mir alles anzusehen.

    Beim Schreiben meiner Excel-Datei bin ich wieder auf ein Problem gestoßen, das in einer Frage von Gleiser in 08/2020 angesprochen wurde- Halt in Bahnsteigmitte (auch wenn ich keine Ahnung habe, lese ich hier ab und zu mal mit). Beim Durchgehen aller Funktionen habe ich festgestellt, dass sich alle möglichen Eigenschaften aus sämtlichen Resourcen mit Get auslesen bzw. mit Set eintragen lassen.

    Ich weiß, als Greenhorn stehen mir solche Ideen noch nicht zu, aber meine Überlegung:

    Die Entfernungen Haltepunkt und Vorsignal können durch mich verändert werden und stehen somit (nehme ich an) im Script des zugehörigen Signals.

    Wenn es jetzt die 2 Funktionen z.B.:

    - EEPSetSignalDistanceStop()

    - EEPSetSignalDistanceBrake()

    gäbe, dann könnte man doch mit EEPGetTrainLenght() die Zuglänge des einfahrenden Zuges ermitteln und über

    - (Bahnsteiglänge/2) - (Zuglänge/2) = Halteabstand

    - (120 m / 2) - (50 m / 2) = 35 m

    den Wert an EEPSetSignalDistanceStop() übergeben (das Signal steht hier am Ende des Bahnsteigs)

    und modifiziert auch für EEPSetSignalDistanceBrake()

    Damit würde jeder Zug genau in der Mitte des Bahnsteiges halten und man müsste nicht mit unsichtbaren Signalen experimentieren. Wenn ein Zug mal länger als der Bahnsteig sein sollte:

    - else :)

    EEPSetSignalDistanceStop(0815, 0)

    Das wäre doch mal eine lohnenswerte Aufgabe für die Programmierer. Die obligatorisch zugehörigen Get-Funktionen müssten nicht mal sein, da sie im Moment für mich keine sinnvolle Aufgabe hätten.

    Grüße von der Insel

    Micha

    Ps.: habe übrigens das 1. Script ausprobiert: Zug fährt nacheinander auf Gleis 1, 2, 3, 4 und dann wieder auf Gleis 1

    :aq_1:Grüße von der Sonneninsel Usedom

    Micha

    EEP 17, Win 10pro (mit TeamViewer15), 64 Bit, Lenovo i7-3770, 16GB RAM, 256-er SSD, 2TB HDD

    NVIDIA GT 640, 2 GB, Samsung curved 27''

    "Wer etwas will, sucht Wege --- wer etwas nicht will, sucht Gründe!!!" (H. Kostial)

    "Humor ist der Knopf, der verhindert, dass uns der Kragen platzt!" (Joachim Ringelnatz)

  • Hallo Micha 56 ,
    ob als ‘Greenhorn‘ oder ‘EEP-Freak‘, jedem steht es zu sich über Probleme Gedanken zu machen und Lösungsvorschläge vorzutragen.
    Es ist ja nicht auszuschließen, dass Kenntnissen aus EEP-fremden Gebieten, die sich nach EEP übertragen lassen zu vorher nicht erkannten Lösungen führen können.

    Mit 'nem bähnlesmäßigen Gruß,
    Michael

    EEP 17.2_1,2

  • Hallo Micha 56 ,

    als Greenhorn stehen mir solche Ideen noch nicht zu,

    warum nicht? Gerade als Greenhorn, die vermeintlich Schlaueren sehen oft vor lauter Bäumen den Wald nicht oder haben sich eine Krücke gebaut.

    EEPSetSignalStopdistance wurde schon öfters diskutiert und als Wunsch geäußert, zuletzt vor noch nicht allzu langer Zeit. Schauen wir mal was die Zukunft bringt.

    Ich nehme mal an, dass du mit EEPSetSignalDistanceBreak den Abstand vom Vor- zum Hauptsignal meinst. Ich persönlich würde eine solche Funktion EEPSetDistantsignalDistance nennen, aber Funktionsnamen legen letztendlich eh die Entwickler fest.

    Es gibt übrigens hier seit kurzem einen eigenen Faden für Lua-Wünsche, damit die nicht untergehen. EEPSetSignalStopdistance steht da (noch) nicht drin, wohl aber auf meiner internen Liste.

    Noch ein Wort zu dem Wunsch Züge in der Bahnsteigmitte halten zu lassen. Die meisten Züge halten NICHT mittig zum Bahnsteig, da sie zwingend am Haltesignal bzw. der Haltetafel halten MÜSSEN. Nur wenn so etwas nicht existiert, dann versuchen die Lokführer an der besten Position für die ein- bzw. aussteigenden Passagiere zu halten. Muss nicht die Mitte sein, da auch die Ausgänge nicht immer mittig sind. Wichtig dabei ist, dass der Zug nicht über das Bahnsteigende hinausragt. Siehe hierzu:

    YouTube-Fund

    Fried-liche Grüße:aq_1:

    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr.

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.2.1 Plug-in 1 + 2; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Ich nehme mal an, dass du mit EEPSetSignalDistanceBreak den Abstand vom Vor- zum Hauptsignal meinst.

    richtig interpretiert :) ich meine den Punkt, an dem der Zug anfängt zu bremsen (brake, hatte mich verschrieben)

    ansonsten kann man ja, wenn sich z.B. der Hauptausgang nicht in Mitte befindet, individuell in der Rechnung einen festen Wert zu- oder abrechnen.

    Ansonsten danke für die Rückmeldungen

    Gruß Micha

    :aq_1:Grüße von der Sonneninsel Usedom

    Micha

    EEP 17, Win 10pro (mit TeamViewer15), 64 Bit, Lenovo i7-3770, 16GB RAM, 256-er SSD, 2TB HDD

    NVIDIA GT 640, 2 GB, Samsung curved 27''

    "Wer etwas will, sucht Wege --- wer etwas nicht will, sucht Gründe!!!" (H. Kostial)

    "Humor ist der Knopf, der verhindert, dass uns der Kragen platzt!" (Joachim Ringelnatz)

  • (brake, hatte mich verschrieben)

    Nein, ich hatte mich verschrieben, du hattest es richtig.

    wenn sich z.B. der Hauptausgang nicht in Mitte befindet, individuell in der Rechnung einen festen Wert zu- oder abrechnen.

    Ich weiß, wenn man anfängt, will man alles programmieren. Muss man aber nicht. Einfach eine H-Tafel aufstellen oder ein Zwergsignal. Es muss nicht immer Kaviar Lua sein (frei nach Johannes Mario Simmel)

    Gute Nacht und ...

    Fried-liche Grüße:aq_1:

    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr.

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.2.1 Plug-in 1 + 2; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • War ja nur mal so eine Idee

    Ansonsten bis -- wer weiß?? (sicher bald)

    Gruß Micha

    :aq_1:Grüße von der Sonneninsel Usedom

    Micha

    EEP 17, Win 10pro (mit TeamViewer15), 64 Bit, Lenovo i7-3770, 16GB RAM, 256-er SSD, 2TB HDD

    NVIDIA GT 640, 2 GB, Samsung curved 27''

    "Wer etwas will, sucht Wege --- wer etwas nicht will, sucht Gründe!!!" (H. Kostial)

    "Humor ist der Knopf, der verhindert, dass uns der Kragen platzt!" (Joachim Ringelnatz)

  • der nächste Admin, der das liest, kann dieses Thema also gern als gelöst schließen

    Der Rest ist meine Winterbeschäftigung (und länger)

    Danke an alle

    :aq_1:Grüße von der Sonneninsel Usedom

    Micha

    EEP 17, Win 10pro (mit TeamViewer15), 64 Bit, Lenovo i7-3770, 16GB RAM, 256-er SSD, 2TB HDD

    NVIDIA GT 640, 2 GB, Samsung curved 27''

    "Wer etwas will, sucht Wege --- wer etwas nicht will, sucht Gründe!!!" (H. Kostial)

    "Humor ist der Knopf, der verhindert, dass uns der Kragen platzt!" (Joachim Ringelnatz)

  • Hallo Micha 56 ,

    bevor du dich in deiner ‘Winterstudierbude‘ verbarrikadierst ein kleiner Tipp: Wenn du die Funktionen in der Praxis einsetzt, wirst du feststellen dass es in EEP schon mal vorkommt, dass zwischen Theorie und Praxis ‘Merkwürdigkeiten‘ auftreten, oder man erkennt nicht direkt alle Möglichkeiten einer Funktion. Um hier nicht überrascht zu werden, habe ich mir zu einigen Funktionen kleine Beispiel-Szenarien gebaut und mir darin die Möglichkeiten der Funktion angesehen. Das mag zwar nach einer arbeitsintensiven Methode aussehen, zeigt sich aber später in der Anwendung als durchaus vorteilhaft.

    Mit 'nem bähnlesmäßigen Gruß,
    Michael

    EEP 17.2_1,2

  • Hallo Michael_W ,

    danke für den Tipp, da bin ich gerade dabei. Ich baue sowieso alle Strecken aus den Tutorials erst nach und schreibe dann darin die entsprechenden Scripte.

    Gruß Micha

    :aq_1:Grüße von der Sonneninsel Usedom

    Micha

    EEP 17, Win 10pro (mit TeamViewer15), 64 Bit, Lenovo i7-3770, 16GB RAM, 256-er SSD, 2TB HDD

    NVIDIA GT 640, 2 GB, Samsung curved 27''

    "Wer etwas will, sucht Wege --- wer etwas nicht will, sucht Gründe!!!" (H. Kostial)

    "Humor ist der Knopf, der verhindert, dass uns der Kragen platzt!" (Joachim Ringelnatz)

  • Hallo Micha 56 ,

    bevor ich hier wunschgemäß schließe, noch ein Hinweis. Die in EEP mitgelieferten Lua-Tutorials sind schon etwas älter. Zum Teil gibt es neuere Funktion mit denen man das ein oder andere besser/einfacher/anders lösen kann.

    Viel Spaß mit deiner Winterbeschäftigung.

    Fried-liche Grüße:aq_1:

    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr.

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.2.1 Plug-in 1 + 2; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Fried November 20, 2023 at 2:10 PM

    Closed the thread.
  • Fried November 20, 2023 at 2:11 PM

    Added the Label Closed
  • Fried November 20, 2023 at 2:11 PM

    Added the Label Fixed