Jump to content

Wie man die Kupplungen am äußeren Ende eines Zuges deaktiviert.


Empfohlene Beiträge

Das Titelthema, welches @Phrontistes und @EASY an anderer Stelle angesprochen haben, schien mir eine Tutorial Anlage wert.
Der Thread von Phrontistes hat aber grundsätzlich ein anderes Thema. Deshalb habe ich hierfür einen neuen gestartet.

Unter der Content-ID F1B12254-098F-433A-9B24-BA2FB89A0E59 findet ihr jetzt eine Anlage, die zwei mögliche Wege aufzeigt:

"per Wiederholung" durchläuft alle Fahrzeuge im Zug und setzt jede Kupplung auf aktiv oder inaktiv, je nachdem ob ein Fahrzeug angekuppelt ist oder nicht.

local t = layout:getVehicleGroup(vehicle)

for k, v in ipairs(t) do
    v.couplers[0].enabled = v.couplers[0].connectedCoupler ~= nil
    v.couplers[1].enabled = v.couplers[1].connectedCoupler ~= nil
end

 

"gezielt" spricht nur die beiden äußeren Kupplungen an. Dazu nutzt es die Ausrichtung der beiden Fahrzeuge relativ zur Fahrtrichtung um zu unterscheiden ob jeweils die vordere oder hintere Kupplung außen liegt. Die mathematische Umwandlung der Ausrichtung in den Index für die richtige Kupplung erspart die if-Unterscheidungen.

local t, t2 = layout:getVehicleGroup(vehicle)

local ersterWagen  = t[1]
local letzterWagen = t[#t]

local ersteKupplung  = (1 - t2[1]) // 2
local letzteKupplung = (1 + t2[#t]) // 2

ersterWagen.couplers[ersteKupplung].enabled = false
letzterWagen.couplers[letzteKupplung].enabled = false

"local" hält die Variablen bis zum Ende der Berarbeitung im CPU-nahen Speicher und gibt den Bereich nach Ausführung der Funktion automatisch frei.
Macht für den Ablauf keinen bemerkbaren Unterschied. Hat aber bei großen Programmen den zusätzlichen Nutzen, dass es gegen ungewollte Überschneidungen bei Variablennamen absichert.

Beide Konzepte gehen auf Vorschläge von Phrontistes und EASY zurück.
Und beide leisten dasselbe. (Deshalb ist nur eins der beiden Ereignisse aktiv.)

Außerdem hat die Anlage einen Knopf, der auf dem gelben Gleisabschnitt alle Kupplungen aktiviert.
Vielleicht möchtet ihr ja gerne eigene Konzepte ausprobieren und vergleichen.

Viele Grüße
Götz

Bearbeitet von Goetz
Variablen "local" gesetzt
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...