Timba Geschrieben 30. Oktober 2019 Geschrieben 30. Oktober 2019 Hallo in die Runde, ich habe gerade ausprobiert, ob ich das Ereignis "Variable wird gesetzt" als Auslöser nutzen kann, wenn ich einer Tabelle ein Element hinzufüge. Das Programm hat das geflissentlich ignoriert. Kann ich davon ausgehen, dass "Variable wird gesetzt" bei Tabellen/Listen nicht unterstützt wird? Oder habe ich irgendwas falsch gemacht? Gruß Timba aus dem sonnigen Ostwestfalen
EricD Geschrieben 31. Oktober 2019 Geschrieben 31. Oktober 2019 Hello Timba Problem: You want to use the "set variable" event as a trigger when you add an item to a table. Suggested solution 1: Each time you add an item to a table you should also change a "dummy" object variable e.g. Your table is called "ThisTable" Your "dummy" is the Trigger button "Trigger1" (but it could be ANY entity in your layout) Stage1: Create a "Switch is toggled" event for "Trigger1" containing: if ThisTable == nil then ThisTable = {} end table.insert(ThisTable, math.random() ) $("Trigger1").variables["ThisTable"] = ThisTable Stage2: Create an "Object variable is changed" event for $("Trigger1").variables['ThisTable'] containing: for k = 1, #ThisTable do print(ThisTable[k]) end Suggested solution 2: Why not get rid of "ThisTable" and always use $("YourEntity").variables['ThisTable"] instead? (Only do this when you need to detect when an item is added to the table) Hope this helps! Detect table insert.mbp Eric
Timba Geschrieben 31. Oktober 2019 Autor Geschrieben 31. Oktober 2019 Hi Eric, thanks for the suggestion. However, it isn't needed anymore. I had several options and using a table.insert as trigger was just one of them. I only posted the question because I thought it is a little weird since tables are in the category of variables and adding data to a table is some kind of "set variable", but it didn't work. Again, thanks for trying to help. Kind regards Timba
Goetz Geschrieben 31. Oktober 2019 Geschrieben 31. Oktober 2019 vor 2 Stunden schrieb Eric Danvers: Suggested solution 1: Each time you add an item to a table you should also change a "dummy" object variable Why use a back door when you can access the event directly? if ThisTable == nil then ThisTable = {} end table.insert( ThisTable, math.random() ) -- add to a table $("table has changed"):invoke(optional_arguments) -- call the related user event
EricD Geschrieben 31. Oktober 2019 Geschrieben 31. Oktober 2019 The solution by Goetz is better than mine. Normally, I don't like "work-arounds" but this was all I could think of. I agree that it's better to use $("table has changed"). I'm still learning and am happy to be doing so! Does anyone know how to detect a change in Locomotive speed? i.e. if you change the targetSpeed using the Locomotive control window, how can you detect this change in the Event Manager?
Goetz Geschrieben 31. Oktober 2019 Geschrieben 31. Oktober 2019 vor 29 Minuten schrieb Eric Danvers: Does anyone know how to detect a change in Locomotive speed? As far as I know, you cannot detect it. You may need to monitor the speed at regular intervals.
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden