Como adicionar itens a ox_inventory: items.lua, imagens e itens usáveis

Adicione um item personalizado a ox_inventory: a entrada data/items.lua, a imagem em web/images, dando-o com AddItem e tornando-o usável com uma exportação do cliente.

Você quer um novo item no seu servidor: um hambúrguer, um lockpick, uma bateria de telefone. Com ox_inventory, que os servidores ESX e QBox usam, um item é uma tabela Lua em um arquivo. Este artigo cobre a entrada, a imagem, dar o item a um jogador e torná-lo usável.

1. A entrada do item

Abra ox_inventory/data/items.lua. Dentro da tabela retornada, adicione uma entrada. A chave é o nome do item: minúsculo, sem espaços.

lua
['burger'] = {
    label = 'Burger',
    weight = 220,
    stack = true,
    close = true,
    description = 'A warm burger.',
},

O que os campos fazem:

Campo Significado
label Nome mostrado aos jogadores
weight Peso de um item, em gramas
stack true se vários podem compartilhar um slot, false se cada um leva seu próprio slot
close true fecha o inventário quando o item é usado
description Texto sob o rótulo

Verifique os outros itens no mesmo arquivo pelos campos exatos que sua versão de ox_inventory suporta, e copie seu estilo. O arquivo é a melhor referência para sua instalação.

Atenção: um erro de sintaxe Lua em items.lua impede que ox_inventory comece. Verifique uma vírgula ausente entre entradas e uma chave de fechamento ausente.

2. A imagem

ox_inventory procura por um .png nomeado após o item:

text
ox_inventory/web/images/burger.png

O nome deve corresponder ao nome do item exatamente, e uma imagem ausente só mostra um ícone vazio. Uma imagem quadrada com cerca de 100 por 100 pixels ou maior, com fundo transparente, fica melhor.

3. Recarregue e dê a si mesmo

Reinicie o inventário para que leia o arquivo:

text
restart ox_inventory

Depois dê a si mesmo o item. Admins com permissão correta podem usar o comando /additem no jogo ou no console:

text
additem <player id> burger 1

Se o comando for recusado, você está perdendo permissões de admin, veja Permissões ACE para admins.

4. Dê o item a partir de um script

No lado do servidor, use a exportação:

lua
local success = exports.ox_inventory:AddItem(source, 'burger', 1)
if not success then
    print('Could not add the item: inventory full or unknown item')
end

AddItem leva o id do jogador, o nome do item, a contagem e metadados opcionais. Remover e verificar funcionam do mesmo jeito:

lua
exports.ox_inventory:RemoveItem(source, 'burger', 1)

local count = exports.ox_inventory:Search(source, 'count', 'burger')

Se o jogador não pode carregar o item por causa do peso ou slots, AddItem retorna false. Você pode verificar primeiro:

lua
if exports.ox_inventory:CanCarryItem(source, 'burger', 1) then
    exports.ox_inventory:AddItem(source, 'burger', 1)
end

5. Torne o item usável

Um item pode executar código quando um jogador o usa. ox_inventory suporta isso na própria definição do item, com um bloco client que aponta para uma exportação de um de seus recursos:

lua
['burger'] = {
    label = 'Burger',
    weight = 220,
    stack = true,
    close = true,
    description = 'A warm burger.',
    client = {
        export = 'my_script.burger',
    },
},

O valor é resourceName.exportName. Em my_script, registre a exportação no cliente:

lua
-- my_script/client.lua
exports('burger', function(data, slot)
    exports.ox_inventory:useItem(data, function(used)
        if used then
            print('Burger eaten')
        end
    end)
end)

useItem remove um item e executa sua função apenas se o uso foi bem-sucedido. É a forma padrão de deixar ox_inventory manipular a animação, tempo de progresso e consumo, quando o item tem esses definidos.

O mesmo bloco pode carregar efeitos integrados em vez de uma exportação. Procure nos itens de comida e bebida já em items.lua pelas opções disponíveis, por exemplo status, anim e prop, e reutilize essa forma para seu próprio item de comida.

Itens usáveis no estilo ESX e QBCore

Scripts escritos para o framework registram itens usáveis com ESX.RegisterUsableItem('burger', ...) ou QBCore.Functions.CreateUseableItem('burger', ...). ox_inventory funciona com essas chamadas quando roda com o framework, então esses scripts não precisam mudar, desde que o item exista em items.lua.

Criando itens sem editar arquivos

Se você cria itens frequentemente, editar arquivos e reiniciar fica lento. Item Creator permite que você crie itens no jogo, para que não toque items.lua para cada um.

Item Creator V2Crie itens usáveis com animações, props, efeitos e muito mais — sem escrever código.a partir de € 18,15Ver o script →

Em QBCore e QBox

ox_inventory é o inventário de QBox, então tudo acima se aplica como está. Em QBCore, o inventário padrão é qb-inventory em vez disso, com itens em qb-core/shared/items.lua, coberto em adicionando itens em QBCore.

Lista de verificação

Sintoma Solução
Item não existe Adicione a data/items.lua, depois restart ox_inventory
ox_inventory não inicia Erro de sintaxe em items.lua; verifique vírgulas e chaves
Ícone vazio Coloque <item name>.png em web/images
AddItem retorna false Nome do item desconhecido, inventário cheio ou muito pesado
Item não faz nada quando usado Adicione um bloco client com uma export e registre essa exportação
Script de item usável ignorado O nome do item no script deve corresponder à chave em items.lua

Respostas rápidas

Onde adiciono itens em ox_inventory?

Em ox_inventory/data/items.lua. Cada item é uma tabela associada pelo seu nome, e o mesmo nome é o arquivo de imagem em web/images.

Por que meu novo item não mostra ícone?

A imagem está faltando ou nomeada diferentemente. Coloque <item name>.png em ox_inventory/web/images, com o nome exato do item e extensão minúscula.

Preciso reiniciar o servidor após adicionar um item?

Não. Reinicie ox_inventory e o novo item é carregado. Se um script precisar, reinicie esse script também.

Scripts sem esse problema

Item Creator V2Crie itens usáveis com animações, props, efeitos e muito mais — sem escrever código.Ver script →Shop CreatorMonte uma loja em menos de um minuto — donos, funcionários, cofres e assaltos inclusos.Ver script →

Continue lendo