Wüstenfuchs Geschrieben 25. Februar Teilen Geschrieben 25. Februar (bearbeitet) Hallo EV und Lua Spezialisten, die Kurzen von mir Arbeiten an der EV einer Anlage und haben da ein Problem, dass weder ich noch meine Tochter für sie zufriedenstellend lösen kann. Es geht dabei um eine Steuerung für einen Schattenbahnhof, sobald alle Gleise einer Gleisharfe besetzt sind soll ein zufälliger Zug aus dieser Gleisharfe Ausfahren. Das ist eigentlich kein Problem, aber die Kids wollen das über Schlagwort mit einen Befehl für alle Gleisharfen lösen und hier liegt der Hase im Pfeffer, die Gleisharfen haben verschieden viele Gleise. Ursprünglich war die Idee die Ausfahrsignale der einzelnen Gleisharfen in einer Liste zu Speichern und dann über eine Bedingung abzufragen ob diese alle Besetzt sind, was aber nicht so einfach funktioniert. Die ursprüngliche Bedingung sah dann in etwa so aus: Bedingung: Fahrzeug steht auf Gleis / Gleiskontakt Fahrzeug: Beliebig Gleiskontakt: Liste: ([Auslöser] Signale) Index: 1 - ([Auslöser] Index) Hat da einer von Euch eine Idee wie das über die Grafische EV oder Lua mit nur einen Befehl und möglichst nur einer Bedingung geht? Danke im voraus Bearbeitet 25. Februar von Wüstenfuchs Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
EASY Geschrieben 25. Februar Teilen Geschrieben 25. Februar (bearbeitet) Hallo, vor einer Stunde schrieb Wüstenfuchs: ... oder Lua mit nur einen Befehl und möglichst nur einer Bedingung geht? In lua könnte es so aussehen... local signale=layout:getEntitiesByKeyword("Ausfahten HBF1")-- alle Signale mit dem Schlagwort local n=0 --Hilfszähler for i,s in ipairs(signale)do -- Widerholung für alle Signale if #layout:getVehiclesOn(s)~=0 then -- Signal besetzt? (mindestens ein Fahrzeug steht auf Gleiskontakt vom Signal) n=n+1 -- Zähler hochzählen end end if n==#signale then -- alle Signale besetzt? (Hilfszähler=Anzahl der Signale) signale[math.random(1,n)].state=1 -- zufälliges Signal auf 1 setzen end Gruß EASY Bearbeitet 25. Februar von EASY Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Wüstenfuchs Geschrieben 26. Februar Autor Teilen Geschrieben 26. Februar Hallo @EASY, sehe ich das richtig vor 18 Stunden schrieb EASY: local signale=layout:getEntitiesByKeyword("Ausfahten HBF1")-- alle Signale mit dem Schlagwort ist in Deinen Beispiel der Auslöser? Ich werde das mal in einer Testanlage probieren und mich dann noch mal Melden. Danke im Namen der Kurzen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
EASY Geschrieben 26. Februar Teilen Geschrieben 26. Februar Hallo, vor 21 Minuten schrieb Wüstenfuchs: ist in Deinen Beispiel der Auslöser? ... das ist nicht der Auslöser sondern eine Aktion. In Deiner Anfrage hast Du nicht definiert, welches Ereignis die Aktionen auslösen soll... Gruß EASY Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Wüstenfuchs Geschrieben 26. Februar Autor Teilen Geschrieben 26. Februar vor 28 Minuten schrieb EASY: In Deiner Anfrage hast Du nicht definiert, welches Ereignis die Aktionen auslösen soll... Stimmt, hatte ich vergessen der Auslöser ist Fahrzeug betritt Gleiskontakt mit Schlagwort "Gleisharfe SBf". Ich bin gerade nicht zu Hause, wenn ich heute Abend zurückkomme lade ich noch mal die Ursprüngliche Testanlage hoch. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
EASY Geschrieben 26. Februar Teilen Geschrieben 26. Februar Hallo, vor 3 Stunden schrieb Wüstenfuchs: Stimmt, hatte ich vergessen der Auslöser ist Fahrzeug betritt Gleiskontakt mit Schlagwort "Gleisharfe SBf". wenn der Gleiskontakt der des Ausfahrtsignals ist, dann brauchst Du nur noch das Schlagwort (und evtl. die Signalstellung) in dem Skript anpassen und als Aktion "Skript ausführen" wählen, dann wird, wenn die Gleisharfe voll ist, der nächste Zug gestartet. Gruß EASY Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Wüstenfuchs Geschrieben 26. Februar Autor Teilen Geschrieben 26. Februar Hallo @EASY , irgendwie bin ich wohl zu Dämlich oder wir gaben irgendwie aneinander vorbeigeredet. Mit Deinen Lua Eintrag fährt nur jemand aus wenn alle Gleisharfen besetzt sind. Die ursprüngliche Idee der Kurzen war es das alle Gleisharfen mit nur einen Befehl gesteuert werden, also sobald eine voll fährt ein Zug aus ihr aus. Ich werde wie heute Mittag schon angekündigt meine Testanlage anhängen. In der unteren Gleisharfe funktioniert meine EV aber nicht in der oberen, da diese ein Gleis weniger hat. Witziger Weise haben die Kids für ihre Schattenbahnhöfe aber 10 Gleisharfen mit zwei bis acht Gleisen geplant. Test Ausfahrt.mbp Gruß Ein von seinen Neffen und Nichten genervter Wüstenfuchs Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Goetz Geschrieben 26. Februar Teilen Geschrieben 26. Februar Hallo @Wüstenfuchs, selbstverständlich müssen die beiden (resp. alle zehn) Schattenbahnhöfe verschiedene Schlagworte haben. Du willst doch jeden Sbf unabhängig steuern. Für jeden individuell untersuchen, ob er voll ist oder nicht. Dieses Schlagwort hinterlegst du (als Text!) im Kontakt, der die Untersuchung auslöst. Wird der Kontakt überfahren, dann holst du das Schlagwort aus der Variablen und benutzt es für die Untersuchung, ob alle Gleise mit diesem Schlagwort besetzt sind. Viele Grüße Götz Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
EASY Geschrieben 26. Februar Teilen Geschrieben 26. Februar Hallo, vor 1 Stunde schrieb Wüstenfuchs: oder wir gaben irgendwie aneinander vorbeigeredet ... sehe ich auch so nachdem ich die Testanlage gesehen habe. ... die jeder Gleisharfe entsprechenden Ausfahrtsignale sind ja in den Gleiskontakten netterweise schon hinterlegt... so würde dann "Gleiskontakt mit dem Schlagwort Gleisharfe SBf" wird betreten aussehen... local signale=contact.variables["Signale"]-- alle Ausfartsignale der Gleisharfe local n=0 --Hilfszähler for i,s in ipairs(signale)do -- Widerholung für alle Signale if #layout:getVehiclesOn(s)~=0 then -- Signal besetzt? (mindestens ein Fahrzeug steht auf Gleiskontakt vom Signal) n=n+1 -- Zähler hochzählen end end if n==#signale then -- alle Signale besetzt? (Hilfszähler=Anzahl der Signale) FS=contact.variables["Fahrstraßen"] local x=math.random(1,#FS) FS[x].autoActivate=true FS[x].active=true end Hat zumindest im Versuch einmalig funktioniert... die EV verfängt sich allerdings in einer Endlosschleife bei "Lok Einfahrt"... das habe ich allerdings nicht untersucht woran das liegt... Gruß EASY Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Wüstenfuchs Geschrieben 27. Februar Autor Teilen Geschrieben 27. Februar Hallo @EASY, das klappt super. Danke für die schnelle Hilfe. vor 21 Stunden schrieb EASY: die EV verfängt sich allerdings in einer Endlosschleife bei "Lok Einfahrt"... das habe ich allerdings nicht untersucht woran das liegt... Das habe ich auch schon gemerkt, ich habe den EV Eintrag einfach rausgeschmissen und nehme den Eintrag für das neu schreiben der Einfahrtsliste als Lock. Damit passiert das nicht mehr. vor 22 Stunden schrieb Goetz: selbstverständlich müssen die beiden (resp. alle zehn) Schattenbahnhöfe verschiedene Schlagworte haben. Du willst doch jeden Sbf unabhängig steuern. Für jeden individuell untersuchen, ob er voll ist oder nicht. Also ich will da gar nichts, wie in meinen ersten Beitrag erwähnt ist die EV für unsere Kids und was die sich dabei gedacht haben entzieht dich meiner Kenntnis. Allerdings haben die öffters tolle Ideen bei den man graue Haare und manchmal fast einen Herzinfarkt bekommt. 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