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
-- 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.
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.
function data()
return {
-- übertragung ist bei updateFn() und createTemplateFn unterschiedlich
updateFn = function(params, paramsFromModLua)
-- {hund = "wau wau", katze = "miau"}
local result = {}
--- ... alles was dann in der Construction getan werden muss
return result
end,
createTemplateFn = function (params)
-- Parameter aus der mod.lua
local paramsFromModLua = self.params.capturedParams
-- {hund = "wau wau", katze = "miau"}
local result = {}
--- ... alles was dann in der Construction getan werden muss
return result
end,
}
end
Display More
Das war's.
Ich hoffe ich konnte einigen damit helfen.
Comments 4
Newly created comments need to be manually approved before publication, other users cannot see this comment until it has been approved.
Newly created comments need to be manually approved before publication, other users cannot see this comment until it has been approved.
VacuumTube
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
VacuumTube
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
EISFEUER
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.
elektronikfreak
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.