functions/inventory.lua
Adapter de inventário. Assume mtg_inventory por padrão.
Globals esperadas
getUserInventory(userId)getAvailableItems()tryGetInventoryItem(userId, item, amount, slot)addInventoryItem(userId, item, amount, slot)
Tabelas e exports usados (default)
mtg_inventories— colunainventory(JSON),weight,slots.exports['mtg_inventory']:getItemList()— catálogo.vRP.tryGetInventoryItemevRP.addInventoryItem— mutação.
getUserInventory(userId)
functions/inventory.lua·lua
function getUserInventory(userId)
local rows = exports.oxmysql:query_async(
"SELECT inventory, weight, slots FROM mtg_inventories WHERE characterId = ? LIMIT 1",
{ userId }
)
if not rows or #rows == 0 then
return { userId = userId, weight = 0, capacity = 0, items = {} }
end
local row = rows[1]
local ok, decoded = pcall(json.decode, row.inventory or "[]")
local items = ok and decoded or {}
local out = {}
for slot, entry in pairs(items) do
if entry and entry.item then
out[#out+1] = {
slot = tonumber(slot) or 0,
item = entry.item,
name = vRP.getItemName(entry.item) or entry.item,
amount = tonumber(entry.amount) or 0,
weight = vRP.getItemWeight(entry.item) or 0,
image = (Config.ItemImageBaseUrl or "")..entry.item..".png"
}
end
end
return {
userId = userId,
weight = row.weight or 0,
capacity = row.slots or 0,
items = out
}
endgetAvailableItems()
lua
function getAvailableItems()
local list = exports['mtg_inventory']:getItemList()
local out = {}
for itemKey, meta in pairs(list or {}) do
out[#out+1] = {
item = itemKey,
name = meta.name or itemKey,
weight = meta.weight or 0,
image = (Config.ItemImageBaseUrl or "")..itemKey..".png"
}
end
table.sort(out, function(a, b) return a.name < b.name end)
return out
endtryGetInventoryItem / addInventoryItem
Os helpers em si delegam pra vRP — você pode reusar conforme estiver:
lua
function tryGetInventoryItem(userId, item, amount, slot)
-- Returns true on success, false on failure.
return vRP.tryGetInventoryItem(userId, item, amount or 1, slot)
end
function addInventoryItem(userId, item, amount, slot)
return vRP.addInventoryItem(userId, item, amount or 1, slot)
endAdaptando para ESX / framework próprio
Substitua os exports e as queries pela API equivalente. Mantenha as shapes de retorno — todo o resto do sistema continua funcionando.