Server
setPlayerInventory
Cria e seta o inventário do jogador.
exports.ox_inventory:setPlayerInventory(player, data)- player:
table- source:
number - identifier:
string - name:
string - groups?:
table - sex?:
string - dateofbirth?:
string
- source:
- data?:
table- Se não fornecido.
forceOpenInventory
Abre um inventário usando os dados fornecidos. Força um jogador a abrir um inventário, sem as checagens de segurança usuais (grupos, coordenadas).
exports.ox_inventory:forceOpenInventory(playerId, invType, data)- playerId:
number - invType:
string'player''stash''container''drop''glovebox''trunk''dumpster'
- data:
numberoustringoutable
Open the target player's inventory.
exports.ox_inventory:forceOpenInventory(1, 'player', 3)Comando de administrador para abrir o inventário de um jogador.
RegisterCommand('openplayerinv', function(source, args)
exports.ox_inventory:forceOpenInventory(source, 'player', tonumber(args[1]))
end, true)UpdateVehicle
Atualiza a referência interna para stashes de veículos, sem disparar um salvamento nem atualizar o banco de dados.
exports.ox_inventory:UpdateVehicle(oldPlate, newPlate)- oldPlate:
string - newPlate:
string
Items
Retorna uma tabela com todos os itens registrados. O formato é o definido em data/items.lua (opens in a new tab).
Opcionalmente recebe o nome de um item, retornando apenas os dados daquele item (obter todos os dados não é recomendado).
exports.ox_inventory:Items(itemName)- itemName?:
string
O trecho abaixo pode ser usado em recursos de crafting como okokCrafting ou core_crafting, em vez de consultar o banco de dados.
local itemNames
ESX.RegisterServerCallback('crafting:itemNames', function(source, cb)
if not itemNames then
itemNames = {}
for item, data in pairs(exports.ox_inventory:Items()) do
itemNames[item] = data.label
end
end
cb(itemNames)
end)AddItem
Adiciona um item no inventário especificado.
Deve ser usado em conjunto com CanCarryItem, caso contrário o peso máximo pode ser excedido.
exports.ox_inventory:AddItem(inv, item, count, metadata, slot, cb)- inv:
tableoustringounumber- O id único do inventário, ou uma tabela com o id e proprietário.
- playerId:
1 - inventoryId:
gloveVGH283 { id = 'personallocker', owner = 'license:xxxxxx'}
- playerId:
- O id único do inventário, ou uma tabela com o id e proprietário.
- item:
string- Nome do item a ser adicionado no destino.
- count:
number- Quantidade de itens a adicionar.
- metadata?:
tableoustring- Uma tabela de dados únicos a serem anexados ao objeto item. Uma string criará uma tabela com o campo "type".
- slot?:
number- Slot específico para adicionar o item. Se o slot for inválido, o primeiro slot disponível será usado.
- cb?: function(success:
boolean, response?:string)
Se usado para glovebox, trunk ou stash, verifique primeiro se o inventário está carregado com GetInventory.
Retorna success, response se cb for undefined; caso contrário, os valores são repassados pelo callback.
Possíveis valores do argumento "response" em caso de falha:
- "invalid_item": o item não existe
- "invalid_inventory": o inventário não existe
- "inventory_full": sem slots livres
Exemplo
local success, response = exports.ox_inventory:AddItem('gloveVGH283', 'bread', 4)
if not success then
-- Se não possui slots disponíveis, o valor será `inventory_full`.
return print(response)
end
print(json.encode(response, {indent=true}))
--[[
{
"metadata": [],
"label": "Bread",
"slot": 1,
"stack": true,
"close": true,
"name": "bread",
"count": 1,
"weight": 150
}
]]RemoveItem
Remove o item especificado do inventário indicado.
exports.ox_inventory:RemoveItem(inv, item, count, metadata, slot, ignoreTotal)- inv:
tableoustringounumber- O id único do inventário, ou uma tabela com o id e proprietário.
- playerId:
1 - inventoryId:
gloveVGH283 { id = 'personallocker', owner = 'license:xxxxxx'}
- playerId:
- O id único do inventário, ou uma tabela com o id e proprietário.
- item:
string- Nome do item a ser removido do destino.
- count:
number- Quantidade de itens a remover.
- metadata?:
tableoustring- Remove apenas itens com propriedades de metadata compatíveis.
- slot?:
number- Slot específico para remover o item. Se o slot for inválido, o primeiro slot disponível será usado.
- ignoreTotal?:
boolean- Remove os itens sem se preocupar com o total.
Retorna success: boolean, response: string?.
Possíveis valores de "response" em caso de falha:
- "invalid_item": o item não existe
- "invalid_inventory": o inventário não existe
- "not_enough_items": o inventário não continha itens suficientes
Exemplo
-- Remove 2 water do glovebox para a placa indicada.
local success = exports.ox_inventory:RemoveItem('gloveVGH283', 'water', 2)GetItem
Retorna dados genéricos do item no inventário especificado, com a contagem total.
exports.ox_inventory:GetItem(inv, item, metadata, returnsCount)- inv:
tableoustringounumber - item:
tableoustring- Pode ser um array de itens.
- metadata?:
any- Retorna apenas itens com propriedades de metadata compatíveis.
- returnsCount?:
boolean
Se returnsCount for true, o valor retornado será o a conta baseada
em quantas vezes o item foi encontrado.
De outra forma, retorna os dados relacionados ao item e a contagem total encontrada no inventário.
Exemplo
local item = ox_inventory:GetItem(source, 'water', nil, false)
print(json.encode(item, {indent=true}))
--[[
{
"consume": 1,
"count": 15,
"stack": true,
"name": "water",
"weight": 500,
"label": "Water",
"close": true
}
]]ConvertItems
Pega um array de items e transforma-os para o formato do ox_inventory.
exports.ox_inventory:ConvertItems(playerId, items)- playerId:
number - items:
table
Exemplo de conversão de dados
Old: [{"cola":1, "bread":3}]
New: [{"slot":1,"name":"cola","count":1},
{"slot":2,"name":"bread","count":3}]CanCarryItem
Retornar true ou false, dependendo se o inventário pode transportar o item especificado.
A função checa o peso do inventário e o slot disponível.
exports.ox_inventory:CanCarryItem(inv, item, count, metadata)- inv:
tableoustringounumber - item
tableoustring- Pode ser um array de itens.
- count:
number - metadata?:
tableoustring- Se metadata for uma string,
metadata.typeserá verificado.
- Se metadata for uma string,
Exemplo
-- Verifica se o jogador chamando o evento pode carregar 3 itens de água.
if exports.ox_inventory:CanCarryItem(source, 'water', 3) then
-- Faça algo se puder carregar
else
-- Faça algo se não puder carregar
endCanCarryAmount
Retorna a quantidade um jogador pode carregar com base no peso disponível.
exports.ox_inventory:CanCarryAmount(inv, item)- inv:
tableoustringounumber - item:
tableoustring- Pode ser um array de itens.
Exemplo
-- Verifica quantas pedras você pode carregar
amountToAdd = exports.ox_inventory:CanCarryAmount(inv, 'stone')
-- Adiciona a quantidade
exports.ox_inventory:AddItem(inv, 'stone', amountToAdd)CanCarryWeight
Returns if inventory can carry specified weight and free inventory weight.
exports.ox_inventory:CanCarryWeight(inv, weight)- inv:
tableoustringounumber - weight:
number
Exemplo
-- Verifica se o jogador pode carregar 1000g.
local fillAmount = 1000
local canCarryWeight, freeWeight = ox_inventory:CanCarryWeight(playerId, fillAmount)
if freeWeight == 0 then
-- Jogador não pode carregar.
return
elseif not canCarryWeight then
-- Modifica `fillAmount`, porque o inventário não consegue carregar a quantidade desejada.
fillAmount = freeWeight
end
-- Faça algoSetMaxWeight
Configura o peso máximo do inventário.
exports.ox_inventory:SetMaxWeight(inv, maxWeight)- inv:
tableoustringounumber - maxWeight:
number
Exemplo
local ox_inventory = exports.ox_inventory
-- Seta o peso máximo do inventário do jogador 1 para 20kg.
ox_inventory:SetMaxWeight(1, 20000)CanSwapItem
Retorna true se a troca for possível baseadao no peso suportado pelo inventário.
exports.ox_inventory:CanSwapItem(inv, firstItem, firstItemCount, testItem, testItemCount)- inv:
tableoustringounumber - firstItem:
string - firstItemCount:
number - testItem:
string - testItemCount:
number
GetItemCount
Pega o total de de todos os itens no inventário com o nome e metadados especificados.
exports.ox_inventory:GetItemCount(inv, itemName, metadata, strict)- inv:
tableoustringounumber - itemName:
string - metadata?:
table - strict?:
boolean- Analisa os metadados estritamente. Caso contrário, usará análise parcial.
Retorno:
- itemCount:
number
GetItemSlots
Retorna o número de slots que o item se encontra, o total de itens e o total de slots vazios.
exports.ox_inventory:GetItemSlots(inv, item, metadata)- inv:
tableoustringounumber - item:
tableoustring - metadata?:
table
GetSlot
Retorna os dados do slot especificado como uma tabela.
exports.ox_inventory:GetSlot(inv, slot)- inv:
tableoustringounumber - slot:
number
Exemplo
local slot = exports.ox_inventory:GetSlot(source, 1)
print(json.encode(slot, {indent=true}))
--[[
{
"weight": 2000,
"name": "water",
"metadata": [],
"slot": 1,
"label": "Water",
"close": true,
"stack": true,
"count: 4
}
]]GetSlotForItem
Get the slot id of an existing item matching the given data, or an empty slot.
exports.ox_inventory:GetSlotForItem(inv, itemName, metadata)- inv:
tableoustringounumber - itemName:
string - metadata:
table?
Retorno:
- slotId:
number?
GetSlotIdWithItem
Get a slot id in an inventory matching the given item name and metadata.
exports.ox_inventory:GetSlotIdWithItem(inv, itemName, metadata, strict)- inv:
tableoustringounumber - itemName:
string - metadata?:
table - strict?:
boolean- Strictly match metadata properties, otherwise use partial matching.
Retorno:
- slotId:
number?
GetSlotIdsWithItem
Get all slot ids in an inventory matching the given name and metadata.
exports.ox_inventory:GetSlotIdsWithItem(inv, itemName, metadata, strict)- inv:
tableoustringounumber - itemName:
string - metadata?:
table - strict?:
boolean- Strictly match metadata properties, otherwise use partial matching.
Retorno:
- slotIds:
number[]?
GetSlotWithItem
Get data for a slot in an inventory matching the given name and metadata.
exports.ox_inventory:GetSlotWithItem(inv, itemName, metadata, strict)- inv:
tableoustringounumber - itemName:
string - metadata?:
table - strict?:
boolean- Strictly match metadata properties, otherwise use partial matching.
Retorno:
- slotData:
table?
GetSlotsWithItem
Get data all slots in an inventory matching the given name and metadata.
exports.ox_inventory:GetSlotsWithItem(inv, itemName, metadata, strict)- inv:
tableoustringounumber - itemName:
string - metadata?:
table - strict?:
boolean- Strictly match metadata properties, otherwise use partial matching.
Retorno:
- slotsData:
table[]?
GetEmptySlot
Get the first available empty slot in an inventory.
exports.ox_inventory:GetEmptySlot(inv)- inv:
tableoustringounumber
Retorno:
- slotId:
number?
GetContainerFromSlot
Returns the inventory associated with the container linked in the slot of the given inventory.
exports.ox_inventory:GetContainerFromSlot(inv, slotId)- inv:
tableoustringounumber - slotId:
number
Retorno:
- containerData:
table?
SetSlotCount
Sets the number of slots available for an inventory.
exports.ox_inventory:SetSlotCount(inv, slots)- inv:
tableoustringounumber - slots:
number
Exemplo
local ox_inventory = exports.ox_inventory
-- Set the slot count for player 1's inventory to 10.
ox_inventory:SetSlotCount(1, 10)GetInventory
Returns the inventory associated with the ID (and owner if defined). Otherwise returns null.
exports.ox_inventory:GetInventory(inv, owner)- inv:
numberoutable - owner?:
stringouboolean
Exemplo
local inventory = exports.ox_inventory:GetInventory('example_stash', false)
print(json.encode(inventory, {indent = true}))
--[[
{
"id": "example_stash,
"label": "Police Stash",
"type": "stash,
"slots": 50,
"weight": 0,
"maxWeight": 100000,
"owner": false,
...
}
]]GetInventoryItems
Returns all slots with items in a inventory.
exports.ox_inventory:GetInventoryItems(inv, owner)- inv:
numberoutable - owner?:
stringouboolean
Exemplo
local playerItems = exports.ox_inventory:GetInventoryItems(source)InspectInventory
Inspect the player their inventory. You will not be able to modify the inventory.
exports.ox_inventory:InspectInventory(target, source)- target:
number - source:
number
ConfiscateInventory
Clears a player's inventory and saves it to a stash.
Use ReturnInventory to return the confiscated inventory back to the player.
exports.ox_inventory:ConfiscateInventory(source)- source:
number
ReturnInventory
Returns the confiscated inventory back to the player.
Use it alongside ConfiscateInventory.
exports.ox_inventory:ReturnInventory(source)- source:
number
ClearInventory
Clears the specified inventory. The keep argument is either a string or an array of strings containing the name(s) of the item(s) to keep in the inventory after clearing.
exports.ox_inventory:ClearInventory(inv, keep)- inv:
tableoustringounumber - keep?:
stringoustring[]
Search
Searches an inventory for a specified item.
exports.ox_inventory:Search(inv, search, item, metadata)- inv:
tableoustringounumber - search:
string - item:
tableoustring - metadata?:
tableoustring
search can be either 'slots' ou 'count', where slots will return a table of data
and count will return the found amount of the specified item.
RegisterStash
Creates a new custom stash.
exports.ox_inventory:RegisterStash(id, label, slots, maxWeight, owner, groups, coords)- id:
stringounumber- Stash identifier when loading from the database.
- label:
string- Display name when inventory is open.
- slots:
number - maxWeight:
number - owner:
stringoubooleanounilstring: Can only access the stash linked to the owner.true: Each player has a unique stash but can request other player's stashes.nil: Always shared.
- groups:
table- Table of player groups (jobs) able to access the stash.
- Table of group names where the numeric value is the minimum grade required.
{['police'] = 0, ['ambulance'] = 2}
- coords?:
vector3ouvector3[]
This function needs to be triggered before a player can open the stash.
Exemplo
Para um caso de uso desta função, consulte o Guia.
CreateTemporaryStash
Creates a temporary stash which will be removed after some time.
exports.ox_inventory:CreateTemporaryStash(properties)- properties:
table- label:
string - slots:
number - maxWeight:
number - owner?:
stringnumberoubooleanstring: Can only access the stash linked to the owner.true: Each player has a unique stash but can request other player's stashes.- The inventory is always shared if
falseounil.
- groups?:
table<string, number>- Table of group names (e.g. jobs) where the numeric value is the minimum grade required.
{['police'] = 0, ['ambulance'] = 2}
- coords?:
vector3- Stash can only be accessed while nearby.
- items?:
{ [number]: string, [number]: number, [number]?: table }[]- An array of tables, containing a sequence of itemName, count, metadata.
- label:
Retorno:
- inventoryId:
string
Exemplo
local mystash = exports.ox_inventory:CreateTemporaryStash({
label = 'mystash',
slots = 5,
maxWeight = 5000,
items = {
{ 'WEAPON_MINISMG', 1 },
{ 'ammo-9', 69 },
{ 'water', 2, { label = 'Mineral water' } }
}
})
TriggerClientEvent('ox_inventory:openInventory', 1, 'stash', mystash)CustomDrop
Drops can be created from other resources, containing a variety of items and utilising a custom label (instead of 'Drop 32648').
exports.ox_inventory:CustomDrop(prefix, items, coords, slots, maxWeight, instance, model)- prefix:
string - items:
table- name:
string - count:
number - metadata?:
table
- name:
- coords:
vector3 - slots?:
number - maxWeight?:
number - instance?:
stringounumber - model?:
number
-- Create a generic drop with a marker
exports.ox_inventory:CustomDrop('Carcass', {
{'meat', 5, { grade = 2, type = 'deer' }},
{'hide', 5, { grade = 2, type = 'deer' }}
}, coords)
-- Create a drop with an entity
exports.ox_inventory:CustomDrop('SMG', {
{ 'WEAPON_MINISMG', 1 },
{ 'ammo-9', 69 },
}, GetEntityCoords(GetPlayerPed(1)), 5, 10000, nil, `w_sb_minismg`)CreateDropFromPlayer
Creates a new drop with the contents of a player's inventory.
exports.ox_inventory:CreateDropFromPlayer(playerId)- playerId:
number
Retorno:
- dropId:
string
Exemplo
local dropId = exports.ox_inventory:CreateDropFromPlayer(1)GetCurrentWeapon
Returns the player's currently equipped weapon as a table.
-- inv: string or number
exports.ox_inventory:GetCurrentWeapon(inv)- inv:
tableoustringounumber
SetDurability
Sets durability onto the specified slot.
Can be used for repairing weapons.
exports.ox_inventory:SetDurability(inv, slot, durability)- inv:
tableoustringounumber - slot:
number - durability:
number
Exemplo
local ox_inventory = exports.ox_inventory
-- Set the durability of the item in slot 3 of source player's inventory to 100
ox_inventory:SetDurability(source, 3, 100)
-- Set the durability of the source player's current weapon to 100
local weapon = ox_inventory:GetCurrentWeapon(source)
if weapon then
ox_inventory:SetDurability(source, weapon.slot, 100)
endSetMetadata
Sets metadata on the specified slot.
ox_inventory:SetMetadata(inv, slot, metadata)- inv:
tableoustringounumber - slot:
number - metadata:
table
Exemplo
local ox_inventory = exports.ox_inventory
local water = ox_inventory:Search(source, 1, 'water')
for k, v in pairs(water) do
print('\n______________'..'\n- index '..k)
print(v.name, 'slot: '..v.slot, 'metadata: '..json.encode(v.metadata))
water = v
break
end
water.metadata.type = 'clean'
ox_inventory:SetMetadata(source, water.slot, water.metadata)
print(('modified %sx water in slot %s with new metadata'):format(water.count, water.slot))