PLUGIN.name = "NLR System" PLUGIN.author = "RefoselTeamWork" PLUGIN.description = "New Life Rule система для Military RP" -- Конфигурация зон для каждой фракции PLUGIN.config = { -- Время NLR после смерти (в секундах) nlrTime = 300, -- 5 минут -- Время предупреждения перед смертью (в секундах) warningTime = 15, -- 1 минута -- Разрешенные зоны для каждой фракции zones = { -- Россия [FACTION_RUSSIAN] = { -- Основная база { min = Vector(16209.329102, 16203.910156, -1046.129639), max = Vector(10388.949219, 9995.708984, 2110.358643), name = "Российская база" }, -- База Русичей (добавлено чтобы NLR не убивал при спавне) { min = Vector(7412.163574, 14589.896484, -287.295044), max = Vector(6238.277832, 13538.660156, 769.099426), name = "База Русичей" }, -- База Украины (теперь РФ может быть тут без NLR) { min = Vector(-16190.572266, -12279.253906, 1879.668945), max = Vector(-12284.045898, -4947.237305, -458.217285), name = "Украинская база" } }, -- Украина [FACTION_UKRAINE] = { -- Основная база { min = Vector(-16190.572266, -12279.253906, 1879.668945), max = Vector(-12284.045898, -4947.237305, -458.217285), name = "Украинская база" }, -- База России (теперь УК может быть тут без NLR) { min = Vector(16209.329102, 16203.910156, -1046.129639), max = Vector(10388.949219, 9995.708984, 2110.358643), name = "Российская база" }, -- База Русичей { min = Vector(7412.163574, 14589.896484, -287.295044), max = Vector(6238.277832, 13538.660156, 769.099426), name = "База Русичей" } } } } -- Проверка, находится ли позиция в зоне function PLUGIN:IsInZone(pos, zone) -- Нормализуем координаты зоны (min должен быть меньше max) local minX = math.min(zone.min.x, zone.max.x) local maxX = math.max(zone.min.x, zone.max.x) local minY = math.min(zone.min.y, zone.max.y) local maxY = math.max(zone.min.y, zone.max.y) local minZ = math.min(zone.min.z, zone.max.z) local maxZ = math.max(zone.min.z, zone.max.z) return pos.x >= minX and pos.x <= maxX and pos.y >= minY and pos.y <= maxY and pos.z >= minZ and pos.z <= maxZ end -- Проверка, находится ли игрок в разрешенной зоне function PLUGIN:IsPlayerInAllowedZone(ply) local char = ply:GetCharacter() if not char then return false end local faction = char:GetFaction() local zones = self.config.zones[faction] if not zones then return false end local pos = ply:GetPos() for _, zone in ipairs(zones) do if self:IsInZone(pos, zone) then return true, zone.name end end return false end -- Локализация if CLIENT then ix.lang.AddTable("russian", { nlrResetSuccess = "NLR игрока %s успешно сброшен", nlrNotActive = "У игрока %s нет активного NLR", cmdResetNLR = "Сбросить NLR игрока" }) ix.lang.AddTable("english", { nlrResetSuccess = "NLR of %s has been reset", nlrNotActive = "Player %s has no active NLR", cmdResetNLR = "Reset player's NLR" }) end ix.util.Include("sv_plugin.lua") ix.util.Include("cl_plugin.lua")