diff --git a/resources/[tools]/thommie-nightvision/cl_main.lua b/resources/[tools]/thommie-nightvision/cl_main.lua index 5c63eee08..db8a945f9 100644 --- a/resources/[tools]/thommie-nightvision/cl_main.lua +++ b/resources/[tools]/thommie-nightvision/cl_main.lua @@ -17,25 +17,27 @@ local function HasItem(itemName, callback) return end + -- Create a unique event name for this check + local uniqueEventName = 'nightvision:itemCheckResult:' .. math.random(100000, 999999) + -- Set up the callback local callbackRegistered = false - local eventHandler = RegisterNetEvent('nightvision:itemCheckResult', function(checkedItem, hasItem) - if checkedItem == itemName then - itemCheckCache[itemName] = hasItem - lastCheckTime[itemName] = GetGameTimer() - callback(hasItem) - callbackRegistered = true - RemoveEventHandler(eventHandler) - end + + -- Register the event handler + local eventHandler = RegisterNetEvent(uniqueEventName) + AddEventHandler(uniqueEventName, function(hasItem) + itemCheckCache[itemName] = hasItem + lastCheckTime[itemName] = GetGameTimer() + callback(hasItem) + callbackRegistered = true end) - -- Request the check from server - TriggerServerEvent('nightvision:checkItem', itemName) + -- Request the check from server with our unique event name + TriggerServerEvent('nightvision:checkItem', itemName, uniqueEventName) -- Set a timeout to prevent hanging if something goes wrong SetTimeout(1000, function() if not callbackRegistered then - RemoveEventHandler(eventHandler) callback(false) end end) @@ -247,6 +249,3 @@ end) RegisterNetEvent('nightvision:toggleHelmet', function() TriggerEvent('nightvision:toggleGlasses', 'nightvision') end) - --- Register event handler for item check results -RegisterNetEvent('nightvision:itemCheckResult') diff --git a/resources/[tools]/thommie-nightvision/sv_main.lua b/resources/[tools]/thommie-nightvision/sv_main.lua index e75992ade..57c6e3e3f 100644 --- a/resources/[tools]/thommie-nightvision/sv_main.lua +++ b/resources/[tools]/thommie-nightvision/sv_main.lua @@ -15,10 +15,10 @@ local function HasItem(source, itemName) end -- Event for client to check if player has an item -RegisterNetEvent('nightvision:checkItem', function(itemName) +RegisterNetEvent('nightvision:checkItem', function(itemName, callbackEvent) local src = source local hasItem = HasItem(src, itemName) - TriggerClientEvent('nightvision:itemCheckResult', src, itemName, hasItem) + TriggerClientEvent(callbackEvent, src, hasItem) end) -- Register usable items