jloos Geschrieben 4. Mai Teilen Geschrieben 4. Mai Hallo, ich versuche mich in Lua einzuarbeiten, indem ich in der grafischen EV die Abläufe erstelle und dann in Lua umwandle und den Code ergänze. In dem Beispiel ist "H/V Hauptsignal 1" nur ein Platzhalter, wird im script durch "Signal = route.waypoints[1]" ersetzt. Wenn ich die grafische EV "fs ohne verz.jpg" in ein script umwandle sieht das so aus: if not deferredCall then if route.active then $("H/V Hauptsignal 1").state = 1 defer(2, "Verzögerung") end elseif deferredCall == "Verzögerung" then $("H/V Hauptsignal 1").variables["Abfahrsignal"].state = 2 defer(2, "Verzögerung (2)") elseif deferredCall == "Verzögerung (2)" then $("BDE Türen schließen"):invoke(1, 0, $("H/V Hauptsignal 1").variables["Zug"]) $("H/V Hauptsignal 1").variables["Abfahrsignal"].state = 1 defer(2, "Verzögerung (3)") elseif deferredCall == "Verzögerung (3)" then local v = $("H/V Hauptsignal 1").variables["Zug"] if v:hasEngine() then v.targetSpeedAbs = 50 end end Die Zeile $("H/V Hauptsignal 1").state = 1 in der 3. Zeile gibt es nur ein mal. Nun füge ich eine Abfrage auf die FS 03 ein, um eine zusätzliche Verzögerung einzufügen. Wandle ich das in ein Script um, bekomme ich die Zeile $("H/V Hauptsignal 1").state = 1 zweimal. if not deferredCall then if route.active then if $("FS 03").active then defer(7, "Verzögerung") end $("H/V Hauptsignal 1").state = 1 defer(2, "Verzögerung (2)") end elseif deferredCall == "Verzögerung" then $("H/V Hauptsignal 1").state = 1 defer(2, "Verzögerung (2)") elseif deferredCall == "Verzögerung (2)" then $("H/V Hauptsignal 1").variables["Abfahrsignal"].state = 2 defer(2, "Verzögerung (3)") elseif deferredCall == "Verzögerung (3)" then $("BDE Türen schließen"):invoke(1, 0, $("H/V Hauptsignal 1").variables["Zug"]) $("H/V Hauptsignal 1").variables["Abfahrsignal"].state = 1 defer(2, "Verzögerung (4)") elseif deferredCall == "Verzögerung (4)" then local v = $("H/V Hauptsignal 1").variables["Zug"] if v:hasEngine() then v.targetSpeedAbs = 50 end end Ich möchte verstehen, warum das so ist. Gruß Jürgen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Eggu Geschrieben 4. Mai Teilen Geschrieben 4. Mai Die erste Verzögerung ergibt zwei Zweige entweder sofort "$("H/V Hauptsignal 1").state = 1" ausführen, oder zunächst 7 sek. verzögern und dann auch "$("H/V Hauptsignal 1").state = 1" ausführen. Was in der EV nach einem linearen Ablauf aussieht, ergibt bei Verzögerungen in Lua jeweils eine weitere Verzweigung (weil die Funktion verlassen wird, und nach dem Timeout erneut aufgerufen wird). Gruß Eggu Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
jloos Geschrieben 4. Mai Autor Teilen Geschrieben 4. Mai Ok. Danke @Eggu Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden