Currency System error

Well, I have made my own Money system… and I have no idea if I have done this right. But I know I have…

function GM:PlayerInitialSpawn( ply )
    if (ply:GetPData( "coins" ) == nil) then
	   ply:SetNWInt( "coins", 100 )
	   ply:SetNWString( "location", "UNKNOWN" )
	   	ply:SetNWInt( "coins", ply:GetPData( "coins" ) )
	    ply:SetNWString( "location", "UNKNOWN" )
	-- Place Checker
	timer.Create( "LocationTimer", 1, 0, function() 
	if !ply:Alive() then
	   ply:SetNWString( "location", "HEAVEN" )
	   elseif ply:Alive() then
	   ply:SetNWString( "location", "OUTSIDE" )

And this is meant to load when the Player Joins but it dosen’t! In my addon I used Hook.Add, and it worked… as soon as I add this to my Gamemode its like, nope I don’t want to work anymore!

And when they disconnect it sets there PData… but when they join it dosen’t load. But if I reload the gamemode it works? wtf…
Anyone know>

Unrelated but you could just use

GM:PlayerDeath and

GM:PlayerSpawn to set the location to heaven or outside rather than a timer

What do you mean unrelated? Its my Currency like Money… it dosent load on spawn

I mean my post was unrelated to the problem. Also, where’s this file (the one with the GM:PlayerIntialSpawn thing) located? Maybe it’s in a location where it isn’t being run or something

init.lua, and everything in it loads but it…
any ideas?