add sborka
This commit is contained in:
112
garrysmod/gamemodes/militaryrp/plugins/nlr/sh_plugin.lua
Normal file
112
garrysmod/gamemodes/militaryrp/plugins/nlr/sh_plugin.lua
Normal 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")
|
||||
Reference in New Issue
Block a user