Desblat Posted February 1, 2017 Share Posted February 1, 2017 (edited) I am trying to port my Thrist mod into DST and I am facing troubles doing it. The thing is - thirst rate shoud depend on temperature of player and also player should start to sweat, if he is overheating. But if I try to call temperature component from thirst component - I get a crash saying "U're trying to access nil temperature blah blah blah". Here is the code from modmain: Quote modmain.lua AddReplicableComponent("thirst") .............................. local function GiveThirst(inst) if inst.components.thirst == nil then inst:AddComponent("thirst") inst:ListenForEvent("death", Deaththirst) inst:ListenForEvent("respawnfromghost", Respawnthirst) inst.maxthirst = GLOBAL.net_ushortint( inst.GUID, "thirstmax", "currentdirty") inst.currentthirst = GLOBAL.net_ushortint( inst.GUID, "thirstcurrent", "currentdirty") inst.penaltythirst = GLOBAL.net_float( inst.GUID, "thirstpenalty", "currentdirty") if not TheWorld.ismastersim then inst:ListenForEvent("currentdirty", function(inst) OnthirstDirty(inst) end) end inst:DoPeriodicTask(1, function(inst) inst.components.thirst:DoDelta(0)--Badge Updates end) end end -- RUNS THE ABOVE FUNCTION FOR ALL CHARACTERS, INCLUDING MODDED ONES -- AddPlayerPostInit(GiveThirst) Here is the code from thrist.lua : Quote local thirst = Class(function(self, inst) self.inst = inst self.max = 200 self.min = 0 self.current = self.max self.thirstrate = 0.2*TUNING.THIRST_DIFFILCULTY_THIRST_SPEED self.burnrate = 1*TUNING.THIRST_DIFFILCULTY_THIRST_SPEED self.burning = true self.timetosay = 45 self.period = 1 self.task = self.inst:DoPeriodicTask(self.period, function() self:DoDec(self.period) end) end, nil, {}) function thirst:GetDelta() if self.inst.components.thirst then local temp = self.inst.components.temperature:GetCurrent() ---------- Here I get a crash, it says "temperature is nil" local tf = 0 if temp > 55 then tf = temp/150 end local delta = self.inst.components.thirst.thirstrate+tf return delta else return 1 end end function thirst:DoDec(dt, ignore_damage) local old = self.current if self.burning then self:DoDelta(self.burnrate*(-self:GetDelta()*dt), true) if self.inst.components.temperature.current/100 > 0.55 then ---------- Here I get a crash, it says "temperature is nil" if self.inst.components.moisture then ---------- Here I get a crash, it says "moisture is nil" self.inst.components.moisture:DoDelta(0.3) end end end end What am I doing wrong? How do I fix this? Thanks in advance. Edited February 2, 2017 by Desblat Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now