Setting up a table on a player as soon as they spawn in the client.
2 replies, posted
I've run into a wall here. I'm trying to network a bunch of variables in a table for the client using usermessages and it needs to be set up as soon as the player spawns. I figured it'd be easy enough, send a usermessage to the current clients to setup the joining client. Problem being, PlayerInitialSpawn, PlayerSpawn, etc are all fired when only the server knows about the joining client. If I send a usermessage to the active clients about the joining client, it returns NULL.
[lua]if SERVER then
hook.Add( "PlayerInitialSpawn", "SetupTable", function( pl )
pl.ATable = {}
local filter = RecipientFilter()
filter:AddAllPlayers()
filter:RemovePlayer( pl ) -- Player is currently joining, don't include them. They'll setup their own table in InitPostEntity.
umsg.Start( "SetupPlayer", filter )
umsg.Entity( pl )
umsg.End()
end )
else
usermessage.Hook( "SetupPlayer", function( um )
um:ReadEntity().ATable = {}
end )
end[/lua]
That's pretty much what I'm doing in a nutshell. Is there any hook that is safe to send a usermessage with the new client in?
I don't know if this will work or not, but could you use [b][url=wiki.garrysmod.com/?title=Gamemode.OnEntityCreated]Gamemode.OnEntityCreated [img]http://wiki.garrysmod.com/favicon.ico[/img][/url][/b]?
It's also a shared hook, so you might be able to skip out the networking.
Something like:
[lua]
hook.Add( "OnEntityCreated", "SetupTable", function( ent )
if not ent:IsPlayer() or ent == LocalPlayer() then return end
ent.ATable = {}
end )[/lua]
Damn, how did I miss that? Thanks, I'll try it now.
[editline]27th November 2011[/editline]
It worked, thanks!
Sorry, you need to Log In to post a reply to this thread.