Antes de empezar#
Antes de instalar Outfit Bag, asegúrate de que tu servidor cumple los requisitos mínimos. Solo un recurso es obligatorio; todo lo demás es opcional y se detecta solo.
Requisito | Estado | Notas |
|---|---|---|
| Obligatorio | Acceso a la base de datos. La tabla se crea sola. |
Framework | Opcional | ESX, QBCore o Qbox — se detecta automáticamente. Sin ninguno funciona en modo standalone: la bolsa se coloca con un comando, sin ítem y sin trabajos. |
Target | Opcional |
|
Inventario | Opcional | Cualquier inventario que respete los ítems usables de tu framework: ox_inventory, qs-inventory, qb-inventory o el de ESX por defecto. |
Recurso de ropa | Opcional | Solo es necesario para que los atuendos aplicados se mantengan tras reconectar. Consulta Uso → Atuendos persistentes. |
Todo lo específico del framework o de terceros está detrás de un pequeño archivo bridge, y el recurso elige el correcto mirando lo que ya está en ejecución:
Capa | Recursos detectados |
|---|---|
Framework | es_extended · qb-core · qbx_core — si no encuentra ninguno, funciona en modo standalone |
Target | ox_target · qb-target · qs-textui — si no encuentra ninguno, usa el aviso integrado |
Ropa | illenium-appearance · fivem-appearance · qb-appearance · qb-clothing · qbx-clothing · skinchanger |
Cada integración opcional se degrada en silencio. Si falta un recurso, el script recurre a su propia versión de esa parte; nada da error. Integraciones tiene los detalles y cómo fijar una a mano.
github.comReleases · overextended/oxmysqlMySQL resource for FXServer.Descargar Outfit Bag#
Después de comprar Outfit Bag, el recurso se vincula automáticamente a tu cuenta de CFX Portal.
Inicia sesión en el CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Outfit Bag.
Después de extraer la descarga, deberías tener lo siguiente:
qs-outfitbag/
├── shared/config.lua -- the settings you edit
├── locales/ -- 28 translations, editable
├── client/custom/ -- framework and target bridges, editable
├── server/custom/ -- framework bridges and database queries, editable
├── client/ · server/ -- the core (encrypted)
├── html/ -- the bag window
└── fxmanifest.lua
[image]/
└── outfitbag.png -- the inventory icon for the itemLa carpeta debe llamarse
qs-outfitbag. El script comprueba su propio nombre al iniciarse; una copia renombrada muestra You have renamed the script! y después bloquea el servidor a propósito.
Instalar el recurso#
Mueve la carpeta qs-outfitbag al directorio resources de tu servidor. Puede estar en cualquier lugar dentro de él, incluida una carpeta de categoría:
resources/
└── [qs]/
└── qs-outfitbag/Una vez copiada, abre tu server.cfg y asegúrate de que todas las dependencias (y todo lo que deba detectar) se inicien antes que Outfit Bag:
ensure oxmysql
# Framework
ensure es_extended
# ensure qb-core
# ensure qbx_core
# Inventory and target
ensure ox_inventory
ensure ox_target
# Clothing (optional, only for persistence)
# ensure illenium-appearance
ensure qs-outfitbagEl orden de carga importa. La detección solo ve los recursos que ya están iniciados, así que un framework o target que se inicie después de Outfit Bag no se encuentra y esa parte funciona en modo standalone.
La base de datos#
No hay ningún archivo SQL que importar. Outfit Bag crea su única tabla la primera vez que oxmysql está listo, y nunca toca nada más de tu base de datos.
Tabla | Contenido |
|---|---|
| Cada atuendo guardado: un id, el identificador del propietario, el nombre del atuendo y su ropa en JSON. |
Los atuendos pertenecen al jugador, no a una bolsa. Cada bolsa que coloca un jugador abre la misma lista, y esa lista sobrevive a reinicios, ítems perdidos y bolsas nuevas. Las bolsas colocadas en sí no se guardan: Uso explica su ciclo de vida.
Añadir el ítem#
La bolsa es un ítem de inventario llamado outfitbag. Regístralo en tu inventario y después copia outfitbag.png de la carpeta [image] de la descarga a la carpeta de imágenes de tu inventario.
En ox_inventory/data/items.lua:
['outfitbag'] = {
label = 'Outfit Bag',
weight = 1000,
stack = true,
close = true,
description = 'A portable bag for storing and changing outfits anywhere.',
},Carpeta de imágenes: ox_inventory/web/images/
En qs-inventory/shared/items.lua:
['outfitbag'] = {
['name'] = 'outfitbag',
['label'] = 'Outfit Bag',
['weight'] = 1000,
['type'] = 'item',
['image'] = 'outfitbag.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['rare'] = 'common',
['description'] = 'A portable bag for storing and changing outfits anywhere.'
},Carpeta de imágenes: qs-inventory/html/images/
En qb-core/shared/items.lua (los servidores Qbox que usan ítems de qb-inventory siguen el mismo formato):
outfitbag = {
name = 'outfitbag',
label = 'Outfit Bag',
weight = 1000,
type = 'item',
image = 'outfitbag.png',
unique = false,
useable = true,
shouldClose = true,
combinable = nil,
description = 'A portable bag for storing and changing outfits anywhere.'
},Carpeta de imágenes: qb-inventory/html/images/
ESX guarda sus ítems en la base de datos. Ejecuta esto una vez:
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`)
VALUES ('outfitbag', 'Outfit Bag', 1, 0, 1);ESX Legacy pesa los ítems en kilogramos, así que 1 es un peso razonable. Reinicia ESX después de insertar la fila.
Configurar el recurso#
Todo lo que configuras está en un único archivo, shared/config.lua. El framework y el target se detectan por ti; el resto son unos pocos valores:
Ajuste | Por defecto | Qué hace |
|---|---|---|
| false | Muestra lo que hace el script, con el prefijo |
| auto |
|
| auto |
|
| 'outfitbag' | El ítem de inventario que coloca una bolsa. |
| 'reh_prop_reh_bag_outfit_01a' | El prop usado para todas las bolsas, personales y de uniforme. |
| false | Pasa los atuendos aplicados a tu recurso de ropa para que se mantengan tras reconectar. Lee antes la advertencia en Uso. |
| 'en' | Cualquier código de idioma de |
| un ejemplo | Las bolsas de uniforme fijas. Consulta Uso → Bolsas de uniforme. |
Los valores que conviene revisar primero:
Config.Language = 'en' -- any code from locales/
Config.ItemName = 'outfitbag' -- must match your inventory item
Config.BagModel = 'reh_prop_reh_bag_outfit_01a' -- the bag prop
Config.PersistOutfitToClothing = false -- keep false if clothes are itemsEl
Config.DefaultBagsincluido contiene un ejemplo: una bolsa de uniforme de policía dentro de Mission Row. Consérvalo, adáptalo o defineConfig.DefaultBags = {}si todavía no quieres bolsas de uniforme. La configuración se lee cuando se inicia el recurso, así que reinícialo después de un cambio.
Verificar la instalación#
Después de completar la instalación, define Config.Debug = true, reinicia tu servidor y lee la consola. La detección es lo primero que muestra:
[Quasar Outfit Bag]: Found matching dependency: es_extended with ID: esx
[Quasar Outfit Bag]: Found matching dependency: ox_target with ID: ox_targetNo matching dependencies found significa que todavía no se estaba ejecutando nada de esa lista: revisa tu orden de carga. Después entra en tu servidor y completa el primer ciclo:
Date el ítem
Usa el comando propio de tu framework o inventario, por ejemplo
/giveitem <id> outfitbag 1. En un servidor standalone, escribe/outfitbagen su lugar.Coloca la bolsa
Usa el ítem. Tu personaje deja una bolsa delante de él y el ítem sale de tu inventario.
Desbloquéala y guarda un atuendo
Apunta a la bolsa con el target y elige Use Bag. Una bolsa nueva se abre bloqueada: pulsa el candado, después Save Outfit, escribe un nombre y pulsa Enter.
Aplícalo y recoge la bolsa
Haz clic en el atuendo para previsualizarlo, elige uno de sus cuatro iconos para ponértelo y cierra con ESC. Vuelve a apuntar a la bolsa y elige Pick Up Bag — el ítem vuelve a tu inventario.
Los atuendos se escriben en la base de datos en cuanto pulsas Enter. Recoge la bolsa, coloca otra en cualquier sitio: la misma lista te espera dentro.



