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