Jump to content
Zum Start hinzufügen

Weitere Informationen

3D-Modellbahn Studio

Eine Vollbild-App auf Ihrem Startbildschirm mit Push-Benachrichtigungen und mehr.

So installieren Sie diese App auf iOS und iPadOS
  1. Tippen Sie auf das Teilen-Symbol in Safari
  2. Scrollen Sie durch das Menü und tippen Sie auf Zum Startbildschirm hinzufügen.
  3. Tippen Sie oben rechts auf Hinzufügen.
So installieren Sie diese App auf Android
  1. Tippen Sie auf das 3-Punkte-Menü (⋮) in der oberen rechten Ecke des Browsers.
  2. Tippen Sie auf Zum Startbildschirm hinzufügen oder App installieren.
  3. Bestätigen Sie durch Tippen auf Installieren.

Empfohlene Beiträge

Geschrieben

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

fs ohne verz.jpg

fs mit verz.jpg

Geschrieben

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

Geschrieben
  • Autor

Ok. Danke @Eggu

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Push-Benachrichtigungen konfigurieren

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.