Jump to content

Mehrere Bedingungen in einer Liste speichern


Empfohlene Beiträge

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 von Wüstenfuchs
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von EASY
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

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

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

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

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

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

Hallo,

vor 1 Stunde schrieb Wüstenfuchs:

oder wir gaben irgendwie aneinander vorbeigeredet

... sehe ich auch so9_9 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

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

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...