Jump to content

Events erzeugen mit LUA


gmd

Empfohlene Beiträge

Ich versuche es,

Bin dabei ein allgemaines block konzept zu bauen mit ein- und ausgangs abzweigung. Tabellen legen die namen der kontakte, gleise, signale und variablen fest und mit getEntityByName werden die objekte identifiziert. Ich koennte auch die objekte direkt zuordnen ueber variablentyp objekt, aber die auswahl ist zu langwierig da die selektionsfunktion nicht effizient ist. Es ist einfacher namen in tabellen einzutragen. Wenn man string funktionen haette waere das natuerlich auch per LUA moeglich, so muss ich die namen von hand in die tabellen eintragen. 

Fuer jede komoponente, einfahrkontakt, bremskontakt usw. brauche ich ein ereignis und muss das objekt zuordnen und ein generisches script eintragen. Ich kann natuerlich eine struktur anlegen die ich einfach kopiere muss aber immer noch die tatsaechlichen trigger objekte zuordnen. Mit einer besseren scriptloesung kann man das mit einer einzigen tabelle loesen.

Das gleiche gilt fuer strassen von bahnhofsharfen usw. Damit kann ich auch mein doppeltraktions problem loesen ohne "lange" haltegleise. 

Kannst du mit dieser beschreibung etwas anfangen ?  

gruss

gmd

 

Bearbeitet von gmd
Link zu diesem Kommentar
Auf anderen Seiten teilen

I found the string functions though .. I read somewhere here that there are no string functions ... 

but I finally went to Lua.org and had a read .. so I can generate all the names ... great .. 

still have to solve the event issue ..

 

regards

Gmd

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb gmd:

I read somewhere here that there are no string functions ...

You must have misread. I don't think anyone here ever claimed that they are unavailable.

That aside, your entire concept (as far as I can follow your description) seems to be needlessly complicated. But it's difficult to point out the exact points where your approach is less than ideal.

Still - here's something which may helpful to know:
When you select and copy multiple objects, you can insert them all into a list of objects by pressing ctrl-v while you're building that list.

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

6 minutes ago, Goetz said:

That aside, your entire concept (as far as I can follow your description) seems to be needlessly complicated. But it's difficult to point out the exact points where your approach is less than ideal.

Ja es klingt kompliziert :)  ist es aber nicht wirklich da am ende nur ein einziges recht kurzes script dabei rauskommt. Das problem ist die parametrisierung, aber vielleicht faellt mir nochwas ein. Bin schon ein stueck weiter.

Danke fuer die schnellen antworten.

gruss

gmd

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

bin ein stueck weiter. Wenn man versucht einen event zu addressieren  wird der event zweig nicht beruecksichtigt, sondern nur der name selbst. Die namen muessen aber nicht eindeutig sein, was verstehe ich da nicht ? 

Ausserdem noch eine frage. Wenn ich einen event objekt fuer einen gleiskontakt habe  kann ich mit  objekt.contact den richtigen kontakt zuweisen ? Das wuerde helfen

Danke, Gruss

Gmd

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 15 Minuten schrieb gmd:

Die namen muessen aber nicht eindeutig sein, was verstehe ich da nicht?

Die Namen sind nicht die Identifier, wenn du Objekte, Ereignisse oder Module mit Hilfe des $-Zeichens adressierst. Sie stehen nur zur besseren Orientierung im Skript.

Tatsächlich werden (für dich unsichtbar) die eindeutigen Adressen dieser Objekte im Skript gespeichert. Wenn du später den Namen von einem Objekt oder einem Ereignis/Modul änderst, dann wirst du sehen, dass er automatisch auch im Skript geändert wird. Wichtig ist nur, dass du die Objekte/Ereignisse/Module ins Skript einfügst, indem du nur das $-Zeichen schreibst und dann das gewünschte Element aus der Liste auswählst.

 

vor 15 Minuten schrieb gmd:

Wenn ich einen event objekt fuer einen gleiskontakt habe  kann ich mit  objekt.contact den richtigen kontakt zuweisen?

Nein, es ist viel einfacher:
Der Name des contacts, mit dem du ein Ereignis ausgelöst hast, heißt einfach contact. Und das auslösende Fahrzeug heißt vehicle. 

 

Kennst du diesen Thread zur Straßenbahn-Steuerung? Da werden diese Zusammenhänge erläutert.

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wow du bist frueh,

beide antworten passen leider nicht ... ich werde nochmals einen versuch machen.

Ich bin mir bewusst ueber namen vs objekt id's - das ist nicht mein problem. Es ist anders.

Beispiel:

EventModul1
       Event1
       Event2

EventModul2
       Event1
       Event2

Nehmen wir mal an dass die Events trigger events sind, Wenn ich  $("Event1") benutze welchen der beiden objekte bekomme ich ? 

und die zweite frage war ob ich mit objekt.contact den gleiskontakt setzen kann  war dann  $("Event1").contact = layout:getEntityByName("Gleiskontaktname")

anstatt mit dem event editor 

ist das klarer ? Sorry, wenn ich mich immer zu kurz ausdruecke.

 

Gruss

Gmd

 

 

 

 

 

 

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