Antes de empezar#
Antes de instalar Advanced Inventory, asegúrate de que tu servidor cumpla los requisitos siguientes. Todo lo marcado como opcional se detecta por sí solo cuando ya está en ejecución.
Requisito | Estado | Notas |
|---|---|---|
Artifact del servidor FiveM | Obligatorio | Build 4752 o superior. |
| Obligatorio | Acceso a la base de datos. Debe iniciarse antes del inventario. |
| Obligatorio | Callbacks y funciones auxiliares compartidas, además de notificaciones y barras de progreso cuando qs-interface no está en ejecución. |
| Obligatorio | Declarado como dependencia: el inventario no se inicia hasta que esté en ejecución. |
| Obligatorio | Incluido en la descarga. Carga los fondos 3D detrás de tu personaje: 31 salas con degradado y la Cyberpunk. |
Framework | Obligatorio |
|
OneSync | Recomendado | Necesario para las bolsas que se pueden patear en el suelo, el acceso estricto a vehículos y las comprobaciones de distancia del lado del servidor en registros, robos e intercambios. |
Apariencia | Opcional |
|
Target | Opcional |
|
| Opcional | Notificaciones, barras de progreso, el HUD y avisos 3D. Sin ellos, se encargan ox_lib y el propio texto del juego. |
El inventario elige cada integración según lo que está ya iniciado:
Capa | Detección |
|---|---|
Framework |
|
Apariencia |
|
Target |
|
Modificaciones del framework#
Advanced Inventory asume las funciones de inventario de tu framework, por lo que el framework necesita algunos cambios pequeños. La vía más rápida y segura es usar las versiones preeditadas que mantiene Quasar:
github.comes_extended 1.16.3 for qs-inventoryESX Legacy, pre-edited for Quasar Advanced Inventory.github.comqb-core 1.3.0 for qs-inventoryQBCore, pre-edited for Quasar Advanced Inventory.github.comqbx_core 1.24.0 for qs-inventoryQbox, pre-edited for Quasar Advanced Inventory.Las versiones antiguas del framework siguen en la organización de GitHub quasar-store-organizations, pero no admiten ítems creados en el juego.
El es_extended editado cede su inventario a qs-inventory con esta línea en es_extended/shared/config/main.lua:
Config.CustomInventory = 'qs'Con ella, ESX lee su lista de ítems del inventario en lugar de la tabla SQL items, y cada función de ítems de xPlayer la responde qs-inventory. Sin ella, los ítems usables registrados por tus otros scripts no se detectan.
Usa el qb-core editado. Además, el inventario reemplaza los métodos de jugador AddItem, RemoveItem, GetItemBySlot, GetItemByName, GetItemsByName, ClearInventory y SetInventory en tiempo de ejecución, así que los scripts que los llaman siguen funcionando. Los ítems y las armas siguen viniendo de qb-core/shared/items.lua y qb-core/shared/weapons.lua.
Usa el qbx_core editado. Qbox se detecta como QBCore en modo Qbox: usa los propios shared/items.lua y shared/weapons.lua del inventario, y money es el ítem de efectivo.
Descargar Advanced Inventory#
Después de comprar Advanced Inventory, el recurso se vincula automáticamente a tu cuenta de CFX Portal.
Inicia sesión en CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Advanced Inventory.
Después de extraer la descarga, deberías tener las siguientes carpetas:
[advancedinventory]/
├── qs-inventory/ -- the inventory itself
│ ├── config/config.lua -- framework and appearance detection only
│ ├── client/custom/ -- bridges and gameplay hooks (editable)
│ ├── server/custom/ -- bridges, commands and webhooks (editable)
│ ├── shared/items.lua -- item list (ESX and Qbox)
│ ├── shared/weapons.lua -- weapon list (ESX and Qbox)
│ ├── shared/data/ -- factory defaults of every setting
│ ├── locales/ -- 41 languages
│ └── web/ -- the interface, already built
├── qs-inventory-objects/ -- streamed 3D backgrounds (required)
├── [dlc]/ -- qs-armor, qs-licenses, qs-weapondraw, qs-weaponsonback
└── [sql]/ -- esx.sql and qb.sqlLa carpeta debe llamarse
qs-inventory. Todos los scripts de Quasar y de terceros llaman aexports['qs-inventory'], y una copia renombrada muestra un error en la consola y se niega a ejecutarse. Los complementos de[dlc]conservan sus nombres por el mismo motivo.
Instalar el recurso#
Mueve las carpetas al directorio resources de tu servidor. Pueden estar en cualquier lugar dentro de él, incluida una carpeta de categoría:
resources/
└── [qs]/
├── qs-inventory/
├── qs-inventory-objects/
└── [dlc]/Luego abre tu server.cfg y asegúrate de que cada dependencia, y todo lo que el inventario debe detectar, se inicie antes que él:
ensure oxmysql
ensure ox_lib
# Framework (one of them)
ensure es_extended
# ensure qb-core
# ensure qbx_core
ensure MugShotBase64
# Appearance, target and interface, if you use them
ensure illenium-appearance
ensure ox_target
ensure qs-interface
ensure qs-inventory-objects
ensure qs-inventory
# Optional add-ons, after the inventory
ensure qs-armor
ensure qs-licenses
ensure qs-weapondraw
ensure qs-weaponsonbackEl orden de carga importa. El framework, el script de apariencia y el target se detectan una sola vez, cuando se inicia el inventario, así que todo lo que se inicie después no se encuentra.
La base de datos#
Importa el archivo SQL que corresponde a tu framework desde la carpeta [sql] con HeidiSQL o cualquier cliente de MariaDB:
Importa [sql]/esx.sql. Además de las tablas del inventario, añade las columnas inventory_skill, unlocked_skills y metadata a users, y su primera línea restablece la columna inventory de todos los jugadores a [].
Importa [sql]/qb.sql. Además de las tablas del inventario, añade las columnas inventory_skill y unlocked_skills a players. Los inventarios de los jugadores ya están en players.inventory y se dejan como están.
Tablas | Contienen |
|---|---|
| Cada stash, por id de stash. |
| Contenido del maletero y la guantera, por matrícula. |
| Las prendas que lleva cada jugador. |
| Datos por jugador que guardan el inventario y sus complementos, como el blindaje almacenado. |
| Las misiones de cada jugador: progreso, recompensas por reclamar y misiones completadas. |
| El propio inventario del jugador, su nivel y XP ( |
Las tablas de los dos paneles del juego las crea el propio inventario en el primer inicio, todas con el prefijo qs_inventory_:
Tablas | Contienen |
|---|---|
| Cada ajuste que cambiaste en |
| Stashes, tiendas, puntos de venta, bancos de crafteo, ítems y armas creados en |
| El árbol de habilidades, las misiones y las noticias del menú de pausa. |
| El historial de cada ítem creado y las alertas anti-dupe. |
| Una copia de cada fila que reescribe el importador, hecha antes de tocarla. |
| Peso de carga adicional por personaje, desde |
En ese primer inicio, el inventario también escribe su contenido inicial: ocho tiendas con 36 ubicaciones entre todas, dos bancos de crafteo, dos puntos de venta, los ítems de cartera y mochila, un árbol de 43 habilidades, 21 misiones y ocho anuncios del menú de pausa. Cada conjunto se escribe una sola vez: si eliminas una tienda inicial, sigue eliminada.
Los archivos usan el
ADD COLUMN IF NOT EXISTSde MariaDB, que MySQL 8 no acepta. Ejecuta la base de datos en MariaDB y evita XAMPP y entornos locales similares para un servidor en producción: son una fuente habitual de errores de conexión.
Ítems por framework#
Los ítems no se guardan en SQL. Dónde está la lista base depende del framework:
Framework | Ítems | Armas |
|---|---|---|
ESX |
|
|
Qbox |
|
|
QBCore |
|
|
En ESX, la tabla SQL items no se lee en absoluto. En QBCore, copia los ítems que vienen con el inventario (prendas, accesorios, tintes, munición, mochilas) en qb-core/shared/items.lua, y conserva el ítem cash propio de QBCore, que es lo que el inventario usa allí como dinero. Si algunos ítems se comportan de forma extraña en QBCore, probablemente tu archivo de ítems está desactualizado; Quasar mantiene un items.lua para QBCore de referencia.
Los ítems nuevos no tienen por qué ir en un archivo. Un ítem creado en
/inventorycreator→ Items existe para todos los jugadores en cuanto lo guardas, en cualquier framework; en QBCore se envía en vivo a la lista de ítems de qb-core. Consulta Uso.
Ítems de ropa para QBCore: copiar y pegar
['tshirt'] = { ['name'] = 'tshirt', ['label'] = 'T-shirt', ['weight'] = 0, ['type'] = 'item', ['image'] = 'tshirt.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A nice piece of clothing' },
['torso'] = { ['name'] = 'torso', ['label'] = 'Torso', ['weight'] = 0, ['type'] = 'item', ['image'] = 'torso.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A nice piece of clothing' },
['arms'] = { ['name'] = 'arms', ['label'] = 'Arms', ['weight'] = 0, ['type'] = 'item', ['image'] = 'arms.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A nice piece of clothing' },
['jeans'] = { ['name'] = 'jeans', ['label'] = 'Jeans', ['weight'] = 0, ['type'] = 'item', ['image'] = 'jeans.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A nice piece of clothing' },
['shoes'] = { ['name'] = 'shoes', ['label'] = 'Shoes', ['weight'] = 0, ['type'] = 'item', ['image'] = 'shoes.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A nice piece of clothing' },
['mask'] = { ['name'] = 'mask', ['label'] = 'Mask', ['weight'] = 0, ['type'] = 'item', ['image'] = 'mask.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A nice piece of clothing' },
['ears'] = { ['name'] = 'ears', ['label'] = 'Ears', ['weight'] = 0, ['type'] = 'item', ['image'] = 'ears.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A nice piece of clothing' },
['glasses'] = { ['name'] = 'glasses', ['label'] = 'Glasses', ['weight'] = 0, ['type'] = 'item', ['image'] = 'glasses.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A nice piece of clothing' },
['helmet'] = { ['name'] = 'helmet', ['label'] = 'Helmet', ['weight'] = 0, ['type'] = 'item', ['image'] = 'helmet.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A nice piece of clothing' },
['bag'] = { ['name'] = 'bag', ['label'] = 'Bag', ['weight'] = 0, ['type'] = 'item', ['image'] = 'bag.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'A nice piece of clothing' },
['chain'] = { ['name'] = 'chain', ['label'] = 'Chain', ['weight'] = 100, ['type'] = 'item', ['image'] = 'goldchain.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = false, ['rare'] = 'epic', ['description'] = 'It is very fragile, watch out' },
['vest'] = { ['name'] = 'vest', ['label'] = 'Vest', ['weight'] = 100, ['type'] = 'item', ['image'] = 'vest.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = false, ['rare'] = 'epic', ['description'] = 'Body Armor' },
['decals'] = { ['name'] = 'decals', ['label'] = 'Decals', ['weight'] = 0, ['type'] = 'item', ['image'] = 'decals.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Badges, logos and patches worn over your clothes' },
['bracelets'] = { ['name'] = 'bracelets', ['label'] = 'Bracelets', ['weight'] = 100, ['type'] = 'item', ['image'] = 'bracelets.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = false, ['rare'] = 'epic', ['description'] = 'It is very fragile, watch out' },
['watch'] = { ['name'] = 'watch', ['label'] = 'Watch', ['weight'] = 100, ['type'] = 'item', ['image'] = 'rolex.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['rare'] = 'epic', ['description'] = 'It is very fragile, watch out' },Obtener acceso de administrador#
Todo se configura en el juego mediante dos paneles: /inventoryconfig para los ajustes y /inventorycreator para stashes, tiendas, bancos, ítems y más. Ambos requieren una comprobación de administrador, y cualquiera de estas vías te da acceso:
La vía habitual. Añade estas líneas a server.cfg y reinicia el servidor:
add_ace group.admin command.inventoryconfig allow
add_ace group.admin command.inventorycreator allowCambia group.admin por cualquier principal; un solo identifier.license:… también funciona. Da solo command.inventorycreator al staff que deba construir tiendas y stashes pero no tocar los ajustes.
Automático, nada que configurar. En ESX, admin y superadmin, y en QBCore / Qbox, god y admin (o cualquiera con el ace command) abren ambos paneles.
En /inventoryconfig → Access & commands puedes renombrar el ace que comprueba cada panel y el comando que lo abre. Un ace nuevo se aplica al instante; un nombre de comando nuevo se aplica tras un reinicio.
Quien no tenga acceso y escriba cualquiera de los comandos recibe una notificación, y la consola del servidor muestra la línea add_ace exacta que le daría acceso.
Configurar el recurso#
Casi nada se configura en archivos. Pesos, ranuras, teclas, vehículos, robos, armas, la rueda rápida, el menú de pausa, la seguridad: todo el comportamiento está en /inventoryconfig, se aplica a todos los jugadores al guardarlo y se conserva en la base de datos, así que una actualización nunca lo borra. Los archivos que todavía vale la pena conocer:
Archivo | Contenido |
|---|---|
| Detección del framework y de la apariencia. Tócalo solo si renombraste tu recurso core. |
| URLs de webhooks de Discord, una por categoría de log, y el token del bot de Discord usado para mostrar avatares en el menú de pausa. |
| Las listas base de ítems y armas en ESX y Qbox. La guía al principio de |
| Los ítems iniciales de ESX (una tarjeta de identificación, cinco botellas de agua, cinco sándwiches y un teléfono), entregados una vez por personaje cuando tu creador de personajes activa |
| Los bancos, puntos de venta e ítems de equipamiento de ejemplo escritos en el primer inicio. |
| Puentes abiertos: framework, ropa, target, notificaciones, robos, ventas y los comandos de administración. |
| Los valores de fábrica con los que empiezan los paneles. Cambia los valores en el juego, no aquí. |
El idioma se puede establecer para todos los recursos de Quasar a la vez con un convar en server.cfg, o solo para el inventario en /inventoryconfig → General → Language (se aplica tras un reinicio):
setr qs:locale "es"Se incluyen 41 idiomas: ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk, ur, vi y zh.
Editar
shared/data/después de guardar un ajuste en el panel no cambia nada: la base de datos tiene prioridad. El servidor también replica los ajustes guardados endata/settings.jsonpara que se carguen antes que cualquier otro script en el siguiente inicio; nunca edites ese archivo a mano. Reset section en el panel restaura lo que venía de fábrica.
Verificar la instalación#
Después de completar la instalación, reinicia tu servidor y lee la consola. La comprobación de versión muestra una de estas líneas:
You are using the latest version of qs-advancedinventory!
New version available for qs-advancedinventory!Una advertencia que enumera Missing webhooks es normal hasta que completes webhook.lua. Luego entra en tu servidor y recorre el primer ciclo:
Abre el inventario
Pulsa
TAB. Tu personaje aparece junto a la cuadrícula, y la misión What's in the Bag? está lista para reclamar en la página de misiones.Date un ítem
Escribe
/inventorycreator, abre Give, elígete a ti mismo y cincowater_bottle. Arrastra uno a la barra rápida y pulsa su tecla numérica para beberlo.Pulsa ESC
El menú de pausa se abre con tu tarjeta, dinero, trabajo y los anuncios del servidor. A partir de ahí, Uso cubre todo lo demás.
El contenido no necesita reinicio. Stashes, tiendas, ítems, habilidades, misiones y la mayoría de los ajustes se aplican a todos los jugadores en cuanto los guardas; los pocos ajustes que requieren reinicio están marcados en el panel.



