Variablen von der mod.lua in eine Construction übertragen

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • In diesem Artikel erkläre ich, wie ihr Variablen wie z.B. Einstellungen, die beim aktivieren der Mod vorgenommen wurden oder Daten aus dem Repository der TF2-Api, aus der mod.lua in eure Construction bekommt.

    Im Beispiel werde ich die Variablen `{hund = "wau wau", katze = "miau"}` von der mod.lua in meine Construction übertragen.

    Es ist nur möglich Werte zu übertragen die beim Spielstart (bei Ausführen der postRunFn()) da sind. Es ist nicht möglich im Spiel änderbare Spielinhalte in die Construction zu bekommen.

    Bearbeitet werden dafür diese drei Dateien:
      construction/asset/myCon.con: Datei der Construction

    construction/asset/myCon.script: Datei, die dynamisch erstellte Funktionen enthält (in diesem Fall die updateFn() der Construction)

    mod.lua: Die Hauptdatei jeder Mod


    Die updateFn() in der Construction sollte am besten einfach leer bleiben, weil sie bei Laden des Spiels sofort überschrieben wird

    Code: construction/asset/myCon.con
    -- Funktion wird in der mod.lua überschrieben
    updateFn = function (params) 
    end


    Die drei Zeilen in der mod.lua überschreiben die updateFn() der Construction mit der updateFn() aus der .script-Datei und fügen die Variablen als Parameter hinzu.

    Code: mod.lua
    postRnFn = function (settings, params)
        -- lädt unsere Construction aus dem Repository
        local motrasStation = api.res.constructionRep.get(api.res.constructionRep.find('asset/myCon.con'))
        -- überschreibt die updateFn() der Construction mit der aus der -script-Datei
        motrasStation.updateScript.fileName = "construction/asset/myCon.updateFn"
        -- fügt unsere Variablen als zusätzliche Parameter der updateFn() hinzu
        motrasStation.updateScript.params = {hund = "wau wau", katze = "miau"}
    end


    Zuletzt muss noch die .script-Datei erstellt werden in der die eigentliche updateFn() der Construction ist.

    Das war's.

    Ich hoffe ich konnte einigen damit helfen.

Teilen

Kommentare 4

  • Was man auch noch dazu sagen könnte:

    Die .script Datei darf nicht im res/scripts Ordner liegen (ironischweise), da sie sonst nicht vom Spiel eingelesen wird und es zu einem Fehler kommt

  • Also ich habe das in der .script Datei etwas einfacher mit

    updateFn = function(constrParams,scriptParams)

    wobei constrParams die bekannten params sind und scriptParams eben die selbst gesetzt von .updateScript.params

    • Das scheint von Fall zu Fall verschieden zu sein. Bei den Gleismodulen hab ich das auch so, bei der createTemplateFn() von MOTRAS gab es den zweiten Parameter nicht.

  • Sollte man bei großen Projekten im Hinterkopf behalten, bei Deiner Motras sehe ich das als angebracht mit *.script zu arbeiten. Ich habe nur noch nicht ganz die Zuordnung der *.module verstanden. Das muss neu sein.