Hier ist was für Gmod10, einfach in Lua/weapons/weapon_hand packen, und die Swep spawnen.
Man kann damit sachen hochheben und rumschubsen und so, von außen hat man nichts in der Hand, also sieht man aus wie ein Npc.
Hab ich nicht gemacht, habs aber auch nicht mehr auf Gmorg gefunden 
	Code:
	if (SERVER) then
	AddCSLuaFile( "shared.lua" )
	SWEP.Weight				= 5
	SWEP.AutoSwitchTo		= false
	SWEP.AutoSwitchFrom		= false
end
if ( CLIENT ) then
	SWEP.PrintName      = "Hands"
	SWEP.Author    = "Termy58"
	SWEP.Contact    = "[email protected]"
	SWEP.DrawAmmo			= false
	SWEP.DrawCrosshair		= false
	SWEP.ViewModelFOV		= 70
	SWEP.ViewModelFlip		= false
	SWEP.CSMuzzleFlashes	= false
end
 
SWEP.Spawnable      = true
SWEP.AdminSpawnable  = true
 
SWEP.ViewModel      = ""
SWEP.WorldModel   = ""
 
SWEP.Primary.ClipSize      = -1
SWEP.Primary.DefaultClip    = -1
SWEP.Primary.Automatic    = false
SWEP.Secondary.ClipSize      = 0
SWEP.Secondary.DefaultClip    = 0
function SWEP:Reload()
	HeldEnt = nil
end
function SWEP:PrimaryAttack()
	if HeldEnt then
		local pent = HeldEnt:GetPhysicsObject( )
		if HeldEnt:IsValid() then
			pent:ApplyForceCenter(self.Owner:GetAimVector()*25000)
		end
		HeldEnt = nil
	else
		local pos = self.Owner:GetShootPos()
		local ang = self.Owner:GetAimVector()
		local tracedata = {}
		tracedata.start = pos
		tracedata.endpos = pos+(ang*75)
		tracedata.filter = self.Owner
		local trace = util.TraceLine(tracedata)
		if (!trace.HitNonWorld) then return false end
		if (!trace.Entity) then return false end
		if (!trace.Entity:IsValid()) then return false end
		if (trace.Entity:IsPlayer())then 
			trace.Entity:TakeDamage(15,self.Owner)
			return
		end
		
		if string.find(trace.Entity:GetClass(),"npc_") then
			util.BlastDamage(self.Owner, self.Owner, trace.Entity:GetPos(), 1, 15) 
			return
		end
		
		if string.find(string.lower(trace.Entity:GetClass()),"door") then
			trace.Entity:Fire("unlock","",0)
		end
		
		local ent = trace.Entity
		local pent = ent:GetPhysicsObject( )
		if pent:GetMass() > 90 then
			pent:ApplyForceCenter( (Vector( self.Owner:GetAimVector() ) * 75) + self.Owner:GetShootPos() * 29 )
			return
		end
		HeldEnt = ent
	end
end
function SWEP:SecondaryAttack()
	if HeldEnt then
		HeldEnt = nil
	else
		local pos = self.Owner:GetShootPos()
		local ang = self.Owner:GetAimVector()
		local tracedata = {}
		tracedata.start = pos
		tracedata.endpos = pos+(ang*75)
		tracedata.filter = self.Owner
		local trace = util.TraceLine(tracedata)
		if (!trace.HitNonWorld) then return false end
		if (!trace.Entity) then return false end
		if (!trace.Entity:IsValid()) then return false end
		if string.find(string.lower(trace.Entity:GetClass()),"door") then
			trace.Entity:Fire("lock","",0)
			return
		end
	end
end
function SWEP:Think()
	if !HeldEnt then return end
	local ent = HeldEnt
	if (!ent:IsValid()) then
		HeldEnt = nil
		return
	end
	local pos = self.Owner:GetShootPos()
	local ang = self.Owner:GetAimVector()
	ent:SetPos(pos+(ang*60))
	ent:SetAngles(self.Owner:GetAngles())
end
function SWEP:Initialize()
	if (CLIENT) then return end
	self:SetWeaponHoldType("normal")
end