diff --git a/resources/[inventory]/nordi_schredder/client.lua b/resources/[inventory]/nordi_schredder/client.lua index 0fdce7262..b0e4b6100 100644 --- a/resources/[inventory]/nordi_schredder/client.lua +++ b/resources/[inventory]/nordi_schredder/client.lua @@ -113,7 +113,11 @@ end) -- Menü mit Items anzeigen RegisterNetEvent('shredder:client:showMenu', function(items, shredderID) - if not items or #items == 0 then + -- Make sure items is a table + items = items or {} + + -- Check if items is empty + if next(items) == nil then lib.notify({ title = 'Müllschredder', description = 'Der Schredder ist leer!', @@ -141,8 +145,10 @@ RegisterNetEvent('shredder:client:showMenu', function(items, shredderID) }) -- Einzelne Items zum Menü hinzufügen + local hasItems = false for slot, item in pairs(items) do if item and item.amount and item.amount > 0 then + hasItems = true table.insert(menuOptions, { title = (item.label or item.name), description = 'Anzahl: ' .. item.amount .. ' | Slot: ' .. slot, @@ -154,6 +160,15 @@ RegisterNetEvent('shredder:client:showMenu', function(items, shredderID) end end + if not hasItems then + lib.notify({ + title = 'Müllschredder', + description = 'Der Schredder ist leer!', + type = 'error' + }) + return + end + lib.registerContext({ id = 'shredder_menu', title = '🗑️ Müllschredder Verwaltung', diff --git a/resources/[inventory]/nordi_schredder/server.lua b/resources/[inventory]/nordi_schredder/server.lua index 147ac34f9..f54c8ac68 100644 --- a/resources/[inventory]/nordi_schredder/server.lua +++ b/resources/[inventory]/nordi_schredder/server.lua @@ -7,12 +7,26 @@ RegisterNetEvent('shredder:server:openInventory', function(shredderID) if not Player then return end - -- Schredder Inventar öffnen (tgiann-inventory) - exports['tgiann-inventory']:OpenInventory(src, 'stash', shredderID, { - maxweight = 50000, -- 50kg max - slots = 20, -- 20 Slots - label = 'Müllschredder' - }) + -- Check if the export exists and is working + if not exports['tgiann-inventory'] then + print("^1[SHREDDER ERROR]^7 tgiann-inventory export not found!") + TriggerClientEvent('QBCore:Notify', src, 'System Error: Inventory system not available', 'error') + return + end + + -- Try to open inventory with error handling + local success, err = pcall(function() + exports['tgiann-inventory']:OpenInventory(src, 'stash', shredderID, { + maxweight = 50000, -- 50kg max + slots = 20, -- 20 Slots + label = 'Müllschredder' + }) + end) + + if not success then + print("^1[SHREDDER ERROR]^7 Failed to open inventory: " .. tostring(err)) + TriggerClientEvent('QBCore:Notify', src, 'Failed to open inventory', 'error') + end end) -- Items aus Schredder abrufen @@ -22,10 +36,30 @@ RegisterNetEvent('shredder:server:getItems', function(shredderID) if not Player then return end - -- Schredder Inventar Items abrufen - local items = exports['tgiann-inventory']:GetInventory(shredderID) + -- Check if the export exists + if not exports['tgiann-inventory'] then + print("^1[SHREDDER ERROR]^7 tgiann-inventory export not found!") + TriggerClientEvent('QBCore:Notify', src, 'System Error: Inventory system not available', 'error') + return + end - TriggerClientEvent('shredder:client:showMenu', src, items or {}) + -- Try to get inventory with error handling + local items = {} + local success, err = pcall(function() + items = exports['tgiann-inventory']:GetInventory(shredderID) or {} + end) + + if not success then + print("^1[SHREDDER ERROR]^7 Failed to get inventory: " .. tostring(err)) + items = {} + end + + -- Check if items is nil and provide a default empty table + if items == nil then + items = {} + end + + TriggerClientEvent('shredder:client:showMenu', src, items, shredderID) end) -- Einzelnes Item vernichten @@ -35,10 +69,25 @@ RegisterNetEvent('shredder:server:destroySingle', function(itemName, amount, slo if not Player then return end - -- Item aus Schredder entfernen - local success = exports['tgiann-inventory']:RemoveItemFromInventory(shredderID, itemName, amount, slot) + -- Check if the export exists + if not exports['tgiann-inventory'] then + print("^1[SHREDDER ERROR]^7 tgiann-inventory export not found!") + TriggerClientEvent('QBCore:Notify', src, 'System Error: Inventory system not available', 'error') + return + end - if success then + -- Try to remove item with error handling + local success, result = pcall(function() + return exports['tgiann-inventory']:RemoveItemFromInventory(shredderID, itemName, amount, slot) + end) + + if not success then + print("^1[SHREDDER ERROR]^7 Failed to remove item: " .. tostring(result)) + TriggerClientEvent('QBCore:Notify', src, 'Failed to remove item', 'error') + return + end + + if result then -- Log für Admins print('^3[SHREDDER]^7 ' .. GetPlayerName(src) .. ' (' .. Player.PlayerData.citizenid .. ') hat ' .. amount .. 'x ' .. itemName .. ' vernichtet') @@ -63,8 +112,26 @@ RegisterNetEvent('shredder:server:destroyAll', function(shredderID) if not Player then return end - local items = exports['tgiann-inventory']:GetInventory(shredderID) + -- Check if the export exists + if not exports['tgiann-inventory'] then + print("^1[SHREDDER ERROR]^7 tgiann-inventory export not found!") + TriggerClientEvent('QBCore:Notify', src, 'System Error: Inventory system not available', 'error') + return + end + -- Try to get inventory with error handling + local items = {} + local success, err = pcall(function() + items = exports['tgiann-inventory']:GetInventory(shredderID) or {} + end) + + if not success then + print("^1[SHREDDER ERROR]^7 Failed to get inventory: " .. tostring(err)) + TriggerClientEvent('QBCore:Notify', src, 'Failed to get inventory', 'error') + return + end + + -- Check if items is nil or empty if not items or next(items) == nil then TriggerClientEvent('QBCore:Notify', src, 'Der Schredder ist bereits leer!', 'error') return @@ -76,8 +143,11 @@ RegisterNetEvent('shredder:server:destroyAll', function(shredderID) -- Alle Items vernichten for slot, item in pairs(items) do if item and item.amount and item.amount > 0 then - local success = exports['tgiann-inventory']:RemoveItemFromInventory(shredderID, item.name, item.amount, slot) - if success then + local removeSuccess, removeResult = pcall(function() + return exports['tgiann-inventory']:RemoveItemFromInventory(shredderID, item.name, item.amount, slot) + end) + + if removeSuccess and removeResult then table.insert(destroyedItems, {name = item.name, amount = item.amount}) totalItems = totalItems + item.amount end diff --git a/resources/[inventory]/tgiann-inventory/configs/configStashes.lua b/resources/[inventory]/tgiann-inventory/configs/configStashes.lua index a0a548425..0aee729ed 100644 --- a/resources/[inventory]/tgiann-inventory/configs/configStashes.lua +++ b/resources/[inventory]/tgiann-inventory/configs/configStashes.lua @@ -51,7 +51,24 @@ config.stashes = { weight = 70000, }, + ---- KAYAS HAUS ---- + { + coords = vector3(2575.58, 6161.95, 166.17), + textUiLabel = 'öffnen', + name = 'kayasfridge', -- uniq name + label = 'Kühlschrank', + slots = 20, + weight = 70000, + }, + { + coords = vector3(2577.19, 6169.46, 170.28), + textUiLabel = 'öffnen', + name = 'kayassideboard', -- uniq name + label = 'Sideborad', + slots = 10, + weight = 70000, + }, } }