Speichern und Laden nach dem Ausführen eines Timers (oder SequenzTimer) führt zum Crash

  • Es gibt ein Problem beim Speichern/Laden, wenn man vorher einen Timer (oder SequenzTimer) vom Lua Script ausführt.

    Nachdem der Timer ausgeführt wurde und man ein Spiel speichern und lädt, stürzt die exe ab.

    Es gibt keinen Log Eintrag zur Lösung dieses Problems, daher denke ich, dass der Fehler in TEN selbst liegt.

    Kann jemand diesen Fehler bestätigen?

    Das kann so getestet werden:

    Bevor man EventSequence überhaupt verwenden kann, muss ein kleiner Fehler behoben werden.

    (es gibt einen kleinen Fehler in 1.0.2)

    Man muss die Datei Engine/EventSequence.lua in Zeile 43 manuell fixen:

    Falsch:

    Code
    local Timer = require("Timer")

    Richtig:

    Code
    local Timer = require("Engine.Timer")

    Siehe hier:

    Timer und EventSequence - LUA

    --- Have fun while raiding ---

    Legacy of Oda Nobunaga

    :) Gruß, L.M. :)

    Einmal editiert, zuletzt von l.m. (28. September 2022 um 16:54)

  • l.m. 28. September 2022 um 16:08

    Hat den Titel des Themas von „Speichern und Laden nach dem Ausführen eines Timer (oder SequenzTimer)“ zu „Speichern und Laden nach dem Ausführen eines Timers (oder SequenzTimer) führt zum Crash“ geändert.
  • hmmm.

    Ich habe mein Script auch extrem reduziert und habe es ganz bewusst allgemein gehalten - siehe oben, und der crasht.

    Kannst du mal nachschauen und dieses obige Script bei dir im Level einbauen?

    Ich kann nur sagen, das das obige NICHT funktioniert wenn ich es einbaue. Nach Save / Load - Crash ohne Error Log Meldung.

    • Offizieller Beitrag

    Wenn ich dein obiges Beispiel nehme und wieder meine 2 Türen in die LevelFuncs. setze geht es auch.

    https://streamable.com/8qtnn2

    Den Verweis zum Aufrufen der EvenSequence.lua setze ich allerdings normalerweise immer ganz oben in der Level Lua Datei und nicht direkt bei der EvenSequence, weiß nicht, ob das einen Unterschied macht.

  • Das war's Jörg! Grandios!

    Bitte update noch das Tutorial, denn es ist nicht ersichtlich, wo man diese require Einträge platzieren muss.

    Es ist für viele vermutlich eh total unverständlich wo genau im Script welche Einträge gesetzt werden müssen.

    Ich denke mal, dass es so ist, dass nach dem Load, die Require Funktion einfach nicht ausgeführt wird.

    Daher ist es wichtig, dass diese Sachen zu allererst ausgeführt werden müssen.

    • Offizieller Beitrag

    Das war's Jörg! Grandios!

    Bitte update noch das Tutorial, denn es ist nicht ersichtlich, wo man diese require Einträge platzieren muss.

    Es ist für viele vermutlich eh total unverständlich wo genau im Script welche Einträge gesetzt werden müssen.

    Ich denke mal, dass es so ist, dass nach dem Load, die Require Funktion einfach nicht ausgeführt wird.

    Daher ist es wichtig, dass diese Sachen zu allererst ausgeführt werden müssen.

    Ich bin sowieso der erste, der ein funktionierendes Tutorial über den Timer und EventSequennce geschrieben hat.

    Beide liefen bis Version 1.0.2 überhaupt nicht. Es gab Konflikte man musste einen UpdateTimer in .OnControlphase setzen, der wieder verworfen wurde in Version 1.0.2 usw.

    Kurzum, dass es ein funktionierendes Tutorial darüber gibt, ist eigentlich ein Wunder. Ich habe solange rumprobiert, bis ich ein funktionierendes Beispiel hinbekommen habe.

    Und wie du in meinem Beispiel in meinem Tutorial siehst, habe ich den Verweis auch nicht direkt in den EventSequence gesetzt, sondern ganz oben als erstes. Genauso wie es in der Dokumentation auch beschrieben ist.

  • jep. daher sicherheitshalber erwähnen. auch bin darauf hereingefallen.

    ich hab das in der Referenz nicht richtig gesehen - ja mir hätte das auffallen müssen.

    Dennoch - es gibt so viele Leute die mit Programmierung nichts zu tun haben, gerade deswegen sollte das hier nochmal explizit erwähnt werden.

    Also dass Require Functions sinnvollerweise zu Anfang im Script definiert werden.

    Dass Problem fällt halt erst nach dem Laden auf, denn da wird etwas geladen, was dann nicht mehr existiert, sofern das nicht explizit zu Anfang im Script geladen wird.

    • Offizieller Beitrag

    Dennoch - es gibt so viele Leute die mit Programmierung nichts zu tun haben, gerade deswegen sollte das hier nochmal explizit erwähnt werden.

    Ich eigentlich auch nicht, ich hab mir das selbst erarbeitet und man bekam kaum Infos wie irgendwas funktionierte, Und wie gesagt der ganze Syntax is in der Beta Phase, vieles noch nicht implementiert, dass manche Sachen überhaupt gehen ist ein Wunder.

    Mir hat auch keiner gesag,t dass die beiden Dateien am Anfang definiert werden müssen, denn es wurde allein jetzt bis Version 1.0.2 fast der ganze Aufbau in den Lua Dateien umgekremelt.

  • Ja, dass die Sachen am Anfang definiert werden müssen ergibt auch Sinn. Aber natürlich nur, wenn man das weiß.

    Ich hatte hier nachgeschaut:

    https://lwmte.github.io/5%20lua%20util…ntSequence.html

    Aber da wird es halt auch nicht wirklich erklärt oder beschrieben. Daher bin auch dankbar, dass du das gerade hier geschrieben hattest.

    Das kann man dann allgemein nur eher erraten, bzw. wer null Ahnung vom Programmieren hat, wird das vermutlich niemals an den Anfang des Scripts setzen.

    ?(

    • Offizieller Beitrag

    wird das vermutlich niemals an den Anfang des Scripts setzen.

    Also ich hab das jetzt einfach mal mitten ins Script gesetzt, auch dann funktioniert es. Es muss also nicht zwangsläufig an den Anfang. Nur natürlich nicht direkt in die LevelFuncs., denn die wird ja nur einmal aufgerufen.

    • Offizieller Beitrag

    Also ich hab das jetzt einfach mal mitten ins Script gesetzt, auch dann funktioniert es. Es muss also nicht zwangsläufig an den Anfang. Nur natürlich nicht direkt in die LevelFuncs., denn die wird ja nur einmal aufgerufen.


    Gut zu wissen :thumbup:

    Aber wie man sieht, vieles ist unerforscht. Aber denke wenn der TombIDE mal richtig an die Syntax angepasst ist, könnte so etwas sicher markiert werden als Fehler. :/ Gut wäre es jedenfalls.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!