Jump to content

Recommended Posts

Posted

Hallo an die Lua-Programmierer,

derzeit experimentiere ich ein bisschen mit Lua und habe folgendes Problem: Die freien Gleise eines Bahnhofs sollen in einer Tabelle stehen. Ich habe die erforderliche Tabelle in einem Skript am Anfang der EV eingerichtet.

Freigleise = { "Gleis2", "Gleis4" }

Nach jedem Stop des Programms (und das ist oft, weil ich ja noch am testen bin) wird die Tabelle mit diesen Werten neu initialisiert, aber inzwischen sind zwei, drei Züge eine Runde gefahren und stehen auf ganz anderen Gleisen und die Tabelle hatte folglich andere Einträge. Wie kann ich es anstellen, dass nach einer Unterbrechung mit den aktuellen Werten weitergemacht wird und nicht mit der ursprünglichen Definition? Ich möchte auch nicht nach jedem Stop das Script bearbeiten.

Gruß Timba

Posted

Hallo Timba,
Lua startet bei jedem Start neu. Das heißt, es wird diese Tabelle auch immer frisch initialisieren. Alles andere muß über ein Zusammenspiel von Lua-Tabellen und den Objektvariablen geschehen, wobei - sofern ich das richtig verstanden habe, siehe Götz' letztem Tutorial - da mit dem Update neue Features ins Spiel kommen, die diesen Bereich verstärken.

Gruß
  Andy

Posted

Danke dir Andy. Gerade habe ich herausgefunden, dass die Tabelle nur neu initialisiert wird, wenn ich was an der EV geändert habe. Wenn ich die Sim nur kurz anhalte und ohne Änderung weitermache, dann bleibt die Tabelle erhalten. Wenigstens das.

Gruß Timba, der Lua-Lehrling :D

Posted (edited)

Kalt erwischt - 'nach jedem Stop' war definitv die falsche Formulierung.

p.s.:
Wenn Du Lust hast, bau doch mal gerade irgendwo mal die Zeile error("Na sowas!") ein und laß das Ereignisprotokoll mitlaufen.
Check mal, wie sich's verhält, wenn das EP wegen diesem 'Fehler' angehalten wird. Ich weiß nicht, ob sie dann neu startet oder weiterläuft.

Edited by Andy
Posted

Ja stimmt. Ich hatte angenommen, dass das Stoppen der Sim dafür verantwortlich war. War falsch. Ich hatte bei jedem Stop was geändert und das hat die Initialisierung bewirkt, was zu meiner Fehlinterpretierung führte. Nicht weiter schlimm. Wenigstens lerne ich jeden Tag was Neues. Nur bei manchen Dingen stünde man ohne Hilfe auf dem Schlauch, denn das offizielle Lua-Manual kann ja logischerweise nicht auf die Dinge eingehen, die hier im MBS speziell sind. Zum Glück gibt es hilfreiche Geister wie dich. Danke nochmal.

Posted

'Möchtegern-hilfreich'. Rausgefunden hast Du's selber. Ich könnte derzeit verstärkt fehleranfällig sein - kommt vom Blender-Basteln. Da vergißt man wieder alles :D

Posted
vor 51 Minuten schrieb Timba:

Nach jedem Stop des Programms wird die Tabelle neu initialisiert,

Zur Zeit, ja.

weil du die Initialisierung in dein Skript schreiben musst.

mit dem nächsten Update bekommen wir die Möglichkeit, Tabellen wie Variablen in Objekten und Modulen abzulegen. Und die behalten dann - wie objekt/Modul-Variablen auch, ihre Werte.

Posted
vor 1 Minute schrieb Andy:

Da vergißt man wieder alles

Ach was! Programmieren ist wie Fahrradfahren, wenn man's einmal kann, verlernt man es nie. ;)

Posted
vor 1 Minute schrieb Goetz:

mit dem nächsten Update bekommen wir die Möglichkeit, Tabellen wie Variablen in Objekten und Modulen abzulegen. Und die behalten dann - wie objekt/Modul-Variablen auch, ihre Werte.

Das ist super! (y) Kann man die dann eventuell auch über das Ereignisprotokoll beobachten? Das wäre dann der Hit schlechthin!

Posted
vor 7 Stunden schrieb Timba:

Kann man die dann eventuell auch über das Ereignisprotokoll beobachten?

In der Vorabversion, die ich ausprobieren durfte, sah ich nur die Anzahl der Elemente in der rechten Spalte des Ereignisprotokolls. Links kannst du natürlich per print() alles reinschreiben. Wie es final aussehen wird weiß ich nicht, weil Neo derzeit noch am Update arbeitet.

Neben den Listen und Tabellen bekommt die EV mit dem nächsten Update auch Wiederholungen. Beides ergänzt sich sehr gut und eröffnet in der Kombination tolle Möglichkeiten.

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
×
×
  • Create New...