AddCSLuaFile("cl_init.lua") AddCSLuaFile("shared.lua") include("shared.lua") local Controller = {} local Targets = {} local Next function ENT:Initialize() self.Entity:PhysicsInit(SOLID_VPHYSICS) self.Entity:SetMoveType( MOVETYPE_NONE ) self.Entity:SetSolid(SOLID_VPHYSICS) Controller[self.Entity:EntIndex()] = {} Controller[self.Entity:EntIndex()]["target"] ="CrashSaveString" Controller[self.Entity:EntIndex()]["pos"] = self.Entity:GetPos() Controller[self.Entity:EntIndex()]["angles"] = self.Entity:GetAngles() Controller[self.Entity:EntIndex()]["model"] = self.Entity:GetModel() if WireAddon then self.Inputs = Wire_CreateInputs(self.Entity,{"Open", "Close","Toggle","Lock", "Unlock",}) end end function ENT:TheDoor(ent,door) if(ent == self.Entity:EntIndex()) then Controller[self.Entity:EntIndex()]["target"] = door end end function ENT:Think() if(self.Entity:GetPos() != Controller[self.Entity:EntIndex()]["pos"]) then self.Entity:SetPos(Controller[self.Entity:EntIndex()]["pos"]) end if(self.Entity:GetAngles() != Controller[self.Entity:EntIndex()]["angles"]) then self.Entity:SetAngles(Controller[self.Entity:EntIndex()]["angles"]) end if(Next == nil) then Next = CurTime()+10 end if(CurTime() > Next)then RespawnController() Next = CurTime()+5 end end function RespawnController() for ID,k in pairs(Controller) do if(CheckTarget(ID))then local ent = ents.Create("wire_door_controller") if (!ent:IsValid()) then return end ent:SetModel(k["model"]) ent:SetPos(k["pos"]) ent:SetAngles(k["angles"]) ent:Spawn() ent:Activate() local newId = ent:EntIndex() Controller[newId] = {} Controller[newId]["target"] = k["target"] Controller[newId]["pos"] = k["pos"] Controller[newId]["angles"] = k["angles"] Controller[newId]["model"] = k["model"] end end end function CheckTarget(Check) local Target = Controller[Check]["target"] Targets[Target] = false for ID,k in pairs(Controller) do local TempEnt = ents.GetByIndex(ID) local tar = k["target"] if(TempEnt:IsValid())then if(TempEnt:GetClass()=="wire_door_controller")then Targets[tar]=true end end end if(Targets[Target]) then return false else return true end end function ENT:TriggerInput(key,value) local todo if (key == "Open") then if value == 1 then todo="Open" end elseif (key == "Close") then if value == 1 then todo="Close" end elseif (key == "Toggle") then if value == 1 then todo="Toggle" end elseif (key == "Lock") then if value == 1 then todo="Lock" end elseif (key == "Unlock") then if value == 1 then todo="unlock" end end for i,v in pairs(ents.FindByName(Controller[self.Entity:EntIndex()]["target"])) do if(v:GetClass()=="func_door" or v:GetClass()=="func_door_rotating" or v:GetClass()=="prop_door_rotating" and v:IsValid()) then v:Fire(todo, "", 0) end end end