[SAM] Разрешить использовать физган в одной профе

Попробуй:

local function freezePlayer(ply)
	if SERVER then
		ply:Lock()
	end
	
	ply:SetMoveType(MOVETYPE_NONE)
	ply:SetCollisionGroup(COLLISION_GROUP_WORLD)
end

local function isStaffPlayer(ply)
	return ply:Team() == TEAM_STAFF
end

sam.hook("PhysgunPickup", "SAM.RestrictPhysgun", function(ply, target)
	if sam.isplayer(target) and ply:HasPermission("can_physgun_players") and isStaffPlayer(ply) then
		freezePlayer(target)
		return true
	end
end)

sam.hook("PlayerSpawn", "SAM.UnfreezeOnSpawn", function(ply)
	if SERVER then
		ply:UnLock()
		ply:SetMoveType(MOVETYPE_WALK)
		ply:SetCollisionGroup(COLLISION_GROUP_PLAYER)
	end
end)