Hallo
Ich wollte Euch gerne ein kleines Beispiel-Lua-Script zur Verfügung stellen in dem man eine Zeit in Sek. angeben kann und nach diesem Zeitinterval ein Fahrzeug aus dem Depot ausgespuckt wird, wenn die Fahrstrasse vor dem Depot frei ist und, das war mir wichtig, auch ein Fahrzeug im Depot auf Wartend steht.
Mal ein bischen Vorgeschichte.
Ich bin noch nicht lange mit EEP beschäftigt, sauge im Moment noch alles in mich auf was ich an Informationen über EEP finde, hier im Forum und auf anderen Seiten.
Schriftform, Videos, Beispiele usw.
Versuche das mir Angeeignete in runtergeladenen Anlagen umzusetzen, baue andere Steuerungen ein mittels Lua, versuche zu automatisieren und gleichzeitig den manuellen Spielspaß einer Anlage nicht zu vernachlässigen.
Mit Neu bauen habe ich mich noch nicht beschäftigt, außer mit den Tutorial Videos die mit EEP 13 mitkamen. Mir ist erstmal das realisieren einer Steuerung wichtiger, bauen kann ich immer noch und dann kann ich es wenigstens auch steuerbar machen.
Was mich jetzt dazu bewegt hat dieses kleine Script zu entwickeln, was sicher nicht perfekt ist und evtl. finde ich hier auch noch Verbesserungsanmerkungen...wer weiß.
Ich hatte immer ein Problem damit Zeitgesteuert ein Fahrzeug aus einem Depot zu bekommen.
Einmal war das Depot leergelaufen weil der Zeittakt viel zu niedrig war, das andere mal war der Block vor dem Depot noch nicht freigegeben und der Zug wurde trotzdem ausgespuckt...wenn ich die Zeit ändern wollte musste ich dies entweder im Depot machen oder wenn ich es über Signal und Kontaktpunkt steuerte über die Kontaktpunkte, die immer zu finden und ggf. mal einen zu vergessen, außerdem musste ich da immer in den Editiermodus was mir auch nicht so zugesagt hat.
So...nun aber mal zu dem kleinen Script.
Es ist aus einer kleinen Beispielanlage die ich dazu gebaut habe, wenn einer daran interesse hat müsste ich schauen wie ich die hier hochladen könnte oder wie da vorzugehen ist.
Das Script sollte selbsterklärend sein, jedenfalls für die die sich etwas mit Lua beschäftigen. Ich habe auch so gut es geht Kommentare im Script hinterlassen.
-
- clearlog()
- print("Zeitgesteuerte Depotausfahrt mit Fahrstrasse und Lua")
- Zeit_DP1 = 28
- Zeit_DP2 = 28
- t1 = 0
- t2 = 0
- timer = 0
- function EEPMain()
- timer = timer + 1
- if (EEPGetSignal(13) == 1) and (timer%5 == 0) then
- DepotZeitAusfahrt()
- end
- return 1
- end
- function DepotZeitAusfahrt()
- t1 = t1 + 1
- if t1 == Zeit_DP1 then
- Anzahl_DP1 = EEPGetTrainyardItemsCount(1)
- print("es sind ",Anzahl_DP1," Züge im Depot 1")
- Wartend_DP1 = false
- for w1 = 1,Anzahl_DP1 do
- if EEPGetTrainyardItemStatus(1,"",w1) == 1 then
- Wartend_DP1 = true
- end
- end
- if Wartend_DP1 then
- EEPSetSignal(11,2)
- t1 = 0
- end
- end
- t2 = t2 + 1
- if t2 == Zeit_DP2 then
- Anzahl_DP2 = EEPGetTrainyardItemsCount(2)
- print("es sind ",Anzahl_DP2," Züge im Depot 2")
- Wartend_DP2 = false
- for w2 = 1,Anzahl_DP2 do
- if EEPGetTrainyardItemStatus(2,"",w2) == 1 then
- Wartend_DP2 = true
- end
- end
- if Wartend_DP2 then
- EEPSetSignal(9,2)
- t2 = 0
- end
- end
- if t1 == Zeit_DP1 then
- t1 = 0
- end
- if t2 == Zeit_DP2 then
- t2 = 0
- end
- end
Display More
Die Fahrstrasse ist vor dem Depot...meistens bis zum nächsten Blocksignal. Das Ausgangsfahrtsignal das bei einer Fahrstrasse mit angegeben wird ist im Depot eingetragen und regelt den Ausstoß.
Das Script versucht die Fahrstrasse zu schalten wenn es ein wartendes Fahrzeug im Depot gefunden hat, ist die Fahrstrasse frei geht das Ausgangsfahrtsignal auf Fahrt und das Depot spuckt das Fahrzeug aus, ist die Fahrstrasse belegt wird auch nicht das Ausgangsfahrtsignal auf Fahrt geschaltet und es kommt kein Fahrzeug aus dem Depot.
Vielleicht kann der Ein oder Andere ja etwas damit anfangen, vergleichbares habe ich bis jetzt nicht gefunden.
Gruß Joachim
Edit: Da ist mir ja tatsächlich noch ein Fehler im Script aufgefallen anstatt
- if EEPGetTrainyardItemStatus(1,"",Anzahl_DP1) == 1 then
- und
- if EEPGetTrainyardItemStatus(2,"",Anzahl_DP2) == 1 then
- muß es
- if EEPGetTrainyardItemStatus(1,"",w1) == 1 then
- und
- if EEPGetTrainyardItemStatus(2,"",w2) == 1 then
heißen.
Habe dies im oberen Script korrigiert.
Sorry 