Cómo añadir elementos en QBCore: items.lua, imágenes, CreateUseableItem
Añade un elemento personalizado a QBCore: la entrada qb-core/shared/items.lua y sus campos, la imagen en qb-inventory, dárselo, y hacerlo usable con CreateUseableItem.
Añadiste un elemento a tu servidor QBCore, y o no existe en el juego, no tiene icono, o no hace nada cuando se usa. Aquí está el camino completo: la entrada del elemento, la imagen, dárselo, y hacerlo usable.
1. La entrada del elemento
Abre qb-core/shared/items.lua. Los elementos son entradas en la tabla QBShared.Items, con clave por nombre. Añade el tuyo, con una coma después de la entrada anterior:
['burger'] = {
['name'] = 'burger',
['label'] = 'Burger',
['weight'] = 220,
['type'] = 'item',
['image'] = 'burger.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['description'] = 'A warm burger.',
},Lo que cada campo hace:
| Campo | Significado |
|---|---|
name |
Nombre del elemento; debe coincidir con la clave, minúsculas, sin espacios |
label |
Nombre mostrado a los jugadores |
weight |
Peso de un elemento |
type |
item para elementos normales, weapon para armas |
image |
Nombre de archivo del icono, extensión incluida |
unique |
true si cada copia es su propio espacio (puede llevar datos) |
useable |
true si los jugadores pueden usarlo |
shouldClose |
true cierra el inventario al usarlo |
description |
Texto debajo de la etiqueta |
Copia un elemento vecino en el mismo archivo cuando no estés seguro: el archivo muestra exactamente los campos que tu versión espera.
Cuidado: una coma o llave faltante en
items.luadetiene la carga de qb-core, y con él todos los scripts que dependen de él. Si todo se rompe después de la edición, mira tu última entrada primero.
2. La imagen
Pon un .png con el nombre del campo image en la carpeta de imágenes del inventario:
qb-inventory/html/images/burger.pngLa carpeta es la misma ya sea que el elemento sea comida, una herramienta o un documento. Con un recurso de inventario diferente, usa su propia carpeta de imágenes en su lugar. Un archivo faltante muestra un icono vacío, y el nombre debe coincidir exactamente con el campo image, extensión incluida.
3. Reinicia y prueba
items.lua es leído por qb-core cuando se inicia. En la consola del servidor:
restart qb-coreReiniciar qb-core mientras los jugadores están en línea puede desconectar o romper scripts que dependen de él, así que en un servidor en vivo hazlo en un momento tranquilo, o reinicia todo el servidor. Luego te das el elemento con el comando de administrador:
/giveitem <player id> burger 1Desde un script, del lado del servidor:
local QBCore = exports['qb-core']:GetCoreObject()
local Player = QBCore.Functions.GetPlayer(source)
if Player then
Player.Functions.AddItem('burger', 1)
endSi QBCore es nil aquí, lee intento de indexar un valor nil (global 'QBCore').
4. Hazlo usable
Establecer useable = true solo permite el uso. También tienes que decir qué pasa, en el servidor:
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)La devolución de llamada obtiene el id del jugador y los datos del elemento. Elimina el elemento tú mismo si el uso debe consumirlo, como arriba.
Si un reinicio de tu script hace que el elemento deje de funcionar, recuerda que el registro ocurre cuando el script se inicia. Reinicia el script que contiene CreateUseableItem, no solo qb-inventory.
Elementos que llevan datos
Para elementos que llevan información, como una nota con texto o un boleto con un código, establece unique a true. Cada copia puede entonces llevar sus propios datos en la tabla info, que das cuando añades el elemento:
Player.Functions.AddItem('ticket', 1, false, { code = 'A12' })Los problemas comunes
- Falta de coincidencia de nombre de elemento. La clave, el campo
name, el nombre de la imagen y el nombre que pasas aAddItemdeben ser la misma palabra. - Elemento añadido a un archivo diferente. Algunos scripts te piden que añadas sus elementos a una copia de la lista dentro del script. Comprueba sus notas de instalación, y añade elementos en
qb-core/shared/items.lua, a menos que se te diga lo contrario. - Inventario antiguo. Las versiones más antiguas de qb-inventory mantienen una copia separada de algunos datos del elemento en su propia carpeta. Si un elemento muestra una etiqueta incorrecta, comprueba que nada más lo define.
En QBox
QBox usa ox_inventory en lugar de qb-inventory, y sus elementos viven en ox_inventory/data/items.lua. El formato es diferente, y también las llamadas de elemento usable. Sigue añadir elementos a ox_inventory.
Añadir elementos sin editar archivos
Cambiar items.lua y reiniciar el núcleo para cada nuevo elemento es la parte lenta. Item Creator te permite crear elementos en el juego en su lugar.
Item Creator V2Crea items usables con animaciones, props, efectos y más — sin escribir código.desde 18,15 €Ver el script →
Lista de verificación
| Síntoma | Solución |
|---|---|
| Elemento no encontrado | Añádelo a qb-core/shared/items.lua y restart qb-core |
| Todo se rompe después de la edición | Error de sintaxis en items.lua; comprueba comas y llaves |
| Icono vacío | Añade burger.png a qb-inventory/html/images, emparejando el campo image |
| El elemento no hace nada | Establece useable = true y registra QBCore.Functions.CreateUseableItem |
| El nombre no coincide | Usa un nombre idéntico en clave, name, imagen y código |
| Servidor QBox | Usa data/items.lua de ox_inventory en su lugar |
Respuestas rápidas
¿Dónde se definen los elementos en QBCore?
En qb-core/shared/items.lua. Cada elemento es una tabla dentro de QBShared.Items, con clave por su nombre, y el icono es un .png del mismo nombre en la carpeta de imágenes del inventario.
¿QBox usa qb-core/shared/items.lua?
No. QBox usa ox_inventory, donde los elementos viven en ox_inventory/data/items.lua. Consulta la guía de ox_inventory vinculada en este artículo.
¿Por qué mi elemento no es usable?
O useable es falso en la entrada del elemento, o ningún código lo registró. Establece useable = true y regístralo con QBCore.Functions.CreateUseableItem en el servidor.
