Garry's Mod Wiki


GM:PlayerInitialSpawn( Player player, boolean transition )


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")
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. See

Current dirty hack without networking:

hook.Add( "PlayerInitialSpawn", "FullLoadSetup", function( ply ) hook.Add( "SetupMove", ply, function(self, ply, _, cmd ) if self == ply and not cmd:IsForced() then hook.Run( "PlayerFullLoad", self ) hook.Remove( "SetupMove", self ) end 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 )


1 Player player
The player who spawned.
2 boolean transition
If true, the player just spawned from a map transition.


Prints the name of the player joining.

function GM:PlayerInitialSpawn(ply) print( ply:GetName().." joined the server.\n" ) end -- That way you are overriding the default hook -- you can use hook.Add to make more functions get called when this event occurs local function spawn(ply) print( ply:GetName().." joined the game.\n") end hook.Add( "PlayerInitialSpawn", "some_unique_name", spawn )
Output: Player1 joined the game

Page Links

Special Pages



Render Time: 80ms

DB GetPage 46
Generate Html 12
SaveChanges (1) 12
Render Body 0
Render Sidebar 7