Files
VnUtest/garrysmod/gamemodes/militaryrp/plugins/nlr/sh_plugin.lua
2026-03-31 10:27:04 +03:00

113 lines
4.1 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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")