Jump to content

Bei signal changed den (Signal-)Kontakt als trigger anbieten


Empfohlene Beiträge

Hallo @Neo,

bei signal changed wird der (Signal-)Kontakt nicht als trigger angeboten:

Screenshot2024-04-01234812.thumb.jpg.45b88c91888e597444a24c7c9855dc9f.jpg

Ich finde, dagegen spricht doch wirklich nichts.

Mit den vehicle (das ich mir immer als Objektvariable im Signal merke) ist es zugegebenermaßen komplizierter. Bei meinem workaround lösche ich diese Variable wieder, nachdem ich abgearbeitet habe, was ich nach signal changed noch abarbeiten will. Das lässt sich wohl nicht automatisieren - es sei denn, trigger ist in diesem Fall als letztes Fahrzeug definiert, welches  jemals den (Signal-)Kontakt betreten hat.

Beste Grüße

Phrontistes

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 9 Stunden schrieb Phrontistes:

Ich finde, dagegen spricht doch wirklich nichts.

Nicht jedes Signal besitzt einen Gleiskontakt, weshalb dieser nicht als Auslöser angegeben werden kann.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

vor 5 Stunden schrieb Neo:

Nicht jedes Signal besitzt einen Gleiskontakt

stimmt, aber bei Signalen ohne Gleiskontakt bietest Du das Ereignis signal changed erst gar nicht an, sodass sich die Frage nach dem trigger nicht stellt.

Beste Grüße

Phrontistes

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Phrontistes:

bei Signalen ohne Gleiskontakt bietest Du das Ereignis signal changed erst gar nicht an

Da verwechselst du eventuell etwas, Phrontistes.

Ein Signal ohne Kontakt ist zum Beispiel diese DKW Laterne:

SignalohneKontakt.jpg.d8845d8dd5332e16bdb8b7c0c402c38f.jpg

Und die kennt sehr wohl das Ereignis "Signal schaltet" (aber kein Ereignis "Kontakt wird betreten")

Es gibt auch Immobilien, die optisch ein Signal darstellen aber funktional kein Signal sind.
Dazu gehört diese Ampel für den Straßenverkehr:

AmpelImmobilie.jpg.42f7b260456a0391b5a4bea30ec734e2.jpg
Die kennen natürlich kein Ereignis "Signal schaltet" (aber ein Ereignis "Animation gestartet/gestoppt").

Viele Grüße
Götz

Bearbeitet von Goetz
Ergänzungen
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Phrontistes,

Ergänzung zur Aussage von @Goetz:

Die anderen Verkehrsampeln im Online-Katalog (insbesondere jene, die man an die auch dort vorhandenen Ampelmasten "anklebt") sind ebenfalls "Signale ohne Gleiskontakt", für die natürlich das Ereignis "Signal schaltet" angeboten wird.

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gut, dann formuliere ich es anders: Es ist lästig, im Ereignis signal changed eines Signal mit Gleiskontakt, eben dieses Signal händisch heraussuchen zu müssen, wenn man den Kontakt eben dieses Signals angeben will. Und allgemeingültig ist das dann natürlich auch nicht zu lösen. Allgemeingültig geht das derzeit nur, indem man sich bei jedem Betreten eines Signals mit Gleiskontakt (auch) den Kontakt merkt - wie ich das mit dem Fahrzeug bereits mache. Etwas seltsam ist es halt schon, sich im (Signal-)Kontakt den Kontakt merken zu müssen.

Beste Grüße

Phrontistes

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 58 Minuten schrieb Phrontistes:

Es ist lästig ...

Hallo Phrontistes,

Du kannst dein Vorhaben über Lua erreichen.
Oder über den Aufruf eines benutzerdefinierten Ereignisses mit Parametern (wenn es die grafische EV sein muss.)
Denn die Parameter eines benutzerdefinierten Ereignisses bekommst du in diesem Ereignis überall ungehindert als Auslöser zu fassen.

Viele Grüße
Götz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Phrontistes,

