Moin zusammen,
ich benötige mal eure Hilfe: In all meinen Skripten hatte ich bisher das Problem, dass ich beim Ansprechen von "self.spec_modName" aus eigenen (mit registerFunctions registrierten) Funktionen nur 'nil' geliefert bekomme. Bei bereits verfügbaren Funktionen und EventListenern wie z.B. 'onLoad' oder 'onUpdate' existiert das Problem nicht. Ich habe mir mal testweise den Wert von 'self' rekursiv printen lassen, einmal aus einer custom Funktion und einmal aus onLoad. Wie in der Log zu sehen, ist 'self' in der custom Funktion grob unvollständig, was auch der Grund für das Fehlen des spec-Tables ist. Einige Code-Ausschnitte:
-- gekürzt
TopSaw.specName = string.format("spec_%s.topSaw", g_currentModName)
-- registerFunctions
function TopSaw.registerFunctions(vehicleType)
SpecializationUtil.registerFunction(vehicleType, "cutTop", TopSaw.cutTop)
end
-- onLoad
function TopSaw:onLoad(savegame)
-- Create spec in self
self.spec_topSaw = self[TopSaw.specName]
local spec = self.spec_topSaw
DebugUtil.printTableRecursively(self)
-- (...)
end
-- custom Funktion
function TopSaw:cutTop(noEventSend)
local spec = self.spec_topSaw
DebugUtil.printTableRecursively(self)
self:setAnimationTime(spec.xmlValues.cutAnimation.name, 0, true) -- hier ist spec = nil
-- (...)
end
Alles anzeigen
Zusätzlich besteht das Problem, dass ich mir (siehe Code) erstmal einen Spec Table erstellen muss, da der ursprüngliche ein anderen Titel hat ("self.spec_FS22_modName.specializationName"). Ist das normal?
Danke im Voraus und viele Grüße
Vector Man