GM:PlayerInitialSpawn
Description
Called when the player spawns for the first time.
See GM:PlayerSpawn for a hook called every player spawn.
This hook is called before the player has fully loaded, when the player is still in seeing the
Starting Lua
screen. For example, trying to use the Entity:GetModel function will return the default model (models/player.mdl
).You can send net messages starting from the player_activate event (see Game_Events).
Due to the above note, sending net messages to the spawned player in this hook are highly unreliable, and they most likely won't be received (more information here: https://github.com/Facepunch/garrysmod-requests/issues/718).
Workaround without networking:
local load_queue = {}
hook.Add("PlayerInitialSpawn", "myAddonName/Load", function(ply)
load_queue[ply] = true
end)
hook.Add("SetupMove", "myAddonName/Load", function(ply, _, cmd)
if load_queue[ply] and not cmd:IsForced() then
load_queue[ply] = nil
myAddon:OnPlayerNetReady(ply) -- Send what you need here!
end
end)
With networking:
-- CLIENT
hook.Add( "InitPostEntity", "Ready", function()
net.Start( "cool_addon_client_ready" )
net.SendToServer()
end )
-- SERVER
util.AddNetworkString( "cool_addon_client_ready" )
net.Receive( "cool_addon_client_ready", function( len, ply )
-- Send what you need here!
end )
Arguments
Example
Prints the name of the player joining.
function GM:PlayerInitialSpawn(ply)
print( ply:Nick() .. " joined the server." )
end
-- That way you are overriding the default hook.
-- You can use hook.Add to make more functions get called when this event occurs.
hook.Add( "PlayerInitialSpawn", "some_unique_name", function( ply )
print( ply:Nick() .." joined the game." )
end)
Output:
Player1 joined the game.