From 5575d57ff5a8949c4ceeba6ce181ddb1a4a5065c Mon Sep 17 00:00:00 2001 From: alexandr_sizov Date: Fri, 4 Feb 2022 16:09:28 +0300 Subject: [PATCH] Fixed hook to work in ARSonly signal --- lua/entities/gmod_track_signal/init.lua | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lua/entities/gmod_track_signal/init.lua b/lua/entities/gmod_track_signal/init.lua index 474a4d3..3dfdc0d 100644 --- a/lua/entities/gmod_track_signal/init.lua +++ b/lua/entities/gmod_track_signal/init.lua @@ -598,6 +598,11 @@ function ENT:Think() if self.KGU then number = number.."K" end if number then self:SetNW2String("Number",number) end + if self.Occupied ~= self.OccupiedOld then + hook.Run("Metrostroi.Signaling.ChangeRCState", self.Name, self.Occupied, self) + self.OccupiedOld = self.Occupied + end + if self.ARSOnly then if self.Sprites then for k,v in pairs(self.Sprites) do @@ -651,12 +656,17 @@ function ENT:Think() local number = self.RouteNumberReplace or "" if self.ControllerLogicCheckOccupied then self.PrevTime = self.PrevTime or 0 - if (CurTime() - self.PrevTime) > 1.0 then + if (CurTime() - self.PrevTime) > 0.5 then self.PrevTime = CurTime() + math.random(0.5,1.5) if self.Node and self.TrackPosition then self.Occupied,self.OccupiedBy,self.OccupiedByNow = Metrostroi.IsTrackOccupied(self.Node, self.TrackPosition.x,self.TrackPosition.forward,self.ARSOnly and "ars" or "light", self) end end + if self.Occupied ~= self.OccupiedOld then + hook.Run("Metrostroi.Signaling.ChangeRCState", self.Name, self.Occupied, self) + self.OccupiedOld = self.Occupied + end + end --[[ if self.MU or self.ARSOnly or self.RouteNumberSetup and self.RouteNumberSetup ~= "" or self.RouteNumber and self.RouteNumber ~= "" then @@ -697,10 +707,7 @@ function ENT:Think() end end end - if self.Occupied ~= self.OccupiedOld then - hook.Run("Metrostroi.Signaling.ChangeRCState", self.Name, self.Occupied, self) - self.OccupiedOld = self.Occupied - end + if self.Controllers then for k,v in pairs(self.Controllers) do if self.Sig ~= v.Sig then