mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-29 09:18:53 +00:00
fix(timeout): Fix server timeout problems (clock too slow) under rare conditions
This commit is contained in:
+2
-24
@@ -3,7 +3,8 @@ ESX.Players = {}
|
||||
ESX.UsableItemsCallbacks = {}
|
||||
ESX.Items = {}
|
||||
ESX.ServerCallbacks = {}
|
||||
ESX.TimeoutCallbacks = {}
|
||||
ESX.TimeoutCount = -1
|
||||
ESX.CancelledTimeouts = {}
|
||||
ESX.LastPlayerData = {}
|
||||
ESX.Pickups = {}
|
||||
ESX.PickupId = 0
|
||||
@@ -76,26 +77,3 @@ AddEventHandler('esx:triggerServerCallback', function(name, requestId, ...)
|
||||
|
||||
end)
|
||||
|
||||
-- SetTimeout
|
||||
CreateThread(function()
|
||||
while true do
|
||||
|
||||
Wait(0)
|
||||
|
||||
local currTime = os.clock() * 1000
|
||||
|
||||
for i=1, #ESX.TimeoutCallbacks, 1 do
|
||||
|
||||
if ESX.TimeoutCallbacks[i] ~= nil then
|
||||
|
||||
if currTime >= ESX.TimeoutCallbacks[i].time then
|
||||
ESX.TimeoutCallbacks[i].cb()
|
||||
ESX.TimeoutCallbacks[i] = nil
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end)
|
||||
|
||||
+17
-7
@@ -27,15 +27,25 @@ ESX.GetRandomString = function(length)
|
||||
end
|
||||
|
||||
ESX.SetTimeout = function(msec, cb)
|
||||
table.insert(ESX.TimeoutCallbacks, {
|
||||
time = os.clock() * 1000 + msec,
|
||||
cb = cb
|
||||
})
|
||||
return #ESX.TimeoutCallbacks
|
||||
|
||||
local id = ESX.TimeoutCount + 1
|
||||
|
||||
SetTimeout(msec, function()
|
||||
|
||||
if ESX.CancelledTimeouts[id] then
|
||||
ESX.CancelledTimeouts[id] = nil
|
||||
else
|
||||
cb()
|
||||
end
|
||||
|
||||
end)
|
||||
|
||||
return id
|
||||
|
||||
end
|
||||
|
||||
ESX.ClearTimeout = function(i)
|
||||
ESX.TimeoutCallbacks[i] = nil
|
||||
ESX.ClearTimeout = function(id)
|
||||
ESX.CancelledTimeouts[id] = true
|
||||
end
|
||||
|
||||
ESX.RegisterServerCallback = function(name, cb)
|
||||
|
||||
Reference in New Issue
Block a user