-- RandomSpawn_kdm1eHvH.lua
-- Положи в lua/autorun/server/RandomSpawn_kdm1eHvH.lua
local SPAWN_POINTS = {
{ pos = Vector( 2282.63, 156.92, 128.03), yaw = -0.15 },
{ pos = Vector( 5046.18, 1307.05, 128.03), yaw = 179.97 },
{ pos = Vector( 2350.12, 2142.61, 136.03), yaw = -89.88 },
{ pos = Vector( 518.04, 1824.21, 136.03), yaw = -0.25 },
{ pos = Vector( -749.05, 934.31, 128.03), yaw = -90.99 },
{ pos = Vector(-2013.13, -1176.20, 128.03), yaw = -0.32 },
{ pos = Vector( 127.96, -2793.39, 136.03), yaw = -0.58 },
{ pos = Vector( 2070.42, -2908.08, 128.03), yaw = 90.24 },
{ pos = Vector( 2533.03, -570.64, 144.03), yaw = -179.15 },
{ pos = Vector( 5075.06, -1735.61, 136.03), yaw = -177.56 },
{ pos = Vector( 5335.56, -4027.44, 136.03), yaw = 179.99 },
{ pos = Vector( 8867.41, -2711.86, 128.03), yaw = 90.76 },
}
local function TeleportToRandomSpawn(ply)
if not IsValid(ply) then return end
if #SPAWN_POINTS == 0 then return end
local point = SPAWN_POINTS[math.random(#SPAWN_POINTS)]
local offset = Vector(math.random(-15, 15), math.random(-15, 15), 0)
ply:SetPos(point.pos + offset)
ply:SetEyeAngles(Angle(0, point.yaw, 0))
ply:SetLocalVelocity(Vector(0, 0, 0))
end
-- Основной хук
hook.Add("PlayerSpawn", "RandomSpawn_kdm1eHvH", function(ply)
timer.Simple(0, function() TeleportToRandomSpawn(ply) end)
end)
-- Дополнительный хук — DarkRP часто юзает его
hook.Add("PostPlayerSpawn", "RandomSpawn_kdm1eHvH_Post", function(ply)
if not IsValid(ply) then return end
TeleportToRandomSpawn(ply)
end)
-- Финальный хук — срабатывает ещё позже, после выдачи оружия и т.д.
hook.Add("PlayerLoadout", "RandomSpawn_kdm1eHvH_Loadout", function(ply)
timer.Simple(0.1, function() TeleportToRandomSpawn(ply) end)
end)
-- Первый заход — на случай если что-то выше не сработало
hook.Add("PlayerInitialSpawn", "RandomSpawn_kdm1eHvH_First", function(ply)
timer.Simple(1, function() TeleportToRandomSpawn(ply) end)
end)