Animationen von .bin funktionieren nur bei fehlerhaften Skript

Discord Einladung
Trete unserem Discord-Server bei (klicke hier zum Beitreten).
  • Liebe Community!


    Ich versuche, mich in das Scripting im Train Sim Classic anhand des RSSLO 4010 einzuarbeiten, jedoch bin ich auf eine massive Verwirrung gestoßen. Ich habe ein komplett neues Skript aufgesetzt, sodass ich alle Funktionen neu und ggf. besser ausführen kann. Ich wollte dabei auch die Möglichkeit nutzen, das Lua-Skript in einzelnen Files aufzuteilen und die Teile durch require() zu laden, sodass alles übersichtlicher wird. Nun zum eigentlichen Problem. DIe Skriptteile sind dazu im .rar file im Anhang, sodass sie direkt in den RSSLO/OBB4010/RailVehicles/Engine/Script-Ordner kopiert werden können.


    Wenn ich im Throttle-Teil die ThrottleScript Liste public lasse (also ohne local) und am Ende nicht returne und ich im Main-Script einfach ThrottleScript.Update... benutze, bekomme ich in LogMate keine Errors und das Skript gibt meine Prints aus. Der Fahrschalter ingame bleibt jedoch auf der 0-Position und geht nicht in die in der .bin definierte Default-Position. Auch lässt er sich nicht über die Tastatur steuern.


    Mache ich jetzt die ThrottleScript-Liste lokal und returne sie am Ende, sodass ich im Main-Skript die kleingeschriebene Variable throttleScript.Update... benutze, bekomme ich im Logmate den Error weiter unten. Das macht ohnehin nach meinem Lua-Verständnis schon wenig Sinn. Das Verwunderliche ist aber, dass nun ingame die Default-Animationen funktionieren!? Also bei mStart wandert der Fahrschalter in die in der .bin definierten Default-Position und er lässt sich auch über die Tastatur steuern. Jedoch nur der Fahrschalter, alle anderen Hebel nicht.


    In keiner Dokumentation konnte ich nachvollziehen, wie die Animationen in der .bin mit dem Script zusammenhängen und ob oder was was überschreibt!? Wieso funktioniert die Animation, wenn das Skript nicht funktioniert? Aber eben auch nur für den einen Schalter? Kann mich da bitte jemand aufklären? Ich verzweifle damit gerade sehr.


    Laut meinem logischen Verständnis sollte dann ja jede Default-Animation immer funktionieren, solange das Skript nicht brute-force einen Wert direkt setzt, wenn man eine Taste drückt, und vor allem sollten sie immer funktionieren, selbst wenn das Skript zum Beispiel völlig leer ist!?

  • Ok verstehe, ich versuch's dann mal, in den gleichen Ordner zu geben. Das erklärt aber trotzdem nicht, warum die Default-Animationen und auch die Rasten, die in der .bin definiert sind, funktionieren, wenn das Skript nicht funktioniert,aber nicht mehr funktionieren, wenn das Skript geht.


    Edit: Die Position macht keinen Unterschied. Wenn es gefunden wird, liegt es als Boolean-Value vor und wenn es nicht gefunden wird, dann crasht das ganze Skript. Wenn das ganze Skript crasht, dann sind die Rasten und Animationen auch weg. Irgendwie nur, wenn ich den Fehler habe, dass das throttleScript als Boolean-Value versucht wird zu indizieren, dann sind die Animationen und Rasten aus der .bin vorhanden.

  • Eventuell verstehe ich Deinen Ansatz nicht, aber wenn Du das Originalskript mit "require" einbindest, "kaufst" Du das Verhalten aus dem Orginalskript mit.


    Wenn Du zB eine Zugsicherungsvsariante einbinden willst, die das Orginal nicht hat, dann ist das eine valider Ansatz, weil Du hinzufügst, nicht überschreibst.


    Für eine Veränderung vorhandenen Verhaltens, müsstest Du das zentrale Skript neu aufsetzen, sonst kämpfst Du mit dem Verhalten aus dem Orginalskript.

  • Eventuell verstehe ich Deinen Ansatz nicht, aber wenn Du das Originalskript mit "require" einbindest, "kaufst" Du das Verhalten aus dem Orginalskript mit.


    Wenn Du zB eine Zugsicherungsvsariante einbinden willst, die das Orginal nicht hat, dann ist das eine valider Ansatz, weil Du hinzufügst, nicht überschreibst.


    Für eine Veränderung vorhandenen Verhaltens, müsstest Du das zentrale Skript neu aufsetzen, sonst kämpfst Du mit dem Verhalten aus dem Orginalskript.

    Ich will ein komplett neues Skript schreiben. Also alles von neu auf, aber aufgeteilt, sodass es leichter maintanable ist. Auf das Aufteilen kann ich sosnt auch fürs erste verzichten, das für mich grade Wichtigste ist, warum die Animationen und Rasten aus dem .bin file da sind, wenn das Skript mir den Error gibt, dass das require einen boolean gibt, den es natpürlich nicht indizieren kann, aber die Rasten und Animationen weg sind, wenn das Skript entweder komplett crashed oder keinen error gibt.