Lua Animation zeitlich versetzen

!!! 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 Jürgen, JuergenSchm

    Ich hab´s getestet und bin zu dem gleichen Ergebnis gekommen.

    Diese Schleifen halten Lua auf. Danke für diesen wichtigen Hinweis.

    Ich sehe aber keine andere Alternative grafische Abläufe in EEP zeitlich mit Lua zu trennen.

    Beispiel eine Lichthupe an, aus, an, aus ist wohl mit Lua auch nicht möglich wenn in dieser Zeit anderes geschaltet werden soll/muss.

    Andererseits ist ein Modell mit 5 Schaltachsen und 14 möglichen Schaltbefehlen die nur gemeinsam und zeitversetzt Sinn machen es Wert, dass man das über ein wiederverwendbares Luaskript programmiert und den Rest mit Schaltkringel und KPs macht.

    Anlagen dagegen werden sich in der Programmierung nicht wiederholen und man muss so oder so neu programmieren. Meine EEP-Intensionen sind Schmalspur und der Nachbau von Modellbahnanlagen. Das ist leicht mit Schaltkringel beherrschbar.

    Ich bin seit EEEC dabei und dies ist ohnehin das erste Mal wo ich mich mit EEP-Lua beschäftige. Aber es ist lehrreich, ich sehe was für mich möglich und nicht möglich ist.


    Viele Grüße Horst

    EEP 6 / 7 / 14 -TM - MK - Win 10 x64

  • Hallo Horst ( HoHe55 ),

    auch wenn's am Anfang schwer mit Lua ist, bitte nicht aufgeben!

    Ich habe mal einen "EEPMain-Timer" erstellt.

    Der Timer kann maximal 10 (das kann auch noch erhöht werden) Timer gleichzeitig laufen lassen.
    Und stoppt natürlich den Lua-Ablauf nicht.

    Der Timer hat aber noch einen gewaltigen Nachteil. Wenn die Anlage neu startet, starten auch die Timer neu.
    Eventuell möchtest Du diesen Nachteil beheben (schau mal nach speichern in Dataslot oder TagText).
    Wenn's noch zu kompliziert ist, bekommen wir das auch noch hin.

    Kurze Erklärung:

    Die Timer Funktion setzt sich aus zwei Funktionen zusammen.

    Timer definieren:
    InitTimer(TimerNr,Takte,CallFkt)
    TimerNr - die Nummer des Timers (1 ... 10) durch Änderung von MaxTimerAnzahl veränderbar
    Takte - die Laufzeit des Timers in 200 Millisekunden Takten
    CallFkt - die Funktion, die beim Ablauf des Timers gestartet werden soll

    Timerfunktion für die EEPMain
    Timer()

    Ablauf am Beispiel der Funktion Test1 erklärt:
    Der Ablauf ist in einzelne Takte aufgeteilt.
    In den Takten (nicht zu verwechseln mit den Timer-Takten) wird der Timer 1 gestartet und als Funktion, die aufgerufen wird, wenn der Timer abgelaufen ist, wird als Parameter der nächste Takt übergeben.

    Der Timer 2 der Funktion Test2 wird im letzten Takt immer wieder neu gestartet.


    Und hier nun das Skript


    Diesen einfachen Timer habe ich hier erstellt (weil mein Timer, den ich verwende zu kompliziert wäre, um ihn hier bereitzustellen).
    Nach diesem Prinzip laufen bei mir aktuell 50-60 Timer gleichzeitig.
    Diese überstehen natürlich Anlagen- oder Skript-Neustarts und können beim Timer-Ablauf noch etwas mehr.


    Wenn noch Fragen, einfach fragen.

    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 (May 1, 2024 at 6:13 PM).

  • Hallo, JuergenSchm Oh vielen Dank Jürgen:aq_1: ,

    Das ist für einen Anfänger erst mal was zum verdauen. Weil ich es nicht nur abschreiben:) kopieren möchte sondern Zeile für Zeile verstehen, das wird aber ein ganze Weile dauern.

    --------------------

    Eine eher technische Frage noch zu den EEP-Achsen. Der Wizard gibt bei z.B. Immobilien bei „Richtung a/b“ ein Zahl von 1000 +/- aus. Per KP werden aber oft nur 4 oder 5 Steps für die z.B. Drehung gebraucht. Belasten die restlichen 995 Steps EEP oder rechnet EEP dann nur bis zum Ende der Achse? Oder sollte ich im Lua-Skript den Wert so wie im KP eintragen?


    viele Grüße Horst HH

    EEP 6 / 7 / 14 -TM - MK - Win 10 x64

  • Hallo Horst ( HoHe55 ),

    das freut mich zu lesen, dass Du das Skript nicht nur kopieren wirst, sondern, dass Du die Funktionalität auch verstehen möchtest.

    Darum bin ich auch immer sehr zurückhaltend mit dem Veröffentlichen von fertigen Skripten, dieses Skript ist ja zumindest in Bezug auf das Speichern wegen einem Anlagen- oder Skript-Neustart auch noch nicht fertig. Und man könnte auch noch einige Erweiterungen, Änderungen und Flexibilitäten ergänzen.

    Aber so etwas gemeinsam erarbeiten bringt viel mehr, wenn man eine Programmiersprache erlernen möchte.

    Und vor allem sollte Zeit keine Rolle spielen, es braucht eben so lange, wie es braucht. Und "Hochgeschwindigkeits-Programmierer" gibt es schon genug.

    Wenn Du Fragen zum Skript hast, einfach fragen. gern auch per PN aber natürlich auch hier.

    ----‐

    Und zu Deiner Frage der Achsenpositionen.

    Da muss ich auch immer mal probieren. Da auch die Werte bei animierter und nicht animierter Bewegung oft andere sind. Manchmal muss man die Takte angeben, in die die Bewegung aufgeteilt ist und manchmal die absolute Position.

    Zu der 1000 bei animierter Bewegung sagt das Lua-Handbuch (ich benutze nur das Online-Lua-Handbuch hier im Forum, das sehr aktuell ist), dass dadurch eine endlose Bewegung gestartet wird. Nun gut, bei z.B. einer Tür, wird diese auch nur geöffnet oder geschlossen und nicht auf-zu-auf-... (Das ist jetzt nur eine Vermutung, ausprobiert habe ich das noch nie.)

    Wegen der Performance musst Du Dir dabei keine Gedanken machen. Ich kenne die Abläufe in EEP auch nicht, aber wenn eine Tür auf ist, wird die Animation sicherlich abgebrochen.

    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 once, last by JuergenSchm (May 1, 2024 at 8:40 PM).

  • Vielen Dank Jürgen :aq_1: JuergenSchm


    Das OnlineHandbuch habe ich nicht benutzt, weil ich EEP 14 habe und ich nie weis was neu ist und was passt.

    Bislang habe ich aber auch noch keine neue Funktion vermisst und was ich vermisse gibt es leider auch bei EEP17 nicht.

    Auf die 1000 bin ich nur gestoßen weil ich das erste Mal den Wizard benutzt habe, Das macht die Rechtschreibung von Funktionen nicht so anfällig.

    viele Grüße Horst HH

    EEP 6 / 7 / 14 -TM - MK - Win 10 x64

  • Hallo HoHe55 ,

    schau Dir wenigstens mal die Einführung in Lua im Online-Handbuch an, dort sind auch Links zu weiterführenden Informationen vorhanden.


    Gruß Holger

    Display Spoiler

    Mein Hauptrechner Marke Eigenbau:

    Hardware: Mainboard ASUS Crosshair Hero VI, CPU-Typ AMD Ryzen 9 5950X 16-Core Processor, Speicher 64 GB DDR4-RAM, Grafikkarte ASUS DUAL Geforce RTX 12GB GDDR6-RAM, 2 SSD, 4 Festplatten Gesamtkapazität 30 TB

    Betriebssystem: Windows 11 Pro Version 23H2

    EEP-Software: EEP 6, EEP 14 bis EEP 17.3 Plugin 1, 2, 3, Modellkatalog, Hugo, Höhengenerator, Tauschmanager

    Mein Youtube-Kanal

    Hier erhaltet ihr die aktuelle Demoversion Tauschmanager:af_1:

  • Hallo Horst ( HoHe55 ),

    Das OnlineHandbuch habe ich nicht benutzt, weil ich EEP 14 habe und ich nie weis was neu ist und was passt.

    am Ende unter der Zeile mit der Funktionsbezeichnung steht die EEP-Version, ab der es diese EEP-Funktion gibt.

    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

  • Hallo Horst ( HoHe55 ),

    Das ist für einen Anfänger erst mal was zum verdauen.

    unter Konversation (oben rechts auf der Seite) eine ausführlich kommentierte Version des Skriptes.

    Vielleicht unterstützt das Deine Verdauung :)

    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

  • Ok Danke, das OnlineHandbuch ist gepflegt und enthält keinen toten Link.:thumbup:

    Und man kann die Befehle kopieren das ist in der LuaEEP14 PDF nicht möglich was Schreibfehler verursacht die man beider Fehlersuche nicht leicht erkennt.

    Viele Grüße Horst HH

    EEP 6 / 7 / 14 -TM - MK - Win 10 x64

  • es gibt hier auch ein "Tutorial" über Lua.

    Das Tutorial hiess "Lua rennt"

    und so heißt es immer noch und ist hier Downloadbar:

    HoHe55 Vielleicht hilft es dir und anderen ja beim Lua-Lernen.

    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.3.0 Plug-ins 1 - 3 User + DEV; HN17; AnlVerb->17.3; MK; ME; ZE; TM; ...

  • Hallo,

    das obige Timer-Skript hat ja den Nachteil, dass dieser Timer einen Anlagen- bzw. Skript-Neustart nicht übersteht.
    Diesen Nachteil wollte ich mit Horst zusammen, später beheben.

    Wer Interesse hat und nicht warten möchte, hier das Skript schon mal vorab, welches die Timer-Werte in Immo-TagTexten speichert und aus ihnen liest und damit auch einem Neustart übersteht.

    Aktuell können 10 Timer gleichzeitig laufen.
    Das ist durch Änderung des Wertes von "gintMaxTimerAnzahl" einstellbar.
    Bei Vergrößerung des Wertes beachten, dass ein Immo-TagText maximal 1024 Zeichen speichern kann.
    Wenn man annimmt, dass der Name eines Funktionsaufrufes am Timerende durchschnittlich 20 Zeichen lang ist, dann wären rund 45 gleichzeitig laufende Timer möglich
    (ließe sich natürlich durch eine Skriptänderung und Verwendung weiterer Immos erweitern).

    Der Timer verwendet 3 Immobilien zum Speichern.
    Der Lua-Name muss in
    - gstrTimeMainZaehlerImmoID = "#1_"
    - gstrTimerEndTaktImmoID = "#2_"
    - gstrTimerCallFktImmoID = "#3_"
    eingetragen werden.

    Alle Timer können durch
    gblnTimerStop = true
    gestoppt werden und werden bei
    gblnTimerStop = false
    fortgesetzt.

    Am Ende des Skript befindet sich ein Beispiel für das Erstellen von zwei gleichzeitig laufenden Timern.

    Am Skriptanfang befinden sich die Definitionen der benötigten globalen Variablen.
    Alle Funktionen des Timers befinden sich zwischen.
    -- *** Tools ***
    -- *** Ende Timer ***

    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

  • ich habe mich vertan, bitte löschen

    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