Kush Posted July 21, 2016 Share Posted July 21, 2016 (edited) Hello, i've been getting an error all the time, when my PlayerStatsSystem from the release of "DayZ" 0.9.8a" is loading an character. Its pritty much doing this. [2016-07-21 22:41:32] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:605: attempt to perform arithmetic on local 'current' (a boolean value) [2016-07-21 22:41:32] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:576: attempt to perform arithmetic on local 'current' (a boolean value) [2016-07-21 22:41:32] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:586: attempt to perform arithmetic on local 'current' (a boolean value) [2016-07-21 22:41:33] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:605: attempt to perform arithmetic on local 'current' (a boolean value) [2016-07-21 22:41:33] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:586: attempt to perform arithmetic on local 'current' (a boolean value) [2016-07-21 22:41:43] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:605: attempt to perform arithmetic on local 'current' (a boolean value) The strange part is, once this errors is accuring, when i log out to make them stop, then log back in, it sends me to Blueberry Ackers underneath the map, then glitches me out, it also changes the Survival skin to CJ skin which I personally think is odd. Here is the LUA function code function addPlayerStats (player,data,value) if data == "food" then local current = getElementData(player,data) if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "thirst" then local current = getElementData(player,data) if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "blood" then local current = getElementData(player,data) if current + value > 12000 then setElementData(player,data,12000) elseif current + value < 1 then setElementData(player,data,0) else setElementData(player,data,current+value) end elseif data == "temperature" then local current = getElementData(player,data) if current + value > 41 then setElementData(player,data,41) elseif current + value <= 31 then setElementData(player,data,31) else setElementData(player,data,current+value) end elseif data == "humanity" then local current = getElementData(player,data) if current + value > 5000 then setElementData(player,data,5000) else setElementData(player,data,current+value) end end end Its pritty much all those "if current + value >" that is messing it up, but i dont know what to have there insted of current. Any suggestion? Or is it the "local current = getElementData(player,data)" thats causing the trubble? Edited July 21, 2016 by Guest Link to comment
Captain Cody Posted July 21, 2016 Share Posted July 21, 2016 Try this function addPlayerStats (player,data,value) if data == "food" then local current = tonumber(getElementData(player,data)) if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "thirst" then local current = tonumber(getElementData(player,data)) if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "blood" then local current = tonumber(getElementData(player,data)) if current + value > 12000 then setElementData(player,data,12000) elseif current + value < 1 then setElementData(player,data,0) else setElementData(player,data,current+value) end elseif data == "temperature" then local current = tonumber(getElementData(player,data)) if current + value > 41 then setElementData(player,data,41) elseif current + value <= 31 then setElementData(player,data,31) else setElementData(player,data,current+value) end elseif data == "humanity" then local current = tonumber(getElementData(player,data)) if current + value > 5000 then setElementData(player,data,5000) else setElementData(player,data,current+value) end end end Link to comment
Walid Posted July 21, 2016 Share Posted July 21, 2016 local current = tonumber(getElementData(player,data)) or 0 Link to comment
Kush Posted July 21, 2016 Author Share Posted July 21, 2016 Try this function addPlayerStats (player,data,value) if data == "food" then local current = tonumber(getElementData(player,data)) if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "thirst" then local current = tonumber(getElementData(player,data)) if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "blood" then local current = tonumber(getElementData(player,data)) if current + value > 12000 then setElementData(player,data,12000) elseif current + value < 1 then setElementData(player,data,0) else setElementData(player,data,current+value) end elseif data == "temperature" then local current = tonumber(getElementData(player,data)) if current + value > 41 then setElementData(player,data,41) elseif current + value <= 31 then setElementData(player,data,31) else setElementData(player,data,current+value) end elseif data == "humanity" then local current = tonumber(getElementData(player,data)) if current + value > 5000 then setElementData(player,data,5000) else setElementData(player,data,current+value) end end end Received same errors Link to comment
Captain Cody Posted July 21, 2016 Share Posted July 21, 2016 function addPlayerStats (player,data,value) if data == "food" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "thirst" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "blood" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 12000 then setElementData(player,data,12000) elseif current + value < 1 then setElementData(player,data,0) else setElementData(player,data,current+value) end elseif data == "temperature" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 41 then setElementData(player,data,41) elseif current + value <= 31 then setElementData(player,data,31) else setElementData(player,data,current+value) end elseif data == "humanity" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 5000 then setElementData(player,data,5000) else setElementData(player,data,current+value) end end end Link to comment
Kush Posted July 21, 2016 Author Share Posted July 21, 2016 local current = tonumber(getElementData(player,data)) or 0 This gave me error's within my login.lua and PlayerStatsSystem.lua aswell [2016-07-21 23:33:24] WARNING: [DayZ]\DayZ\login.lua:186: Bad argument @ 'spawnPlayer' [Expected vector3 at argument 2, got boolean] [2016-07-21 23:33:24] WARNING: [DayZ]\DayZ\login.lua:189: Bad argument @ 'createColSphere' [Expected vector3 at argument 1, got boolean] [2016-07-21 23:33:24] WARNING: [DayZ]\DayZ\login.lua:191: Bad argument @ 'attachElements' [Expected element at argument 1, got boolean] [2016-07-21 23:33:24] WARNING: [DayZ]\DayZ\login.lua:192: Bad argument @ 'setElementData' [Expected element at argument 1, got boolean] [2016-07-21 23:33:24] WARNING: [DayZ]\DayZ\login.lua:193: Bad argument @ 'setElementData' [Expected element at argument 1, got boolean] [2016-07-21 23:33:24] WARNING: [DayZ]\DayZ\login.lua:229: Bad argument @ 'setElementModel' [Expected number at argument 2, got boolean] [2016-07-21 23:33:26] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:590: attempt to perform arithmetic on a boolean value [2016-07-21 23:33:36] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:590: attempt to perform arithmetic on a boolean value [2016-07-21 23:33:46] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:580: attempt to perform arithmetic on a boolean value [2016-07-21 23:33:46] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:590: attempt to perform arithmetic on a boolean value [2016-07-21 23:33:46] ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:697: attempt to compare boolean with number Here is the LUA code for the line 580 and 590 function addPlayerStats (player,data,value) if data == "food" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "thirst" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "blood" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 12000 then setElementData(player,data,12000) elseif current + value < 1 then setElementData(player,data,0) else setElementData(player,data,current+value) end elseif data == "temperature" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 41 then setElementData(player,data,41) elseif current + value <= 31 then setElementData(player,data,31) else setElementData(player,data,current+value) end elseif data == "humanity" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 5000 then setElementData(player,data,5000) else setElementData(player,data,current+value) end end end Problem line 580 setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) Problem line 590 setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) LUA compare boolean with number function checkHumanity() for i,player in ipairs(getElementsByType("player")) do if getElementData(player,"logged_in") then if getElementData(player,"humanity") < 2500 then addPlayerStats (player,"humanity",30) if getElementData(player,"humanity") > 2000 then setElementData(player,"bandit",false) end end end end end setTimer(checkHumanity,60000,0) Problem on compare boolean with number if getElementData(player,"humanity") < 2500 then Any solutions? Link to comment
Kush Posted July 21, 2016 Author Share Posted July 21, 2016 function addPlayerStats (player,data,value) if data == "food" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "thirst" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 100 then setElementData(player,data,100) elseif current + value < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+value) end elseif data == "blood" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 12000 then setElementData(player,data,12000) elseif current + value < 1 then setElementData(player,data,0) else setElementData(player,data,current+value) end elseif data == "temperature" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 41 then setElementData(player,data,41) elseif current + value <= 31 then setElementData(player,data,31) else setElementData(player,data,current+value) end elseif data == "humanity" then local current = tonumber(getElementData(player,data)) or 0 if current + value > 5000 then setElementData(player,data,5000) else setElementData(player,data,current+value) end end end Same problems if not more Link to comment
Kush Posted July 21, 2016 Author Share Posted July 21, 2016 Oh dear God. I know right, its a bounch of errors, this is the error codes i did get. [2016-07-21 23:45:19] WARNING: [DayZ]\DayZ\login.lua:186: Bad argument @ 'spawnPlayer' [Expected vector3 at argument 2, got boolean] [2016-07-21 23:45:19] WARNING: [DayZ]\DayZ\login.lua:189: Bad argument @ 'createColSphere' [Expected vector3 at argument 1, got boolean] [2016-07-21 23:45:19] WARNING: [DayZ]\DayZ\login.lua:191: Bad argument @ 'attachElements' [Expected element at argument 1, got boolean] [2016-07-21 23:45:19] WARNING: [DayZ]\DayZ\login.lua:192: Bad argument @ 'setElementData' [Expected element at argument 1, got boolean] [2016-07-21 23:45:19] WARNING: [DayZ]\DayZ\login.lua:193: Bad argument @ 'setElementData' [Expected element at argument 1, got boolean] [2016-07-21 23:45:19] WARNING: [DayZ]\DayZ\login.lua:229: Bad argument @ 'setElementModel' [Expected number at argument 2, got boolean] Login.lua spawnPlayer (player, x,y,z, math.random(0,360), skin, 0, 0) fadeCamera (player, true) setCameraTarget (player, player) playerCol = createColSphere(x,y,z,1.5) setElementData(player,"playerCol",playerCol) attachElements ( playerCol, player, 0, 0, 0 ) setElementData(playerCol,"parent",player) setElementData(playerCol,"player",true) for i,data in ipairs(playerDataTable) do local elementData = getAccountData(account,data[1]) setElementData(player,data[1],elementData) end setElementData(player,"logged_in",true) setPedStat(source, 69, 0) setPedStat(source, 70, 1000) setPedStat(source, 71, 1000) setPedStat(source, 72, 1000) setPedStat(source, 73, 0) setPedStat(source, 74, 1000) setPedStat(source, 75, 0) setPedStat(source, 76, 1000) setPedStat(source, 77, 1000) setPedStat(source, 78, 1000) setPedStat(source, 79, 1000) setPedStat(source, 80, 1000) setPedStat(source, 81, 1000) --Weapons --Old Weapons local weapon = getElementData(player,"currentweapon_1") if weapon then local ammoData,weapID = getWeaponAmmoType (weapon) giveWeapon(player,weapID,getElementData(player,ammoData), true ) end local weapon = getElementData(player,"currentweapon_2") if weapon then local ammoData,weapID = getWeaponAmmoType (weapon) giveWeapon(player,weapID,getElementData(player,ammoData), false ) end local weapon = getElementData(player,"currentweapon_3") if weapon then local ammoData,weapID = getWeaponAmmoType (weapon) giveWeapon(player,weapID,getElementData(player,ammoData), false ) end setElementModel(player,getElementData(player,"skin")) PlayerStatsSystem error: ERROR: [DayZ]\DayZ\PlayerStatsSystem.lua:608: attempt to perform arithmetic on a boolean value Problem: setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) PlayerStatsSystem.lua function addPlayerStats (player,data,value) 2. if data == "food" then 3. local current = tonumber(getElementData(player,data)) or 0 4. if current + value > 100 then 5. setElementData(player,data,100) 6. elseif current + value < 1 then 7. setElementData(player,data,0) 8. setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) 9. else 10. setElementData(player,data,current+value) 11. end 12. elseif data == "thirst" then 13. local current = tonumber(getElementData(player,data)) or 0 14. if current + value > 100 then 15. setElementData(player,data,100) 16. elseif current + value < 1 then 17. setElementData(player,data,0) 18. setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) 19. else 20. setElementData(player,data,current+value) 21. end 22. elseif data == "blood" then 23. local current = tonumber(getElementData(player,data)) or 0 24. if current + value > 12000 then 25. setElementData(player,data,12000) 26. elseif current + value < 1 then 27. setElementData(player,data,0) 28. else 29. setElementData(player,data,current+value) 30. end 31. elseif data == "temperature" then 32. local current = tonumber(getElementData(player,data)) or 0 33. if current + value > 41 then 34. setElementData(player,data,41) 35. elseif current + value <= 31 then 36. setElementData(player,data,31) 37. else 38. setElementData(player,data,current+value) 39. end 40. elseif data == "humanity" then 41. local current = tonumber(getElementData(player,data)) or 0 42. if current + value > 5000 then 43. setElementData(player,data,5000) 44. else 45. setElementData(player,data,current+value) 46. end 47. end 48. end Link to comment
Captain Cody Posted July 21, 2016 Share Posted July 21, 2016 580-590 function addPlayerStats (player,data,value) if data == "food" then local current = tonumber(getElementData(player,data)) or 0 if current + tonumber(value) > 100 then setElementData(player,data,100) elseif current + tonumber(value) < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+tonumber(value)) end elseif data == "thirst" then local current = tonumber(getElementData(player,data)) or 0 if current + tonumber(value) > 100 then setElementData(player,data,100) elseif current + tonumber(value) < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+tonumber(value)) end elseif data == "blood" then local current = tonumber(getElementData(player,data)) or 0 if current + tonumber(value) > 12000 then setElementData(player,data,12000) elseif current + tonumber(value) < 1 then setElementData(player,data,0) else setElementData(player,data,current+tonumber(value)) end elseif data == "temperature" then local current = tonumber(getElementData(player,data)) or 0 if current + tonumber(value) > 41 then setElementData(player,data,41) elseif current + tonumber(value) <= 31 then setElementData(player,data,31) else setElementData(player,data,current+tonumber(value)) end elseif data == "humanity" then local current = tonumber(getElementData(player,data)) or 0 if current + tonumber(value) > 5000 then setElementData(player,data,5000) else setElementData(player,data,current+tonumber(value)) end end end 580 local blood = getElementData(player,"blood") or 0 setElementData(player,"blood",blood-math.random(50,120)) 590 local blood = tonumber(getElementData(player,"blood")) or 0 setElementData(player,"blood",blood-math.random(50,120)) humanity stuff function checkHumanity() for i,player in ipairs(getElementsByType("player")) do if getElementData(player,"logged_in") then local humanity = tonumber(getElementData(player,"humanity")) or 0 if humanity < 2500 then addPlayerStats (player,"humanity",30) if humanity > 2000 then setElementData(player,"bandit",false) end end end end end setTimer(checkHumanity,60000,0) last problem same thing from above? local humanity = tonumber(getElementData(player,"humanity")) or 0 if humanity < 2500 then Link to comment
Kush Posted July 21, 2016 Author Share Posted July 21, 2016 580-590 function addPlayerStats (player,data,value) if data == "food" then local current = tonumber(getElementData(player,data)) or 0 if current + tonumber(value) > 100 then setElementData(player,data,100) elseif current + tonumber(value) < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+tonumber(value)) end elseif data == "thirst" then local current = tonumber(getElementData(player,data)) or 0 if current + tonumber(value) > 100 then setElementData(player,data,100) elseif current + tonumber(value) < 1 then setElementData(player,data,0) setElementData(player,"blood",getElementData(player,"blood")-math.random(50,120)) else setElementData(player,data,current+tonumber(value)) end elseif data == "blood" then local current = tonumber(getElementData(player,data)) or 0 if current + tonumber(value) > 12000 then setElementData(player,data,12000) elseif current + tonumber(value) < 1 then setElementData(player,data,0) else setElementData(player,data,current+tonumber(value)) end elseif data == "temperature" then local current = tonumber(getElementData(player,data)) or 0 if current + tonumber(value) > 41 then setElementData(player,data,41) elseif current + tonumber(value) <= 31 then setElementData(player,data,31) else setElementData(player,data,current+tonumber(value)) end elseif data == "humanity" then local current = tonumber(getElementData(player,data)) or 0 if current + tonumber(value) > 5000 then setElementData(player,data,5000) else setElementData(player,data,current+tonumber(value)) end end end 580 local blood = getElementData(player,"blood") or 0 setElementData(player,"blood",blood-math.random(50,120)) 590 local blood = tonumber(getElementData(player,"blood")) or 0 setElementData(player,"blood",blood-math.random(50,120)) humanity stuff function checkHumanity() for i,player in ipairs(getElementsByType("player")) do if getElementData(player,"logged_in") then local humanity = tonumber(getElementData(player,"humanity")) or 0 if humanity < 2500 then addPlayerStats (player,"humanity",30) if humanity > 2000 then setElementData(player,"bandit",false) end end end end end setTimer(checkHumanity,60000,0) last problem same thing from above? local humanity = tonumber(getElementData(player,"humanity")) or 0 if humanity < 2500 then Sorry no idea what to do with this, I'm quite new to LUE Link to comment
Kush Posted July 21, 2016 Author Share Posted July 21, 2016 Managed to fix the problem with my PlayerStatsSystem. SOLVED Link to comment
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