Elite NetworkElite SaaS · Docsv0.1
GitHubPainel

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 — coluna inventory (JSON), weight, slots.
  • exports['mtg_inventory']:getItemList() — catálogo.
  • vRP.tryGetInventoryItem e vRP.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
  }
end

getAvailableItems()

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
end

tryGetInventoryItem / 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)
end

Adaptando 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.

Elite Network — Command Center