From f5022080c635293b75a150cc3028626d073e74b5 Mon Sep 17 00:00:00 2001 From: Astralcircle <142503363+Astralcircle@users.noreply.github.com> Date: Sat, 27 Dec 2025 22:07:50 +0300 Subject: [PATCH 1/5] Fix two timers bugs Fixes #3480 Fixes #3353 --- lua/entities/gmod_wire_expression2/core/timer.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lua/entities/gmod_wire_expression2/core/timer.lua b/lua/entities/gmod_wire_expression2/core/timer.lua index 49781bb96a..5f230e74f1 100644 --- a/lua/entities/gmod_wire_expression2/core/timer.lua +++ b/lua/entities/gmod_wire_expression2/core/timer.lua @@ -104,11 +104,13 @@ local function luaTimerCreate(self, name, delay, repetitions, callback) } timer.Create(internalName, delay, repetitions, function() + if ent:IsValid() then + ent:Execute(callback) + end + if timer.RepsLeft(internalName) == 0 then luaTimers[entIndex][name] = nil end - - ent:Execute(callback) end) end From cb3ad6b4dc44391083df187678c915f94fd83ebb Mon Sep 17 00:00:00 2001 From: Astralcircle <142503363+Astralcircle@users.noreply.github.com> Date: Sat, 27 Dec 2025 22:12:02 +0300 Subject: [PATCH 2/5] Lint pass timers --- .../gmod_wire_expression2/core/timer.lua | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lua/entities/gmod_wire_expression2/core/timer.lua b/lua/entities/gmod_wire_expression2/core/timer.lua index 5f230e74f1..80436ede19 100644 --- a/lua/entities/gmod_wire_expression2/core/timer.lua +++ b/lua/entities/gmod_wire_expression2/core/timer.lua @@ -8,14 +8,14 @@ local timerid = 0 local function Execute(self, name) self.data.timer.runner = name - self.data['timer'].timers[name] = nil + self.data["timer"].timers[name] = nil if(self.entity and self.entity.Execute) then self.entity:Execute() end - if !self.data['timer'].timers[name] then - timer.Remove("e2_" .. self.data['timer'].timerid .. "_" .. name) + if !self.data["timer"].timers[name] then + timer.Remove("e2_" .. self.data["timer"].timerid .. "_" .. name) end self.data.timer.runner = nil @@ -31,19 +31,19 @@ local function AddTimer(self, name, delay) Execute(self, name) end) timer.Start(timerName) - elseif !self.data['timer'].timers[name] then + elseif !self.data["timer"].timers[name] then timer.Create(timerName, delay / 1000, 2, function() Execute(self, name) end) end - self.data['timer'].timers[name] = true + self.data["timer"].timers[name] = true end local function RemoveTimer(self, name) - if self.data['timer'].timers[name] then - timer.Remove("e2_" .. self.data['timer'].timerid .. "_" .. name) - self.data['timer'].timers[name] = nil + if self.data["timer"].timers[name] then + timer.Remove("e2_" .. self.data["timer"].timerid .. "_" .. name) + self.data["timer"].timers[name] = nil end end @@ -130,15 +130,15 @@ end /******************************************************************************/ registerCallback("construct", function(self) - self.data['timer'] = {} - self.data['timer'].timerid = timerid - self.data['timer'].timers = {} + self.data["timer"] = {} + self.data["timer"].timerid = timerid + self.data["timer"].timers = {} timerid = timerid + 1 end) registerCallback("destruct", function(self) - for name,_ in pairs(self.data['timer'].timers) do + for name,_ in pairs(self.data["timer"].timers) do RemoveTimer(self, name) end From c1a21f4251674adc7e6710545dc1ed84c4b36072 Mon Sep 17 00:00:00 2001 From: Astralcircle <142503363+Astralcircle@users.noreply.github.com> Date: Sat, 27 Dec 2025 22:14:48 +0300 Subject: [PATCH 3/5] More lint passing --- lua/entities/gmod_wire_expression2/core/timer.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/entities/gmod_wire_expression2/core/timer.lua b/lua/entities/gmod_wire_expression2/core/timer.lua index 80436ede19..323b61ce64 100644 --- a/lua/entities/gmod_wire_expression2/core/timer.lua +++ b/lua/entities/gmod_wire_expression2/core/timer.lua @@ -14,7 +14,7 @@ local function Execute(self, name) self.entity:Execute() end - if !self.data["timer"].timers[name] then + if not self.data["timer"].timers[name] then timer.Remove("e2_" .. self.data["timer"].timerid .. "_" .. name) end @@ -31,7 +31,7 @@ local function AddTimer(self, name, delay) Execute(self, name) end) timer.Start(timerName) - elseif !self.data["timer"].timers[name] then + elseif not self.data["timer"].timers[name] then timer.Create(timerName, delay / 1000, 2, function() Execute(self, name) end) @@ -71,7 +71,7 @@ local function luaTimerGetNextIncrementalKey(self) end local function luaTimerGetInternalName(entIndex, name) - return entIndex .. '_gmod_wire_expression2_luatimer_' .. name + return entIndex .. "_gmod_wire_expression2_luatimer_" .. name end local function luaTimerExists(self, name) From efcc6895ae139488a6c8c0b77e7293a472d7ada0 Mon Sep 17 00:00:00 2001 From: Astralcircle <142503363+Astralcircle@users.noreply.github.com> Date: Sun, 28 Dec 2025 01:11:10 +0300 Subject: [PATCH 4/5] Fix possible nil error --- lua/entities/gmod_wire_expression2/core/timer.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/entities/gmod_wire_expression2/core/timer.lua b/lua/entities/gmod_wire_expression2/core/timer.lua index 323b61ce64..97ec5ab290 100644 --- a/lua/entities/gmod_wire_expression2/core/timer.lua +++ b/lua/entities/gmod_wire_expression2/core/timer.lua @@ -108,7 +108,7 @@ local function luaTimerCreate(self, name, delay, repetitions, callback) ent:Execute(callback) end - if timer.RepsLeft(internalName) == 0 then + if timer.RepsLeft(internalName) == 0 and luaTimers[entIndex] then luaTimers[entIndex][name] = nil end end) From 431b5022a94225fd08088d114c32dfa3deccd0da Mon Sep 17 00:00:00 2001 From: Astralcircle <142503363+Astralcircle@users.noreply.github.com> Date: Sun, 28 Dec 2025 02:05:43 +0300 Subject: [PATCH 5/5] This should be fixed another way --- lua/entities/gmod_wire_expression2/core/timer.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lua/entities/gmod_wire_expression2/core/timer.lua b/lua/entities/gmod_wire_expression2/core/timer.lua index 97ec5ab290..a1da77a54a 100644 --- a/lua/entities/gmod_wire_expression2/core/timer.lua +++ b/lua/entities/gmod_wire_expression2/core/timer.lua @@ -104,9 +104,7 @@ local function luaTimerCreate(self, name, delay, repetitions, callback) } timer.Create(internalName, delay, repetitions, function() - if ent:IsValid() then - ent:Execute(callback) - end + ent:Execute(callback) if timer.RepsLeft(internalName) == 0 and luaTimers[entIndex] then luaTimers[entIndex][name] = nil