Crear un item en ESX y QBCore
Guía clara para añadir un item nuevo en FiveM: dónde se define en ox_inventory (items.lua), ESX clásico (tabla items) y QBCore (shared/items.lua), cómo hacerlo usable y dónde va la imagen.
El problema
Quieres añadir un item nuevo a tu servidor (una botella de agua, una llave, un objeto de quest) pero no sabes en qué fichero se declara según uses ESX clásico, QBCore o ox_inventory, ni cómo conseguir que al usarlo pase algo.
La causa
En FiveM no hay un único sitio donde vivan los items: depende del inventario que tengas instalado. ox_inventory los lee de un fichero Lua (data/items.lua), ESX clásico los guarda en una tabla `items` de la base de datos, y QBCore los define en `qb-core/shared/items.lua`. Si declaras el item en el sitio equivocado, el inventario no lo reconoce, la imagen sale en blanco y el item no es usable porque no has registrado su callback en el servidor.
La solución
Declara el item en el fichero correcto según tu inventario, añade su imagen .png en la carpeta de imágenes del inventario, y regístralo como usable en el servidor. Aquí tienes la definición en ox_inventory (items.lua) y en QBCore (shared/items.lua):
-- ============================================
-- ox_inventory -> ox_inventory/data/items.lua
-- ============================================
-- La clave (['water']) es el "name" interno del item.
['water'] = {
label = 'Agua', -- nombre visible en el inventario
weight = 200, -- peso por unidad (en gramos)
stack = true, -- true = se apila en un mismo slot
close = true, -- cierra el inventario al usarlo
description = 'Una botella de agua fresca',
client = {
status = { thirst = 200000 }, -- efecto al usar (ejemplo)
anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' },
usetime = 2500,
},
},
-- La imagen va en: ox_inventory/web/images/water.png
-- (el .png debe llamarse igual que la clave del item)
-- En ox_inventory NO se usa CreateUseableItem; el "usar" se
-- gestiona con el bloque client.* de arriba o con un export/hook:
-- exports('water', function(event, item, inventory, slot, data) ... end)
-- ============================================
-- QBCore -> qb-core/shared/items.lua
-- ============================================
water = {
name = 'water', -- name interno (igual que la clave)
label = 'Water', -- nombre visible
weight = 100, -- peso por unidad
type = 'item',
image = 'water.png', -- nombre del .png
unique = false, -- true para llaves/objetos únicos
useable = true, -- marca que tiene callback de uso
shouldClose = true,
description = 'Una botella de agua fresca',
},
-- La imagen va en: qb-inventory/html/images/water.png
-- (o el inventario QB que uses; ox_inventory sirve también para QBCore)
-- El efecto al usar se registra en el SERVIDOR (ver pasos).Paso a paso
- 1.Identifica tu inventario: si usas ox_inventory edita `ox_inventory/data/items.lua`; en ESX clásico inserta una fila en la tabla `items` de la BD (`INSERT INTO items (name, label, weight, rare, can_remove) VALUES ('water', 'Agua', 1, 0, 1);`); en QBCore edita `qb-core/shared/items.lua`.
- 2.Copia la imagen `water.png` a la carpeta de imágenes del inventario (`ox_inventory/web/images/` o `qb-inventory/html/images/`). El nombre del .png debe coincidir EXACTAMENTE con el name del item.
- 3.Haz el item usable registrando su callback en el SERVIDOR. ESX clásico: `ESX.RegisterUsableItem('water', function(source) local xPlayer = ESX.GetPlayerFromId(source); xPlayer.removeInventoryItem('water', 1) end)`. QBCore: `QBCore.Functions.CreateUseableItem('water', function(source, item) local Player = QBCore.Functions.GetPlayer(source); Player.Functions.RemoveItem('water', 1) end)`. ox_inventory: usa el bloque `client.*` del item o un `exports('water', ...)`.
- 4.Reinicia el recurso del inventario (y es_extended/qb-core si tocaste su shared) para que cargue la nueva definición; NO basta con reiniciar solo tu script.
- 5.Prueba en juego: dándote el item con `/giveitem <id> water 1` (ESX) o `/giveitem water 1` (QBCore) y usándolo desde el inventario para confirmar que la imagen aparece y el callback se ejecuta.
¿Tu caso es distinto?
Pega tu error en la herramienta IA y te da la solución al instante.
Probar la herramientaGuías relacionadas
Última actualización: 2026-06-29. Crxative-M no está afiliado a Cfx.re ni Rockstar Games.
