Can't increase a local variable.
#1
Hi, I'm trying to make CombatLog for MCServer and I have a problem.
CombatTime = 5


Time = 0
local seconds = {}
local IsOnCombat = {}

function OnTakeDamage(Receiver, TDI)
    if Receiver:IsPlayer() then
        Player = tolua.cast(Receiver,"cPlayer")
        IsOnCombat[Player:GetName()] = true
        seconds[Player:GetName()] = 0
        Player:SendMessage("You're on a combat, don't disconnect")
    end
end

function OnPlayerDestroyed(Player)
    if IsOnCombat[Player:GetName()] == true then
        Player:TakeDamage(dtPlugin, nil, 1000, 1000, 0)
        cRoot:Get():BroadcastChat(Player:GetName().." disconnected while being on a combat, buuuhhh, you suck")
    end
end

function OnTick(TimeDelta)
    if Time == 20 then
        local EachPlayer = function(Player)
            if seconds[Player:GetName()] == CombatTime then
                Player:SendMessage("You are no longer in combat")
            else
                seconds[Player:GetName()] = seconds[Player:GetName()] + 1
                print(seconds[Player:GetName()])
            end
        end
        local EachWorld = function(World)
            World:ForEachPlayer(EachPlayer)
        end
        cRoot:Get():ForEachWorld(EachWorld)
        Time = 0
    else
        Time = Time + 1
    end
end
I need to increase player combat time. The code should do it, but I get this error every second:
[20:28:04] LUA: 2 - Plugins/CombatLog/main.lua:46: attempt to perform arithmetic
on field '?' (a nil value)
Any idea why? How to fix it? Huh
Reply
Thanks given by:
#2
I have a feeling that we don't have all the code because it says the error is on line 46 but it stops at 42, and since I have no idea how many lines the Initialize function has I have no idea where the error is. Also you can use the OnWorldTick(a_World, a_TimeDelta) instead of a ForEachWorld callback in each tick.
Reply
Thanks given by:
#3
Fixed it. I was just not checking if player is in combat xDD.
There is not all the code because I only posted necesary code, not the Initialize() function
Reply
Thanks given by:
#4
(03-30-2014, 05:34 AM)tonibm19 Wrote: .. I only posted necesary code, not the Initialize() function

But that also means that we can't use the error code completely. It now said that the error is on line 46 so I started looking at line 46 but it stopped at 42. That means the only usefull thing we get from the error code is that it has something to do with numbers.
Reply
Thanks given by:




Users browsing this thread: 4 Guest(s)