-- __ _ _______ _ __ -- / / /\ | | |__ __| | | \ \ -- / / / \ | |_ __ ___ | | ___ ___| |__ \ \ -- < < / /\ \ | | '_ ` _ \| |/ _ \/ __| '_ \ > > -- \ \ / ____ \| | | | | | | | __/ (__| | | | / / -- \_\ /_/ \_\_|_| |_| |_|_|\___|\___|_| |_| /_/ 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)