From 9fbab7a4e649e900f67045a0cc898430cc404b88 Mon Sep 17 00:00:00 2001 From: Zerio Date: Sat, 25 May 2024 21:04:30 +0000 Subject: [PATCH] fix: remove usable item after resource stop --- server/events.lua | 8 ++++++++ server/functions.lua | 21 ++++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/server/events.lua b/server/events.lua index 49ec40f..e1cfcb3 100644 --- a/server/events.lua +++ b/server/events.lua @@ -18,6 +18,14 @@ AddEventHandler('playerDropped', function(reason) QBCore.Players[src] = nil end) +AddEventHandler("onResourceStop", function(resName) + for i,v in pairs(QBCore.UsableItems) do + if v.resource == resName then + QBCore.UsableItems[i] = nil + end + end +end) + -- Player Connecting local function onPlayerConnecting(name, _, deferrals) diff --git a/server/functions.lua b/server/functions.lua index 3f7689d..116573f 100644 --- a/server/functions.lua +++ b/server/functions.lua @@ -462,7 +462,26 @@ end ---@param item string ---@param data function function QBCore.Functions.CreateUseableItem(item, data) - QBCore.UsableItems[item] = data + local rawFunc = nil + + if type(data) == "table" then + if rawget(data, '__cfx_functionReference') then + rawFunc = data + elseif data.cb and rawget(data.cb, '__cfx_functionReference') then + rawFunc = data.cb + elseif data.callback and rawget(data.callback, '__cfx_functionReference') then + rawFunc = data.callback + end + elseif type(data) == "function" then + rawFunc = data + end + + if rawFunc then + QBCore.UsableItems[item] = { + func = rawFunc, + resource = GetInvokingResource() + } + end end ---Checks if the given item is usable