add sborka

This commit is contained in:
2026-03-31 10:27:04 +03:00
commit f5e5f56c84
2345 changed files with 382127 additions and 0 deletions

View File

@@ -0,0 +1,112 @@
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")