Jump to content

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


Empfohlene Beiträge

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

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

Bearbeitet von Goetz
Beispielanlage hinzugefügt
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

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.

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

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.

Bearbeitet von Goetz
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...