Зачем использовать бесконечный таймер?
В гмоде есть хуки…
Вот самый дефолтный код на невидимость в ноклипе
function cloak(e) e:SetNoDraw(true) end
function uncloak(e) e:SetNoDraw(false) end
function wpcloak(e)
if IsValid(e:GetActiveWeapon()) then
cloak(e:GetActiveWeapon())
end
for a,b in ipairs(ents.FindByClass("physgun_beam")) do
if b:GetParent() == e then
b:SetNoDraw(true)
end
end
end
function wpuncloak(e)
if IsValid(e:GetActiveWeapon()) then
uncloak(e:GetActiveWeapon())
end
for a,b in ipairs(ents.FindByClass("physgun_beam")) do
if b:GetParent() == e then
b:SetNoDraw(false)
end
end
end
local DontHide = { -- сюда указывай ранги для которых не будет устанавливаться невидимость
['user'] = true,
['vip'] = true,
['dmoderator'] = true,
['dadmin'] = true,
['привилегия'] = true,
['привилегия'] = true,
}
function callCloak(ply, desiredNoClipState)
if not ply:IsValid() then return end
if DontHide[ply:GetUserGroup()] then return end
if !ply:GetBVar('adminmode') or !ply:Team() == TEAM_ADMIN then return end
if ( desiredNoClipState ) then
cloak(ply)
wpcloak(ply)
else
uncloak(ply)
wpuncloak(ply)
end
end
hook.Add("PlayerNoClip", "isInNoClip", callCloak)