Variablen von der mod.lua in eine Construction übertragen

Willkommen in der Transport Fever Community

Welcome to the fan community of Transport Fever and Train Fever, the economic simulators of Urban Games. The community is free for you to share and inform yourself about the game. We cultivate a friendly and objective interaction with each other and our team will be happy to answer any questions you may have.

 

Registration and use is of course free for you.

 

We wish you a lot of fun and hope for active participation.

The Team of the 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
    1. -- Funktion wird in der mod.lua überschrieben
    2. updateFn = function (params)
    3. 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
    1. postRnFn = function (settings, params)
    2. -- lädt unsere Construction aus dem Repository
    3. local motrasStation = api.res.constructionRep.get(api.res.constructionRep.find('asset/myCon.con'))
    4. -- überschreibt die updateFn() der Construction mit der aus der -script-Datei
    5. motrasStation.updateScript.fileName = "construction/asset/myCon.updateFn"
    6. -- fügt unsere Variablen als zusätzliche Parameter der updateFn() hinzu
    7. motrasStation.updateScript.params = {hund = "wau wau", katze = "miau"}
    8. 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.

Share

Comments 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.