Попробуй:
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)