Advertisement
TylerB

grabber

Dec 10th, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.34 KB | None | 0 0
  1. timer.Simple(1, function()
  2.     local ENT = {}
  3.     ENT.Base = "base_wire_entity"
  4.     ENT.PrintName       = "Wire User"
  5.     ENT.WireDebugName   = "User"
  6.  
  7.     function ENT:SetupDataTables()
  8.         self:NetworkVar( "Float", 0, "BeamLength" )
  9.     end
  10.  
  11.     if CLIENT then return end -- No more client
  12.  
  13.     function ENT:Initialize()
  14.         self:PhysicsInit( SOLID_VPHYSICS )
  15.         self:SetMoveType( MOVETYPE_VPHYSICS )
  16.         self:SetSolid( SOLID_VPHYSICS )
  17.         self.Inputs = Wire_CreateInputs(self, { "Fire"})
  18.         self:Setup(2048)
  19.     end
  20.  
  21.     function ENT:Setup(Range)
  22.         if Range then self:SetBeamLength(Range) end
  23.     end
  24.  
  25.     function ENT:TriggerInput(iname, value)
  26.         if (iname == "Fire") then
  27.             if (value ~= 0) then
  28.                 local vStart = self:GetPos()
  29.  
  30.                 local trace = util.TraceLine( {
  31.                     start = vStart,
  32.                     endpos = vStart + (self:GetUp() * self:GetBeamLength()),
  33.                     filter = { self },
  34.                 })
  35.  
  36.                 if not IsValid(trace.Entity) then return false end
  37.                
  38.                 local ply = self:GetPlayer()
  39.                
  40.                 if not IsValid(ply) then ply = self end
  41.  
  42.                 if trace.Entity:IsVehicle() then return end
  43.                
  44.                 if trace.Entity.Use then
  45.                     trace.Entity:Use(ply,self,USE_ON,0)
  46.                 else
  47.                     trace.Entity:Fire("use","1",0)
  48.                 end
  49.             end
  50.         end
  51.     end
  52.  
  53.     duplicator.RegisterEntityClass("gmod_wire_user", WireLib.MakeWireEnt, "Data", "Range")
  54.    
  55.     scripted_ents.Register(ENT,"gmod_wire_user")
  56. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement