Beiträge von Transalpin4010

Discord Einladung
Trete unserem Discord-Server bei (klicke hier zum Beitreten).

    Danke dir vielmals, das macht sehr viel Sinn. Eine Verständnisfrage noch zur onControlValueChange, wieso muss man nochmal SetControlValue mit dem gleichen Namen, index und value aufrufen? So wie ich das verstanden habe, passiert der Aufruf für die OnControlValueChange ja weil der value für das objekt mit dem Namen und dem index geändert wurde oder nicht?

    Danke für die ganzen hilfreichen Antworten, mangels Autoabo vom Thread hab ich die jetzt erst sehr spät gesehen. Kuju Skripte habe ich mir bereits ein paar angeschaut und auch ein paar andere, unter anderem das vom RSSLO 4010er, das ich ja rekonstruieren, am besten verbessern, will und obwohl dabei zwar die Methodennamen verloren gehen, ist das auch sehr praktisch zum reverse Engineeren. Die Skripte von AP werde ich mir auf jeden Fall noch anschauen.

    Anschließend an meinen anderen Thread: Werden in den Skript files, nicht dem SimpleEngineScript, weil das ist zu 90% tatsächlich leer, alle 4 Basic Methoden, also die Initialise, Setup, Update und ControlValueChange aufgerufen theoretisch oder nur bestimmte bzw. gibt es Voraussetzungen dafür, dass eine Methode aufgerufen wird, also dass ich das Fahrzeug zb Bewegen muss oder so?



    Daran anschließend, kann man im Train Simulator statt lua jetzt auch TypeScript verwenden? Ich habe mir den Sourcecode heruntergeladen, die Scripte haben dort aber alle .ts Endung, das verwirrt mich etwas.

    Danke dir für die Antwort, also das SimpleEngineScript ruft nur noch die Update und Setup Funktion auf? Die ,,normalen" Skript files dann nur noch die Initialise und diese ValueChange methode? Ich schau da nochmal drüber aber ich habe ein paar Scripte decompiled und, obwohl zwar die Methodennamen dabei verloren gehen, finde ich immer einige Methoden, die von der Anzahl der Parameter immer auf die 4, also Init, Setup, Update und ControlValueChanged, passen würden, also sollten sie in den normalen ja auch aufgerufen werden oder?

    Liebe Community!


    Ich versuche gerade eine Skript Update für den RSSLO 4010 zu machen. Dafür habe ich erstmal die wichtigsten Funktionen definiert, Die Initialise(), Setup(), Update(interval) und OnControlValueChange(name, index value). Alle sind in der Script_OBB4010.lua. Für alle habe ich Print Statements eingefügt, um in LogMate zu sehen, ob alles funktioniert, wie erwartet. Die Setup Methode wird jedoch nur in der SimpleEngineSimulation aufgerufen, die Setup Methode allgemein nie, egal ob von der Script_OBB4010.lua oder von der SimpleEngineSimulation.lua. Das macht für mich aber absolut keinen Sinn, muss davor irgendwas passieren, damit die Methoden aufgerufen werden? Habe ich etwas falsch definiert?


    Script_OBB4010:


    SimpleEngineSimulation:

    Code
    function Setup ()
        Print("[DEBUG] Setup method called in SimpleEngine.")
    end
    
    function Update (interval)
        Print("[UPDATEMETHOD] called update from SimpleEngine!")
    end

    Ahja das macht Sinn, danke vielmals. Während meiner weiteren Recherche bin ich hier im Rail Sim Forum auf die Liste der möglichen Methoden gekommen, ist die vollständig? Ich habe leider nichts zu dem Togglen von Animationen gefunden. Laut dem .bin file wäre für den Fahrschalter zum Beispiel die default Position auf 0.5, was ,,Aus" entspricht. Mittels der SetControlValue habe ich versucht per Script den Fahrschalter auch auf die Position zu setzen, im Simulator steht der Fahrschalter im f4 hud auch auf der richtigen Position, nur das 3d Schaltrad steht auf 0. Gibt es da eine gute Möglichkeit, den Fahrschalter in der Initialisierung auch im 3d Modell auf die richtige Position zu stellen?


    Eine eher Pfusch Möglichkeit wäre, kurz nach der Initialisierung die Animation über einen Zeitraum in die Position laufen zu lassen und nachdem man tatsächlich sieht, wie sich das Rad dreht, wenn man die Standard Version des Scriptes hat, nehme ich an, dass RSSLO das auch so gemacht hat, aber ich bin mir auch da mit den möglichen Methoden nicht ganz sicher, wie das am besten geht.


    Dazu stellt sich mir auch die Frage, woher finde ich den Childname? In der .GeoPcDx gibt es zwar diverse <Child> tags, die über TransformIds mit Transforms verbunden sind, die passende Namen tragen würden und auch in der .bin finde ich zum Beispiel den ElementName Vleka für den VirtualThrottle, wenn ich aber zum Beispiel pos = Call("Vleka:getNearPosition") verwende um zu Debuggen, ob das das richtige Element ist bzw. Call("Vleka:SetTime", "Vleka", 0.5) um die Animation zu starten, passiert nichts, bzw. wenn ich pos printen will, bekomme ich nur einen Error, weil es wohl nil ist.

    Liebe Community!


    Ich habe vor, mich ins Lua Scripting für den Train Sim einzuarbeiten. Programmiererfahrung habe ich bereits in Java und C#, also gilt es für Lua nur mit der neuen Syntax umzugehen. Ich habe mir bereits die zwei verfügbaren Tutorials zum Lua Scripting angesehen, die sind jedoch sehr allgemein und gehen nicht auf den Train Sim ein. Für den Anfang wollte ich das Script eines bereits funktionierten Fahrzeuges, dem RSSLO 4010, erneuern, da das Fahrzeug bereits existiert, der Funktionsumfang bisher recht einfach ist und grundsätzlich die Eigenschaften feststehen, es sind daher nur die .out files, also die verschlüsselten lua Scripte neu zu erstellen.


    Die originalen habe ich gesichert und dem ,;Create an Engine" Tutorial von den Developer Documents (Developer Documents) folgend, habe ich ein neues SimpleEngineScript.lua File erstellt in der Location vom alten, damit ich den Speicherort nicht in der bin ändern muss. Für den Anfang wollte ich einfachen Debug Output für LogMate haben, damit ich einfach und schnell sehen kann, was für Auswirkungen meine Änderungen haben. Die Struktur habe ich dafür aus genanntem Tutorial genommen und sieht folgendermaßen aus:


    Code
    function Setup ()
        Print("[DEBUG] Script initialized.")
    end
    function Update (interval)
        local speed = SysCall("GetSpeed") * 3.6 -- m/s to km/h
        Print("[Speed] Current speed: " .. tostring(speed) .. " km/h")
    end

    Gespeichert habe ich das mit Notepad++ als .lua file, ich nehme nicht an, dass ich das file auch als .out file verschlüsseln muss während des Development Prozesses. Dem Thread (Lua-Script Print-Funktion) folgend, habe ich auch die Startoption hinzugefügt, wie am Screenshot erkennbar, im Logfile von LogMate habe ich jedoch keinen Debug output von meinem Code. Was ist hierbei das Problem? Was habe ich vergessen? Muss man das File doch verschlüsseln?


    Durch trial and Error habe ich auch im Script folder das Script_OBB4010.out file durch ein eigenes .lua fil eersetzt mit folgendem, leicht abweichenden Code:

    Code
    function Initialise()
        Print("[Init] Locomotive script loaded. From OBB4010.lua")
    end
    
    function Update(time)
        local speed = SysCall("GetSpeed") * 3.6 -- m/s to km/h
        Print("[Speed] Current speed: " .. tostring(speed) .. " km/h")
    end

    Nun habe ich tatsächlich Debug output von diesem File. Das bringt mich aber zu weiteren Fragen. Was ist nun die Aufgabe der SimpleEngineSimulation.lua im Vergleich zu der Script.lua? Wieso haben die Methoden, zumindest die zur Initialisierung, andere Signaturen?

    Wie ist eigentlich der Stand vom Sim und die Zukunftsaussichten? Ich überlege mir, mir den Sim vor allem für die Stellwerke zu kaufen, aber nachdem die ja nur über Server spielbar sind, stellt sich mir auch die Frage, wie Zukunftssicher der Simulator ist und was man da noch erwarten kann weiter, 35 Euro sind ja auch nicht wenig.

    Ich freu mich, dass endlich eine Österreichische Strecke kommt und freu mich auf mehr. Der TSW ist ein Nischenprodukt und die Community hat bekanntermaßen keine Wahl, also ist es ja nur natürlich im Kapitalismus, dass der TSW jedes Jahr neu rauskommt mit kaum Neuerungen aber Vollpreis.