Skip to content

Commit 808b855

Browse files
authored
Fix timers stop existing on last repetition (#3481)
* Fix two timers bugs Fixes #3480 Fixes #3353 * Lint pass timers * More lint passing * Fix possible nil error * This should be fixed another way
1 parent 29816ed commit 808b855

File tree

1 file changed

+16
-16
lines changed
  • lua/entities/gmod_wire_expression2/core

1 file changed

+16
-16
lines changed

lua/entities/gmod_wire_expression2/core/timer.lua

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ local timerid = 0
88
local function Execute(self, name)
99
self.data.timer.runner = name
1010

11-
self.data['timer'].timers[name] = nil
11+
self.data["timer"].timers[name] = nil
1212

1313
if(self.entity and self.entity.Execute) then
1414
self.entity:Execute()
1515
end
1616

17-
if !self.data['timer'].timers[name] then
18-
timer.Remove("e2_" .. self.data['timer'].timerid .. "_" .. name)
17+
if not self.data["timer"].timers[name] then
18+
timer.Remove("e2_" .. self.data["timer"].timerid .. "_" .. name)
1919
end
2020

2121
self.data.timer.runner = nil
@@ -31,19 +31,19 @@ local function AddTimer(self, name, delay)
3131
Execute(self, name)
3232
end)
3333
timer.Start(timerName)
34-
elseif !self.data['timer'].timers[name] then
34+
elseif not self.data["timer"].timers[name] then
3535
timer.Create(timerName, delay / 1000, 2, function()
3636
Execute(self, name)
3737
end)
3838
end
3939

40-
self.data['timer'].timers[name] = true
40+
self.data["timer"].timers[name] = true
4141
end
4242

4343
local function RemoveTimer(self, name)
44-
if self.data['timer'].timers[name] then
45-
timer.Remove("e2_" .. self.data['timer'].timerid .. "_" .. name)
46-
self.data['timer'].timers[name] = nil
44+
if self.data["timer"].timers[name] then
45+
timer.Remove("e2_" .. self.data["timer"].timerid .. "_" .. name)
46+
self.data["timer"].timers[name] = nil
4747
end
4848
end
4949

@@ -71,7 +71,7 @@ local function luaTimerGetNextIncrementalKey(self)
7171
end
7272

7373
local function luaTimerGetInternalName(entIndex, name)
74-
return entIndex .. '_gmod_wire_expression2_luatimer_' .. name
74+
return entIndex .. "_gmod_wire_expression2_luatimer_" .. name
7575
end
7676

7777
local function luaTimerExists(self, name)
@@ -104,11 +104,11 @@ local function luaTimerCreate(self, name, delay, repetitions, callback)
104104
}
105105

106106
timer.Create(internalName, delay, repetitions, function()
107-
if timer.RepsLeft(internalName) == 0 then
107+
ent:Execute(callback)
108+
109+
if timer.RepsLeft(internalName) == 0 and luaTimers[entIndex] then
108110
luaTimers[entIndex][name] = nil
109111
end
110-
111-
ent:Execute(callback)
112112
end)
113113
end
114114

@@ -128,15 +128,15 @@ end
128128
/******************************************************************************/
129129

130130
registerCallback("construct", function(self)
131-
self.data['timer'] = {}
132-
self.data['timer'].timerid = timerid
133-
self.data['timer'].timers = {}
131+
self.data["timer"] = {}
132+
self.data["timer"].timerid = timerid
133+
self.data["timer"].timers = {}
134134

135135
timerid = timerid + 1
136136
end)
137137

138138
registerCallback("destruct", function(self)
139-
for name,_ in pairs(self.data['timer'].timers) do
139+
for name,_ in pairs(self.data["timer"].timers) do
140140
RemoveTimer(self, name)
141141
end
142142

0 commit comments

Comments
 (0)