das eigentliche Problem ist nicht das Ereignis "Signal schaltet", sondern die spezielle Bedingung "Fahrzeug steht auf einem Gleis/Gleiskontakt". Dort wird zwingend ein Gleiskontakt als Auslöser erwartet, was das Ereignis "Signal schaltet" aber nicht leisten kann. Ich habe in der Vergangenheit schon andere Aktionen/Bedingungen aufgeweicht, um auf Kosten einer Vorabprüfung auch Auslöser als Gleiskontakt auswählen zu können, auch wenn zur Zeit der Ereignisdefinition nicht gesichert ist, dass es sich um ein Gleiskontakt handelt. Ein Fehler würde dann erst beim Ablauf erkannt werden. Ich kann diese Aufweichung auch hier vornehmen.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Neo,

vielleicht nur zur Erklärung und damit Du nachvollziehen kannst, dass ich hier keine theoretischen Spielereien betreibe, sondern Dein Programm intensiv nutze: Wenn bei mir (wie in obigem Beispiel) ein Eisenbahnsignal auf Fahrt schaltet, dann stets durch eine Fahrstraße. Es kann also sein, dass ein Zug auf dem Kontakt steht, es kann aber genauso sein, dass er sich erst nähert. Wenn ich eine bestimmt Aktion, z.B. einen Kamerawechsel, (erst) haben will, wenn der Zug entweder (1.) auf ein grünes Signal trifft (den Gleiskontaktakt betritt, das ist der einfache Fall) oder (2.) wenn das Signal auf grün schaltet dann brauche ich für (2.) eben nicht nur "Signal schaltet", sondern auch die Bedingung dass ein Zug zu diesem Zeitpunkt auf dem Kontakt steht - und sich nicht erst annähert, denn den erwische ich bewusst erst später mit Alternative (1.).

Für diese Logik hätte ich bei einem Eisenbahnsignal (mit Kontakt) gerne Zugriff sowohl das Fahrzeug (sofern eines auf dem Kontakt steht), als auch den Kontakt. Das mit dem Fahrzeug habe ich schon länger gelöst (das sieht man auch in obigem Screenshot). Den Signalkontakt kann ich natürlich auch in ein Variable im Signal schreiben, was ja nur einmalig zu machen wäre. Aber wie gesagt: Es ist doch etwas seltsam, sich im Signal den Signalkontakt merken zu müssen oder anderes formuliert in einem Objekt eine Referenz auf sich selbst.

Das wäre zwar kein Auslöser, aber Du könntest für Signale mit Gleiskontakt im Ereignis "Signal changed" unter "Track/Track contact" ja auch "Signalcontact" zusätzlich anbieten.

Beste Grüße

Phrontistes

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 10 Stunden schrieb Phrontistes:

Wenn ich eine bestimmt Aktion, z.B. einen Kamerawechsel, (erst) haben will, wenn der Zug entweder (1.) auf ein grünes Signal trifft (den Gleiskontaktakt betritt, das ist der einfache Fall) oder (2.) wenn das Signal auf grün schaltet dann brauche ich für (2.) eben nicht nur "Signal schaltet", sondern auch die Bedingung dass ein Zug zu diesem Zeitpunkt auf dem Kontakt steht

Hallo Phrontistes,
das kannst du (wie gesagt) wahlweise über ein benutzerdefiniertes Ereignis oder mittels Lua erzielen.

Hier ein Beispiel: Signalkontakt generisch ansprechen.mbp

Nur, wenn der Zug auf dem Kontakt steht, werden seine Türen geschlossen sobald das Signal auf Fahrt schaltet.
Drei Sekunden später wird die Beschleunigung im Signalkontakt aktiviert und weitere zwei Sekunden später wieder deaktiviert.

Das Öffnen der Türen fand ich für die schnelle Demonstration einfacher als die Umschaltung einer Kamera.
Deine Kernbedingung, dass etwas nur dann geschieht wenn der Zug auf dem Signalkontakt steht, ist im Beispiel erfüllt.

Viele Grüße
Götz

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