Загрузка данных


-- 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)