AddCSLuaFile() DEFINE_BASECLASS( "gmod_wire_socket" ) ENT.PrintName = "Wire Data Socket" ENT.WireDebugName = "Socket" function ENT:GetPlugClass() return "gmod_wire_dataplug" end if CLIENT then -- hook.Add("HUDPaint","Wire_DataSocket_DrawLinkHelperLine",function() -- local sockets = ents.FindByClass("gmod_wire_datasocket") -- for k,self in pairs( sockets ) do -- local Pos, _ = self:GetLinkPos() -- local Closest = self:GetClosestPlug() -- if IsValid(Closest) and self:CanLink(Closest) and Closest:GetNWBool( "PlayerHolding", false ) and Closest:GetClosestSocket() == self then -- local plugpos = Closest:GetPos():ToScreen() -- local socketpos = Pos:ToScreen() -- surface.SetDrawColor(255,255,100,255) -- surface.DrawLine(plugpos.x, plugpos.y, socketpos.x, socketpos.y) -- end -- end -- end) function ENT:DrawEntityOutline() end -- never draw outline return end function ENT:Initialize() self:PhysicsInit( SOLID_VPHYSICS ) self:SetMoveType( MOVETYPE_VPHYSICS ) self:SetSolid( SOLID_VPHYSICS ) self.Inputs = WireLib.CreateInputs(self, { "Memory" }) self.Outputs = WireLib.CreateOutputs(self, { "Memory" }) WireLib.TriggerOutput(self, "Memory", 0) self.Memory = nil end function ENT:Setup( WeldForce, AttachRange ) self.WeldForce = WeldForce or 5000 self.AttachRange = AttachRange or 5 self:SetNWInt( "AttachRange", self.AttachRange ) end -- Override some functions from gmod_wire_socket function ENT:ResendValues() self:SetMemory(self.Plug.Memory) end function ENT:ResetValues() self.Memory = nil --We're now getting no signal WireLib.TriggerOutput(self, "Memory", 0) end duplicator.RegisterEntityClass( "gmod_wire_datasocket", WireLib.MakeWireEnt, "Data", "WeldForce", "AttachRange" ) function ENT:SetMemory(mement) self.Memory = mement WireLib.TriggerOutput(self, "Memory", 1) end function ENT:ReadCell( Address, infloop ) infloop = infloop or 0 if infloop > 50 then return end Address = math.floor(Address) if (self.Memory) then if (self.Memory.ReadCell) then return self.Memory:ReadCell( Address, infloop + 1 ) else return nil end else return nil end end function ENT:WriteCell( Address, value, infloop ) infloop = infloop or 0 if infloop > 50 then return end Address = math.floor(Address) if (self.Memory) then if (self.Memory.WriteCell) then return self.Memory:WriteCell( Address, value, infloop + 1 ) else return false end else return false end end function ENT:TriggerInput(iname, value, iter) if (iname == "Memory") then self.OwnMemory = self.Inputs.Memory.Src end end -- Override dupeinfo functions from wire plug function ENT:BuildDupeInfo() local info = BaseClass.BuildDupeInfo(self) if info.Socket then info.Socket.ArrayInput = nil end -- this input is not used on this entity return info end function ENT:GetApplyDupeInfoParams(info) return info.Socket.WeldForce, info.Socket.AttachRange end duplicator.RegisterEntityClass("gmod_wire_datasocket", WireLib.MakeWireEnt, "Data", "WeldForce", "AttachRange")