Alles anzeigenWeil LUA nicht so logisch kompiliert, wie man sich das wünschen würde. Leider hast Du Fehler im Skript, die sich unter einer bestimmten Bedingung aufheben und dann das Default Verhalten zulassen, wäre mein Erklärungsversuch.
Dein Hauptskript und dein eingebundenes Skript haben Fehler, die zwar kompilieren, aber logisch nicht funktionieren können, soweit ich es beurteilen kann.
Das Hauptskript müsste auf den von mir beschriebenen "require" Ansatz umgestellt werden und das Nebenskript hat umständliche Funktionsnamen, die Probleme verursachen könnten, oder korrekt aus dem Hauptskript aufgerufen werden müssten.
Und nur weil ich eine Variante kenne, heißt das nicht, dass ich alle möglichen Varianten kenne.
Ich versuche Dein Skript anzupassen und schicke es Dir hier zurück, damit Du testen kannst.
Danke dir fürs Umschreiben. Die Rasten und auch die Animationen und die Steuerung mit der Tastatur funktionieren jetzt auch für alle anderen Hebel, aber ich bin dennoch etwas verwirrt.
Die erste Verwirrung ist mit dem "require", weil der einzige Unterschied zwischen deiner und meiner Version ist, dass ich die throttleScript-Variable lokal definiert habe. Das sollte doch egal sein, oder? Oder muss das require ganz am Anfang immer stehen, weil du das VirtualThrottle auskommentiert hast?
Meine 2. Verwirrung betrifft das if(ControlExists) SetControl in Bezug auf die Animationen, definiert in der .bin. Muss ich zwingend im Skript jede Veränderung von einem ControlValue mit einem Set weiterleiten? Wenn das Skript nämlich z. B. leer ist oder alle Methoden leer sind und ich dieses If-Statement nicht habe, dann funktionieren die Animationen auch nicht mehr? Nach meinem logischen Verständnis sollten die Animationen und Rasten, die in der .bin gesetzt sind, nicht unabhängig vom Skript funktionieren und das Skript dann eben nur Verbindung schaffen zwischen der Eingabe am VirtualThrottle und der Berechnung für die Leistung durch die Stufe, z. B.?
Das dritte betrifft die Struktur der Subfiles generell. Ich komme aus der Richtung C#, Java und etwas C++, wo ich andere Files alleine zur Definition von Klassen oder einzelnen Funktionen nutzen konnte, ohne die gesamte Anwendungsstruktur zu haben. Ist das in Lua nun anders? Offenbar brauche ich im ThrottleScript ebenfalls eine Initialise-, Update- und OnControlValueChange-Methode. Brauche ich das für jedes Subfile von meinem Main-Script im Train Sim? Kann ich nicht aus der OnControLValueChange aus dem Mainfile direkt die UpdateTargetPosition-Methode aus dem ThrottleScript-Subfile verwenden, muss ich immer den Umweg über eine eigene OnControLValueChange-Methode gehen?
Im vierten bin ich verwirrt, wie Lua jetzt genau die Funktionen benutzt. Nach der throttleScript-Variable führst du throttle_Initialise als Initialise usw. ein. Ist das jetzt die Initialise aus dem Main-Skript oder aus dem Sub-Skript? Wenn beide gleich heißen, woher entscheidet der Compiler, welche Version und wie sind dann jetzt überhaupt die Initialise, OnControLValueChange etc. aus dem Subskript mit dem Main verbunden? Die Struktur verwirrt mich sehr gerade.
Abschließend hast du die VirtualThrottle-String-Deklaration nur auskommentiert, weil du sie nicht brauchst, oder hat das Lua im Train Sim etweas dagegen, wenn locale Variablen im Script so heißen, wie Objekte in der .bin, die dann als Namen übergeben werden in der ControlValueChange, z. B.?