attempt to index global 'umsg' (a nil value)

This code:

[lua]
timer.Create(“BuildTimer”, 1, 0, function() UpdateClientBuildTime( ) end)
[/lua]

[lua]
function UpdateClientBuildTime()
if Stage == 0 then
if BuildTimeLeft > 0 then
BuildTimeLeft = BuildTimeLeft - 1
UpdateClientTime(BuildTimeLeft)
else
Stage = 1
end
end
end

function UpdateClientTime(timeleft)
umsg.Start( “UpdateTime” )
umsg.Short( timeleft )
umsg.End()
end
[/lua]

Gives me this error:

Timer Error: [gamemodes\zombiedefense\gamemode\init.lua:65] attempt to index global ‘umsg’ (a nil value)
Timer Error: [gamemodes\zombiedefense\gamemode\init.lua:65] attempt to index global ‘umsg’ (a nil value)
Timer Error: [gamemodes\zombiedefense\gamemode\init.lua:65] attempt to index global ‘umsg’ (a nil value)
Timer Error: [gamemodes\zombiedefense\gamemode\init.lua:65] attempt to index global ‘umsg’ (a nil value)
Timer Error: [gamemodes\zombiedefense\gamemode\init.lua:65] attempt to index global ‘umsg’ (a nil value)
Timer Error: [gamemodes\zombiedefense\gamemode\init.lua:65] attempt to index global ‘umsg’ (a nil value)
Timer Error: [gamemodes\zombiedefense\gamemode\init.lua:65] attempt to index global ‘umsg’ (a nil value)

Could anybody tell me why?

Thanks in advance.

-snip i’m wrong-

Anywhere else you calling umsg ? Editing it in any way? And what’s the clientside function to recieve?

Yes I’m using it in a few other places in the same exact method.

Clientside:

[lua]
usermessage.Hook(“UpdateTime”, function(msg)
BuildTimeLeftC = msg:ReadShort()
end)
[/lua]

Any addons?

I’ve already talked him through it, he was including init.lua in cl_init.lua :tinfoil:

Explains a lot.

Alright then.

Just a tip, you can avoid these things by prefixing your files, (except init.lua), with either sv_ sh_ or cl_. That way you will always know on which side to run the files. (like you normally do with cl_init and sh_init)