у меня есть вот такой код на автоневидимый ноуклип, но мне нужно на него поставить проверку на привилегию игрока (moderator) и мне нужна помощь с этим
timer.Create( "NoclipCloak", 0.1, 0, function()
for k,pl in pairs(player.GetAll()) do
local oldstate = pl:GetMoveType()
if oldstate != MOVETYPE_NOCLIP or pl:InVehicle() then
pl:SetColor(Color( 255, 255, 255, 255 ));
pl:SetNoDraw(false)
else
pl:SetColor(Color( 255, 255, 255, 0 ));
pl:SetNoDraw(true)
end
end
end )
Зачем использовать бесконечный таймер?
В гмоде есть хуки…
Вот самый дефолтный код на невидимость в ноклипе
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)