erik.hentschel Posted March 1, 2021 Posted March 1, 2021 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
Goetz Posted March 1, 2021 Posted March 1, 2021 (edited) 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 March 1, 2021 by Goetz Beispielanlage hinzugefügt
erik.hentschel Posted March 2, 2021 Author Posted March 2, 2021 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
Goetz Posted March 2, 2021 Posted March 2, 2021 (edited) 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 March 2, 2021 by Goetz
erik.hentschel Posted March 2, 2021 Author Posted March 2, 2021 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
Goetz Posted March 2, 2021 Posted March 2, 2021 vor 22 Minuten schrieb erik.hentschel: kann man auch eine lokale Variable an eine lokale Variable eines anderen Ereignis (oder ins script) übergeben? ja, selbstverständlich.
Goetz Posted March 2, 2021 Posted March 2, 2021 (edited) 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 March 2, 2021 by Goetz
erik.hentschel Posted March 3, 2021 Author Posted March 3, 2021 Danke, zusammen mit Deinem Beispiel komme ich jetzt weiter.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now