Como adicionar items em QBCore: items.lua, imagens, CreateUseableItem
Adicione um item customizado ao QBCore: a entrada qb-core/shared/items.lua e seus campos, a imagem em qb-inventory, dando-o, e tornando-o usável com CreateUseableItem.
Você adicionou um item ao seu server QBCore, e ele ou não existe no jogo, não tem ícone, ou não faz nada quando usado. Aqui está o caminho completo: a entrada do item, a imagem, dando-o, e tornando-o usável.
1. A entrada do item
Abra qb-core/shared/items.lua. Items são entradas na tabela QBShared.Items, com chave pelo nome. Adicione o seu, com uma vírgula depois da entrada anterior:
['burger'] = {
['name'] = 'burger',
['label'] = 'Burger',
['weight'] = 220,
['type'] = 'item',
['image'] = 'burger.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['description'] = 'A warm burger.',
},O que cada campo faz:
| Campo | Significado |
|---|---|
name |
Nome do item; deve combinar a chave, lowercase, sem espaços |
label |
Nome mostrado aos jogadores |
weight |
Peso de um item |
type |
item para items normais, weapon para weapons |
image |
Nome do arquivo do ícone, extensão incluída |
unique |
true se cada cópia é seu próprio slot (pode carregar data) |
useable |
true se jogadores podem usá-lo |
shouldClose |
true fecha o inventory ao usar |
description |
Texto sob o label |
Copie um item vizinho no mesmo arquivo quando inseguro: o arquivo mostra exatamente os campos que sua versão espera.
Atenção: uma vírgula faltando ou brace em
items.luaimpede qb-core de carregar, e com ele cada script que depende. Se tudo quebra após o edit, olhe sua última entrada primeiro.
2. A imagem
Coloque um .png com o nome do campo image na pasta de imagens do inventory:
qb-inventory/html/images/burger.pngA pasta é a mesma se o item é comida, uma ferramenta ou um documento. Com um recurso de inventory diferente, use sua própria pasta de imagens. Um arquivo faltando mostra um ícone vazio, e o nome deve combinar o campo image exatamente, extensão incluída.
3. Reinicie e teste
items.lua é lido por qb-core quando inicia. No console do server:
restart qb-coreReiniciar qb-core enquanto jogadores estão online pode desconectar ou quebrar scripts que dependem, então em um server ao vivo faça em um horário quiet, ou reinicie o server inteiro. Então dê-se o item com o comando admin:
/giveitem <player id> burger 1De um script, no lado do server:
local QBCore = exports['qb-core']:GetCoreObject()
local Player = QBCore.Functions.GetPlayer(source)
if Player then
Player.Functions.AddItem('burger', 1)
endSe QBCore é nil aqui, leia attempt to index a nil value (global 'QBCore').
4. Torne-o usável
Defini useable = true apenas permite o uso. Você também tem que dizer o que acontece, no server:
local QBCore = exports['qb-core']:GetCoreObject()
QBCore.Functions.CreateUseableItem('burger', function(source, item)
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return end
if Player.Functions.RemoveItem('burger', 1) then
TriggerClientEvent('QBCore:Notify', source, 'You ate the burger', 'success')
-- your effect here: heal, hunger, an animation event
end
end)O callback recebe o id do jogador e os dados do item. Remova o item você mesmo se o uso deve consumi-lo, como acima.
Se um restart do seu script faz o item parar de funcionar, lembre que o registro acontece quando o script inicia. Reinicie o script que contém CreateUseableItem, não apenas qb-inventory.
Items que carregam data
Para items que carregam informação, como uma nota com texto ou um ticket com um código, defina unique para true. Cada cópia pode então manter seus próprios dados na tabela info, que você dá ao adicionar o item:
Player.Functions.AddItem('ticket', 1, false, { code = 'A12' })Os problemas comuns
- Descompasso de nome de item. A chave, o campo
name, o nome da imagem e o nome que você passa paraAddItemdevem ser a mesma palavra. - Item adicionado a um arquivo diferente. Alguns scripts pedem que você adicione seus items a uma cópia da lista dentro do script. Verifique suas notas de instalação, e adicione items em
qb-core/shared/items.lua, a menos que dito de outra forma. - Inventory antigo. Versões antigas do qb-inventory mantêm uma cópia separada de alguns dados de item na sua própria pasta. Se um item mostra um label errado, verifique que nada mais o define.
Em QBox
QBox usa ox_inventory em vez de qb-inventory, e seus items vivem em ox_inventory/data/items.lua. O formato é diferente, e assim são as chamadas de item-usável. Siga adding items to ox_inventory.
Adicione items sem editar arquivos
Mudar items.lua e reiniciar o core para cada novo item é a parte lenta. Item Creator deixa você criar items no jogo em vez disso.
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 →
Checklist
| Sintoma | Solução |
|---|---|
| Item não encontrado | Adicione a qb-core/shared/items.lua e restart qb-core |
| Tudo quebra após o edit | Erro de sintaxe em items.lua; verifique vírgulas e braces |
| Ícone vazio | Adicione burger.png a qb-inventory/html/images, combinando o campo image |
| Item não faz nada | Defina useable = true e registre QBCore.Functions.CreateUseableItem |
| Nome não combina | Use um nome idêntico em chave, name, imagem e código |
| Server QBox | Use data/items.lua do ox_inventory em vez disso |
Respostas rápidas
Onde items são definidos em QBCore?
Em qb-core/shared/items.lua. Cada item é uma tabela dentro de QBShared.Items, com chave pelo seu nome, e o ícone é um .png do mesmo nome na pasta de imagens do inventory.
O QBox usa qb-core/shared/items.lua?
Não. QBox usa ox_inventory, onde items vivem em ox_inventory/data/items.lua. Veja o guia do ox_inventory linkado neste artigo.
Por que meu item não é usável?
Ou useable é false na entrada do item, ou nenhum código o registrou. Defina useable = true e registre com QBCore.Functions.CreateUseableItem no server.
