Jump to content

LUA EV Ereignis "Gleiskontakt ausgelöst" im script abfangen


Recommended Posts

Hallo,

kommt man in LUA an die Eigenschaft eines Gleiskontakts, dass dieser ausgelöst wurde?

ich möchte dieses Ereignis mehrerer Gleiskontakte in einem script abfangen und verarbeiten.

z.B. in Form einer Bedingungsprüfung "wenn Kontakt $("xyz") ausgelöst, dann..."

Grund ist, dass ich in diesem script mit lokalen Variablen arbeiten möchte, die durch verschiedene Ereignisse behandelt werden.

danke

Link to comment
Share on other sites

vor 55 Minuten schrieb erik.hentschel:

kommt man in LUA an die Eigenschaft eines Gleiskontakts, dass dieser ausgelöst wurde?

Ja, der Kontakt (von mehreren möglichen) welcher tatsächlich ausgelöst wurde, ist in der grafischen EV einfach der "Auslöser"
Wandelst du die grafische EV in Lua um, dann steht an dieser Stelle "contact". Das enthält die Objektadresse des Kontaktes, der ausgelöst wurde.

Seine Objektvariablen findest du dann unter contact.variables
Seinen Namen findest du unter contact.name
 

Du kannst damit fragen, ob der auslösende Kontakt,

  • einen bestimmten Namen hat
  • ein bestimmtes Objekt ist
  • eine bestimmte Variable enthält
  • die Variable einen bestimmten Wert hat
  • ...

Beispielanlage: 1DD8B10B-DB8D-4D24-915F-47D18C81BFD0

Edited by Goetz
Beispielanlage hinzugefügt
Link to comment
Share on other sites

Danke für die schnelle Antwort, ich habe mir das Beispiel angeschaut. Da ich wahrscheinlich das Ereignis selbst nicht als script schreiben kann, sondern immer ein Ereignis mit "rechter Maustaste -> neu -> Ereignis -> ..." definieren muss, wollte ich den Namen des Auslösers in ein script übergeben. Dazu wollte ich aber keine globale Variable nutzen, sondern eine function. Geht leider nur innerhalb der function...

Ich habe mal die Anlage gezipt und angefügt und hoffe, dass diese bei Dir ankommt...

welche Objektvariablen hat ein Kontakt "von Haus" aus?

 

{D2EE47AD-4447-4310-A4C7-645736E31586}.zip

Link to comment
Share on other sites

vor 3 Stunden schrieb erik.hentschel:

Ich habe mal die Anlage gezipt

so wird das leider nichts.
Du musst sie nicht zippen, sondern aus dem MBS heraus exportieren.
Die Datei, welche dabei entsteht, lädst du bitte ungezipt hier hoch.

 

vor 3 Stunden schrieb erik.hentschel:

welche Objektvariablen hat ein Kontakt "von Haus" aus?

er hat folgende Eigenschaften

  • Geschwindigkeitsreduzierung an/aus
  • Geschwindigkeitsreduzierung Wert
  • Beschleunigung an/aus
  • Beschleunigung Wert
  • Richtung, in der er beim Auslösen überfahren wurde
  • Sichtbarkeit
  • Kopplungsobjekt (Gleis, auf dem er sitzt)
  • Position und Drehung

 

vor 3 Stunden schrieb erik.hentschel:

Dazu wollte ich aber keine globale Variable nutzen, sondern eine function. Geht leider nur innerhalb der function...

Du verstehst da noch Dinge falsch, glaube ich.

Funktionen können auch Werte zurückgeben.
Im Gegensatz zu Benutzerdefinierten Ereignissen. Die können es meines Wissens nicht.

Du hast unter den Ereignissen ein Skript, in dem du nach Belieben Funktionen definieren kannst, die dir innerhalb dieses Moduls überall zur Verfügung stehen. Und die geben dir alles zurück, was du möchtest.

Edited by Goetz
Link to comment
Share on other sites

sorry, experimentiere noch nicht so lange mit dem MBS. habe getan.

Bin auch schon weiter und habe die Logik wieder etwas mehr durchstiegen. Das script wird ja nicht dauernd durchlaufen...(Denkfehler). Ich werde dort also nur noch Variablen und Funktionen definieren und diese dann durch die verschiedenen Ereignisse aufrufen.

Du übergibst in deinem Bsp. im Ereignis eine lokale Variable an eine globale, kann man auch eine lokale Variable an eine lokale Variable eines anderen Ereignis (oder ins script) übergeben?

danke

export.mbp

Link to comment
Share on other sites

vor 4 Stunden schrieb erik.hentschel:

In der function  wird er übergeben und auch ausgegeben, aber nicht außerhalb...

Weil die Zeile 15 nur ein einziges Mal aufgerufen wird: Dann, wenn dieses Skript abgearbeitet wird.
Und zu diesem Zeitpunkt wurde die Funktion "Uebergeben" nur definiert, aber noch nicht ausgeführt.
Daher ist die Variable wert2 zu diesem Zeitpunkt leer

Wenn du anschließend die Funktion aufrufst, die du in den Zeilen 10 bis 13 definierst, dann werden nur noch diese Zeilen ausgeführt, aber nicht der Kram drumherum. Warum auch? Bei end ist Ende.

Edited by Goetz
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...