[SAM] Как сделать что бы определенные ранги были неприкосновенными физганом

hook.Add(“Initialize”, “Custom_SAM_Physgun”, function()
local function freeze_player(ply)
if SERVER then
ply:Lock()
end

	ply:SetMoveType(MOVETYPE_NONE)
	ply:SetCollisionGroup(COLLISION_GROUP_WORLD)
end

sam.hook_first("PhysgunPickup", "SAM.CanPhysgunPlayer", function(ply, target)
	if sam.type(target) == "Player" and 
		ply:HasPermission("can_physgun_players") and 
		ply:CanTarget(target) and
		ply:Team() == TEAM_ADMIN  -- обязательньно к редактированию
	then
		freeze_player(target)
		return true
	end
end)

end)
Помогите допилить. Нужно чтобы root и superadmin’a ВОПШЕ админы ниже ранга не могли брать выше!

Вот скрипт, в следующий раз напиши нормальное название темы!

hook.Add("Initialize", "Custom_SAM_Physgun", function()
    local function freeze_player(ply)
        if SERVER then
            ply:Lock()
        end

        ply:SetMoveType(MOVETYPE_NONE)
        ply:SetCollisionGroup(COLLISION_GROUP_WORLD)
    end

    sam.hook_first("PhysgunPickup", "SAM.CanPhysgunPlayer", function(ply, target)
        if sam.type(target) == "Player" and 
            ply:HasPermission("can_physgun_players") and 
            ply:CanTarget(target) and
            not (target:IsUserGroup("superadmin") or target:IsUserGroup("root")) 
        then
            freeze_player(target)
            return true
        end
    end)
end)


Пропиши иммунитет привилегии

1 лайк

Пусть сам сидит прописывает, его неадекватность реально зашкаливает.

2 лайка

Вот так?
function sam.ranks.can_target(rank_1, rank_2)
rank_1, rank_2 = sam.ranks.get_rank(rank_1), sam.ranks.get_Rank(rank_2)
if not rank_1 or not rank_2 then
return false
end
return rank_1.immunity >= rank_2.immunity
end
local can_target = sam.ranks.can_target
function PLAYER:CanTarget(ply)
return can_target(self:sam_getrank(), ply:sam_getrank())
end

hook.Add(“Initialize”, “Custom_SAM_Physgun”, function()
local function freeze_player(ply)
if SERVER then
ply:Lock()
end

	ply:SetMoveType(MOVETYPE_NONE)
	ply:SetCollisionGroup(COLLISION_GROUP_WORLD)
end

sam.hook_first("PhysgunPickup", "SAM.CanPhysgunPlayer", function(ply, target)
	if sam.type(target) == "Player" and 
		ply:HasPermission("can_physgun_players") and 
		ply:CanTarget(target) and
		ply:Team() == TEAM_STAFF  -- обязательньно к редактированию
	then
		freeze_player(target)
		return true
	end
end)

end)