Quantum is a Garry's Mod RPG framework.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
quantum/gamemode/core/server/sv_player_spawning.lua

38 lines
1.5 KiB

-- __ _ _______ _ __
-- / / /\ | | |__ __| | | \ \
-- / / / \ | |_ __ ___ | | ___ ___| |__ \ \
-- < < / /\ \ | | '_ ` _ \| |/ _ \/ __| '_ \ > >
-- \ \ / ____ \| | | | | | | | __/ (__| | | | / /
-- \_\ /_/ \_\_|_| |_| |_|_|\___|\___|_| |_| /_/
hook.Add( "PlayerDeath", "Quantum_Player_SaveDeathPos", function( pl )
pl.deathpos = pl:GetPos()
end)
hook.Add( "PlayerSpawn", "Quantum_Player_Respawn", function( pl )
if( pl.isloaded && pl.deathpos ) then
local spawnposdist = {}
for id, spawnpoint in pairs( Quantum.Server.Settings.SpawnLocations[ game.GetMap() ] ) do
spawnposdist[id] = { dist = spawnpoint.pos:Distance( pl.deathpos ), spawnpos = spawnpoint.pos, angle = spawnpoint.ang }
end
local maxdist, spawnpos, spawnangle
for id, spawn in pairs( spawnposdist ) do -- Loop through everything and pick the nearest spawnpoint
if( maxdist ~= nil ) then
if( maxdist >= spawn.dist ) then
maxdist = spawn.dist
spawnpos = spawn.spawnpos
spawnangle = spawn.angle
end
else
maxdist = spawn.dist
spawnpos = spawn.spawnpos
spawnangle = spawn.angle
end
end
Quantum.Debug( "Respawning player at nearest spawnpoint." )
pl:SetPos( spawnpos )
pl:SetAngles( spawnangle )
end
end)