Erwin Geschrieben 17. Februar 2020 Geschrieben 17. Februar 2020 (bearbeitet) Hallo zusammen, für meine erste Anlage hatte ich mir ein kleines Skript gebastelt zum Verbinden der Gleis-Stränge mit den GBS-Strängen. Dann bin ich über einen Beitrag von @digidampfman gestolpert, der dieses Problem ebenfalls mit einem Skript gelöst hatte. Daraufhin habe ich mein Skript angepackt, erweitert, dokumentiert und nun, da ist es. --[[ Dieses Skipt soll helfen, einen Gleisstrang (die Strecke zwischen zwei Weichen) mit dem entsprechenden GBS-Strang zu verbinden. Achtung! Vor dem Benutzen des Skripts unbedingt die Anlage sichern! Fragen zum Skript, Anregungen, Verbesserungen bitte an "Erwin". Installiert wird das Skript im Ereignismodul "Hacks" unter dem Namen "Verbinde Gleis-Strang mit GBS-Strang". Das Modul "Hacks" enthält eine Modulvariable "Gleiszähler" vom Typ Zahl. Auslöser für dieses Skript: Ein Zug/Fahrzeug betritt ein "beliebiges Gleis/Straße". Vorbereitungen: Das Gleisbild ist angelegt und das zugehörige GBS ist ebenfalls angelegt. Im GBS haben alle Gleis-Bausteine einen Namen erhalten. Namensschema ist z.B. "GBS <Strangbezeichnung>_<laufende Nummer, zweistellig, 01, 02, 03...>" Beispiel: "GBS o3_04" (4. Baustein im Strang "3o") Das Ereignismodul "GBS" sollte deaktiviert sein! Ein kleiner Zug (z.B. "ASF 139") mit dem Schagwort "Baufahrzeug" wird auf die Startweiche gesetzt. Im Skript werden die entsprechenden Variablen gesetzt (Beispiele siehe unten): Scharf_Gleisname Scharf_Schlagwort Scharf_Zielbaustein_GBS Anzahl_Gleise Gleis_Name Anzahl_GBS GBS_Name Startweiche Endweiche Die Ereignisprotokollierung wird gestartet und der Zug wird losgeschickt. Das Skript protokolliert alles, was es tut oder tun würde! Wenn das Baufahrzeug die Zielweiche erreicht hat, wird das Ereignis sicherheitshalber deaktiviert. Das Baufahrzeug kann dann weiterfahren, ohne dass es Schaden anrichtet! Zum Testen wird empfohlen, die Variablen Scharf_... auf 0 zu setzen! Ein Hinweis: Beim Setzen des Gleisnamens habe ich den alten Namen hinten angefügt. In dieser Form sollte der Name nicht mehrfach gesetzt werden! --]] -- -- Wenn Scharf_... ~= 0 ist, dann werden die Änderungen wirklich durchgeführt! -- Wenn Scharf_... == 0 ist, dann wird nur ausgegeben, was ansonsten getan werden würde! local Scharf_Gleisname = 0 local Scharf_Schlagwort = 0 local Scharf_Zielbaustein_GBS = 0 -- Die folgenden Variablen müssen für jeden Gleisstrang angepasst werden! local Anzahl_Gleise = 9 -- Anzahl Gleise des Strangs 3o local Gleis_Name = "Gleis 3o_" -- So beginnt jeder Gleis-Name des Gleis-Strangs "3o" local Anzahl_GBS = 6 -- Anzahl GBS-Bausteine des Strangs 3o local GBS_Name = "GBS 3o_" -- So beginnt jeder GBS-Baustein-Name des GBS-Strangs "3o" -- Der Strang geht von Startweiche bis Endweiche local Startweiche = "W2_5128" local Endweiche = "Kreuzung - 5114" if vehicle.variables["Baufahrzeug"] then -- Nur das Baufahrzeug darf Änderungen vornehmen!! if (oldTrack.name == Startweiche) then -- Soeben wurde die Startweiche verlassen! $("Hacks").variables["Gleiszähler"] = 0 end if (track.name == Endweiche) then self.enabled = false -- Fertig, Ereignis sicherheitshalber deaktivieren else -- Ein Gleis des Strangs wird befahren $("Hacks").variables["Gleiszähler"] = $("Hacks").variables["Gleiszähler"] + 1 -- Neuer Gleisname local Neuer_Gleisname = Gleis_Name .. string.format("%02d", $("Hacks").variables["Gleiszähler"]) .. " - " .. track.name print("\nScharf_Gleisname == " .. Scharf_Gleisname) print("Gleisname Vorher: " .. track.name .. ". Nachher: " .. Neuer_Gleisname) if Scharf_Gleisname ~= 0 then track.name = Neuer_Gleisname end -- Schlagwort für GBS-Steuerung local Schlagwort = "Gleis" print("\nScharf_Schlagwort == " .. Scharf_Schlagwort) print("Schlagwort: " .. Schlagwort) if Scharf_Schlagwort ~= 0 then track.variables["Gleis"] = keyword end -- Zielbaustein GBS local GBS_zu_Gleise = Anzahl_GBS / Anzahl_Gleise -- z.B. 4 / 8 local Zielnummer = GBS_zu_Gleise * $("Hacks").variables["Gleiszähler"] -- z.B. 0,5 1,0 1,5 2,0 ... Zielnummer = math.ceil(Zielnummer) -- z.B. 1 1 2 2 ... local Neuer_Zielbaustein_GBS = GBS_Name .. string.format("%02d", Zielnummer) -- z.B. "GBS 3o_01" "GBS 3o_02" print("\nScharf_Zielbaustein_GBS == " .. Scharf_Zielbaustein_GBS) if track.variables["GBS"] then print("Vorher: " .. track.name .. " verbunden mit " .. track.variables["GBS"].name) else print("Vorher: " .. track.name .. " nicht verbunden!") end print("Nachher: " .. track.name .. " verbunden mit " .. Neuer_Zielbaustein_GBS) if Scharf_Zielbaustein_GBS ~= 0 then track.variables["GBS"] = layout:getEntityByName(Neuer_Zielbaustein_GBS) end end end Eine Beipielanlage, mit der man das Skript ausprobieren kann, gibt es auch, hier als Anhang. Kommentare, Fragen, Verbesserungsvorschläge und (konstruktive) Kritik sind herzlich willkommen! Viele Grüße Reinhold (Erwin) Beispiel_Verbinde Gleis-Strang mit GBS-Strang.mbp Bearbeitet 18. Februar 2020 von Erwin Beispielanlage verbessert
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