Hi,
Ich bin derzeit dabei einen kleinen Mod zu erstellen, der über einen onCreate aufruf in die Map eingebaut werden soll.
Mit meinem onCreate aufruf klappt auch alles wunderbar, die Indexe werden wie gewollt ausgelesen und auch alles ausgeführt.
Mein Problem ist jetzt das ich einen TipTrigger dazu brauche, da ich aber nicht die ganze StandartTrigger.lua kopieren und in ein Skript packen wollte habe ich nun einen TipTrigger angelegt der über einen eigenen onCreate aufruf erstellt wird, bzw in dem Skript wird nur der benötigte updateTrailerTipping() Teil etwas umgeschrieben damit ich es so nutzen kann wie ich es brauche. Und da tritt dann mein Problem auch auf.
Ich möchte das fillDelta des updateTrailerTipping() in mein anderes Skript übertragen. Somit habe ich in meinem ersten Skript eine function angelegt, die fillDelta erhält. Das klappt auch, aber wenn ich in der function mein eigenes fillLevel um fillDelta erhöhen will, kriege ich LOG Fehler, das "fillLevel" 'a nil value' ist.
Kann mir da jemand einen Tip geben warum das so ist und wie ich das umgehen kann???
Beide Skripte sind in einer lua, haben einen eigenen onCreate aufruf und funktionieren allein gesehen auch ohne Probleme.
[lua]function Testskript:getTestFillLevel()
return self.fillLevel;
end;
function Testskript:setFillLevel()
local a = self:getTestFillLevel()
print(fillDelta); --fillDelta schreibt er mir in die log, aber bei "a" steht eine leere Zeile in der Log
print(a);
end;
--Versuche ich in der Fuction gleich zu rechnen mit self.fillLevel = self.fillLevel - fillDelta, schreibt er mir fillLevel "a nil value"
function TestTipTrigger:updateTrailerTipping(trailer, fillDelta, fillType)
if fillDelta < 0 then
if self.isFarmTrigger then
local siloFillType = fillType
if fillType == Fillable.FILLTYPE_DRYGRASS then
siloFillType = Fillable.FILLTYPE_GRASS
end
Testskript:setFillLevel(fillDelta); --hier rufe ich die Function auf
else
local desc = Fillable.fillTypeIndexToDesc[fillType]
desc.totalAmount = desc.totalAmount - fillDelta
local priceMultiplier = self.priceMultipliers[fillType]
local difficultyMultiplier = math.max(2 * (3 - g_currentMission.missionStats.difficulty), 1)
local greatDemandMultiplier = 1
local money = Fillable.fillTypeIndexToDesc[fillType].pricePerLiter * priceMultiplier * difficultyMultiplier * greatDemandMultiplier * -fillDelta
g_currentMission:addSharedMoney(money, "harvestIncome")
end
self:updateMoving(-fillDelta)
end
end
-- <Attribute name="onCreate" type="scriptCallback" value="modOnCreate.TestTipTrigger"/>
g_onCreateUtil.addOnCreateFunction("TestTipTrigger", TestTipTrigger.onCreate)[/lua]
Dazu habe ich ein paar Bemerkungen geschrieben, Zeile 24 ruft meine Function des anderen onCreate skriptes auf, dort schreibt er mit das fillDelta auch in die LOG, aber self.fillLevel, was sich ja auf Testskript bezieht ist entweder eine nil Value oder eine leere Zeile in der LOG, wenn ich es mir über die Function getTestFillLevel hole.
Wenn ich im update() mein self.fillLevel jeweils um dt erhöhe und in die Log schreiben lasse, dann funktioniert das ganze auch ohne Probleme.