-- 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
-- Основной хук для DarkRP: определяет точку спавна
hook.Add("PlayerSelectSpawn", "RandomSpawn_kdm1eHvH", function(ply)
local point = SPAWN_POINTS[math.random(#SPAWN_POINTS)]
if not point then return end
local spawnEnt = ents.Create("info_player_start")
spawnEnt:SetPos(point.pos)
spawnEnt:SetAngles(Angle(0, point.yaw, 0))
spawnEnt:Spawn()
-- Удаляем временную точку через секунду
timer.Simple(1, function()
if IsValid(spawnEnt) then spawnEnt:Remove() end
end)
return spawnEnt
end)
-- Дополнительный хук: телепорт на случай, если DarkRP все равно перезапишет позицию
hook.Add("PostPlayerSpawn", "RandomSpawn_kdm1eHvH_Post", function(ply)
if not IsValid(ply) then return end
timer.Simple(0.1, function() TeleportToRandomSpawn(ply) end)
end)