--Конфиг
local immunity_time = 300 --Время неприкосновенности
local needteam = "Mayor" --Название профы с неприкосновенностью в Ф4/Табе
local text = "Неприкосновенность мэра: %d сек." --Текст неприкосновенности, %d - время в секундах
local text_size = 24 --Размер текста
local damage_punishment = 1 --Наказание за нанесение урона в неприкосновенность: 0 - ничего(ты можешь убивать, а тебя нет), 1 - запрещает наносить дамаг мэру.
--Пасте с хука адвансед рп
if SERVER then
print("Неприкосновенность загружена!")
util.AddNetworkString("mayorgod_hud")
local function SendMayorSafeBool(bool)
net.Start("mayorgod_hud")
punishBool = bool
net.WriteBool(bool)
net.Broadcast()
end
hook.Add("OnPlayerChangedTeam", "mayorgod", function(ply, oldjob , newjob)
if team.GetName(newjob) == needteam then
DarkRP.notify( ply, 1, 4, "Вы получили неприкосновенность на ".. immunity_time .." секунд!" )
ply:GodEnable()
SendMayorSafeBool(true)
timer.Create("mayorSafeSystem" , immunity_time , 1 , function()
ply:GodDisable()
DarkRP.notify( ply, 1, 4, "Неприкосновенность закончилась." )
SendMayorSafeBool(false)
end)
elseif team.GetName(oldjob) == needteam then
ply:GodDisable()
SendMayorSafeBool(false)
timer.Remove("mayorSafeSystem")
end
end)
hook.Add("PlayerDisconnected" , "ifuserleavemayor" , function(ply)
if team.GetName(ply:Team()) == needteam and timer.Exists( "mayorSafeSystem" ) then
SendMayorSafeBool(false)
timer.Remove("mayorSafeSystem")
end
end)
if damage_punishment == 1 then
hook.Add("EntityTakeDamage", "punishment_one", function( target, dmginfo )
attacker = dmginfo:GetAttacker()
if (target:IsPlayer() and team.GetName(attacker:Team()) == needteam and punishBool == true ) then
dmginfo:ScaleDamage(0)
end
end)
else
hook.Remove("EntityTakeDamage", "punishment_one")
end
else
surface.CreateFont( "immunity_font", {
font = "Arial",
extended = false,
size = text_size,
weight = 500,
blursize = 0,
scanlines = 0,
antialias = true,
underline = false,
italic = false,
strikeout = false,
symbol = false,
rotary = false,
shadow = false,
additive = false,
outline = false,
} )
local MayorActive = false
local timer
net.Receive("mayorgod_hud" , function()
local bool = net.ReadBool()
MayorActive = bool
timer = immunity_time+os.time()
end)
hook.Add("HUDPaint", "ClientMayorHud" , function()
if MayorActive then
timey = timer - os.time()
local texts = string.format(text, timey)
draw.SimpleTextOutlined(texts , "immunity_font" , 0, ScrH()/2, color_white, nil , nil, 1, Color(0,0,0))
end
end)
end