🐛 Bug leírás
A requestInventory event handler az nxn-inventory getInventory exportját pcall védelem nélkül hívja:
RegisterServerEvent('nxn-shop:server:requestInventory', function()
local src = source
local inv = exports['nxn-inventory']:getInventory(src) -- ❌ pcall nelkul!
local result = {}
if inv and inv.items then
for itemName, slot in pairs(inv.items) do
...
end
end
TriggerClientEvent('nxn-shop:client:inventoryData', src, result)
end)
Ha getInventory hibát dob (pl. ismeretlen/érvénytelen src, inventory corruption, vagy az export más típusú hibát jelez), a server event handler unhandled runtime hibával leáll – a kliensnek soha nem küldödik vissza inventoryData, a sell tab loading állapotban ragad.
Továbbá: a for itemName, slot in pairs(inv.items) nem ellenőrzi hogy slot tábla-e – ha slot.count nil, count = slot.count or 1 OK, de slot maga lehet primitiv érték.
📍 Érintett fájl
nxn-shop/server.lua – nxn-shop:server:requestInventory event handler
✅ Javasolt javítás
RegisterServerEvent('nxn-shop:server:requestInventory', function()
local src = source
local result = {}
local ok, inv = pcall(function()
return exports['nxn-inventory']:getInventory(src)
end)
if not ok or not inv then
NXN.Shop.Warn(('requestInventory: getInventory hiba src=%d: %s'):format(src, tostring(inv)))
TriggerClientEvent('nxn-shop:client:inventoryData', src, result)
return
end
if inv.items then
for itemName, slot in pairs(inv.items) do
if type(slot) == 'table' then
local invItem = (type(Config.Items) == 'table') and Config.Items[itemName] or nil
table.insert(result, {
item = itemName,
label = (invItem and invItem.label) or itemName,
icon = (invItem and invItem.icon) or 'hgi-store-01',
count = slot.count or 1,
weight = (invItem and invItem.weight) or 0,
})
end
end
end
TriggerClientEvent('nxn-shop:client:inventoryData', src, result)
end)
🏷️ Prioritás
Közepes – inventory hiba esetén a szerver event handler leáll, a sell tab véglegesen loading állapotban ragad.
🐛 Bug leírás
A
requestInventoryevent handler aznxn-inventorygetInventoryexportjátpcallvédelem nélkül hívja:Ha
getInventoryhibát dob (pl. ismeretlen/érvénytelensrc, inventory corruption, vagy az export más típusú hibát jelez), a server event handler unhandled runtime hibával leáll – a kliensnek soha nem küldödik visszainventoryData, a sell tabloadingállapotban ragad.Továbbá: a
for itemName, slot in pairs(inv.items)nem ellenőrzi hogyslottábla-e – haslot.countnil,count = slot.count or 1OK, deslotmaga lehet primitiv érték.📍 Érintett fájl
nxn-shop/server.lua–nxn-shop:server:requestInventoryevent handler✅ Javasolt javítás
🏷️ Prioritás
Közepes – inventory hiba esetén a szerver event handler leáll, a sell tab véglegesen
loadingállapotban ragad.