diff --git a/[core]/es_extended/client/modules/callback.lua b/[core]/es_extended/client/modules/callback.lua index bd47e447..1d23d9b6 100644 --- a/[core]/es_extended/client/modules/callback.lua +++ b/[core]/es_extended/client/modules/callback.lua @@ -47,8 +47,11 @@ function Callbacks:ServerRecieve(requestId, invoker, ...) end end -function Callbacks:Register(name, cb) - self.storage[name] = cb +function Callbacks:Register(name, resource, cb) + self.storage[name] = { + resource = resource, + cb = cb + } end function Callbacks:ClientRecieve(eventName, requestId, invoker, ...) @@ -60,7 +63,7 @@ function Callbacks:ClientRecieve(eventName, requestId, invoker, ...) local returnCb = function(...) TriggerServerEvent("esx:clientCallback", requestId, invoker, ...) end - local callback = self.storage[eventName] + local callback = self.storage[eventName].cb self:Execute(callback, requestId, returnCb, ...) end @@ -106,9 +109,20 @@ end) ---@param callback function ---@return nil ESX.RegisterClientCallback = function(eventName, callback) - Callbacks:Register(eventName, callback) + local invokingResource = GetInvokingResource() + local invoker = (invokingResource and invokingResource ~= "Unknown") and invokingResource or "es_extended" + + Callbacks:Register(eventName, invoker, callback) end ESX.SecureNetEvent("esx:triggerClientCallback", function(...) Callbacks:ClientRecieve(...) end) + +AddEventHandler("onResourceStop", function(resource) + for k, v in pairs(Callbacks.storage) do + if v.resource == resource then + Callbacks.storage[k] = nil + end + end +end) diff --git a/[core]/es_extended/server/modules/callback.lua b/[core]/es_extended/server/modules/callback.lua index 245b0987..df06cc2e 100644 --- a/[core]/es_extended/server/modules/callback.lua +++ b/[core]/es_extended/server/modules/callback.lua @@ -6,8 +6,11 @@ Callbacks.requests = {} Callbacks.storage = {} Callbacks.id = 0 -function Callbacks:Register(name, cb) - self.storage[name] = cb +function Callbacks:Register(name, resource, cb) + self.storage[name] = { + resource = resource, + cb = cb + } end function Callbacks:Execute(cb, ...) @@ -39,7 +42,7 @@ function Callbacks:ServerRecieve(player, event, requestId, invoker, ...) local returnCb = function(...) TriggerClientEvent("esx:serverCallback", player, requestId, invoker, ...) end - local callback = self.storage[event] + local callback = self.storage[event].cb self:Execute(callback, player, returnCb, ...) end @@ -73,7 +76,7 @@ end) ---@param ... any function ESX.TriggerClientCallback(player, eventName, callback, ...) local invokingResource = GetInvokingResource() - local invoker = (invokingResource and invokingResource ~= "unknown") and invokingResource or "es_extended" + local invoker = (invokingResource and invokingResource ~= "Unknown") and invokingResource or "es_extended" Callbacks:Trigger(player, eventName, callback, invoker, ...) end @@ -81,6 +84,16 @@ end ---@param eventName string ---@param callback function ESX.RegisterServerCallback = function(eventName, callback) - Callbacks:Register(eventName, callback) + local invokingResource = GetInvokingResource() + local invoker = (invokingResource and invokingResource ~= "Unknown") and invokingResource or "es_extended" + + Callbacks:Register(eventName, invoker, callback) end +AddEventHandler("onResourceStop", function(resource) + for k, v in pairs(Callbacks.storage) do + if v.resource == resource then + Callbacks.storage[k] = nil + end + end +end)