# Instalación

Esta guía utiliza el paquete de distribución con la interfaz ya compilada. No necesitas Node.js ni recompilar la UI para instalarlo.

## Requisitos

| Componente | Cuándo lo necesitas |
| --- | --- |
| `oxmysql` y una conexión de base de datos operativa | Obligatorio para guardar los datos del recurso. |
| Qbox, QBCore o ESX | Si utilizas su economía y permisos. Puedes conectar otra economía mediante callbacks standalone. |
| Packs de tatuajes | Opcionales. Puedes instalar ninguno, algunos o todos. |
| `ox_lib` | Opcional para el aviso TextUI; existe una alternativa nativa. |
| Sistema de apariencia | Si tu servidor lo utiliza, revisa el [bridge de apariencia](https://docs.cxgstudios.com/docs/es/01-cxg-tattoos/05-integraciones.md#apariencia-y-carga-del-personaje). |

Los blueprints se comparten mediante códigos. No necesitas añadir un objeto de inventario para utilizar la configuración incluida.

## Coloca el recurso

1. Descomprime el paquete en una carpeta de recursos de tu servidor.
2. En estas guías usamos `cxg-tattoos` como nombre de carpeta. Si tu carpeta se llama de otra forma, utiliza su nombre real en los comandos `ensure` y `restart`.
3. Conserva la estructura suministrada. Comprueba que están `config.lua`, `shared/tattoos.json`, `bridge/` y `ui/dist/index.html` junto con los archivos del paquete.
4. Configura tu conexión de base de datos y asegúrate de que `oxmysql` arranca correctamente.

## Orden de inicio

Ejemplo con Qbox y sin packs externos:

```cfg
ensure oxmysql
ensure qbx_core
ensure cxg-tattoos
```

Con QBCore o ESX, sustituye `qbx_core` por `qb-core` o `es_extended`. Inicia tu sistema de apariencia antes del recurso si lo utilizas. Para standalone, configura primero los [callbacks de pagos y permisos](https://docs.cxgstudios.com/docs/es/01-cxg-tattoos/05-integraciones.md).

Si tienes packs, inicia únicamente los instalados antes del recurso. Por ejemplo:

```cfg
ensure oxmysql
ensure qbx_core
ensure xgc_TattooClasic
ensure xgc_TattooGangs
ensure cxg-tattoos
```

No añadas líneas `ensure` para packs que no tengas. Las fuentes predeterminadas pueden permanecer en `Config.TattooCatalog.sources`: los packs que no estén iniciados se omiten.

## Primer arranque

El recurso prepara automáticamente su almacenamiento. No necesitas importar manualmente un esquema para una instalación nueva.

Antes de probarlo, revisa en `config.lua`:

- `Config.Locale`: idioma global.
- `Config.Purchases`: economía y cuentas de cobro.
- `Config.Permissions`: acceso administrativo.
- `Config.Identity`: sistema de identidades del servidor e identificador utilizado para guardar y recuperar los datos del jugador. Consulta [Sistema de identidades](https://docs.cxgstudios.com/docs/es/01-cxg-tattoos/03-configuracion.md#sistema-de-identidades).
- `Config.Shops`: ubicaciones iniciales de las tiendas.

Acércate a una tienda configurada y utiliza su interacción. Comprueba el catálogo, una previsualización y una compra con un personaje de prueba. Vuelve a cargar el personaje para comprobar que conserva el tatuaje.

El comando administrativo incluido se configura en `Config.AdminCommand`; su nombre inicial es `/tattooadmin`. Revisa [permisos y pagos](https://docs.cxgstudios.com/docs/es/01-cxg-tattoos/05-integraciones.md) antes de utilizarlo.

## Aplicar cambios

Después de modificar `config.lua` o un bridge, guarda el archivo y reinicia el recurso:

```cfg
restart cxg-tattoos
```

Las fuentes de catálogo se vuelven a leer al iniciar y pueden sincronizarse desde el panel administrativo. Los ajustes guardados desde ese panel se conservan; revisa [configuración](https://docs.cxgstudios.com/docs/es/01-cxg-tattoos/03-configuracion.md) y [catálogo](https://docs.cxgstudios.com/docs/es/01-cxg-tattoos/04-catalogo.md) antes de esperar que un valor del archivo los reemplace.

## Problemas frecuentes

| Síntoma | Qué comprobar |
| --- | --- |
| El recurso no inicia | Que `oxmysql` esté iniciado, la conexión funcione y el paquete esté completo. |
| Falta un pack en la tienda | Que su recurso esté iniciado, `enabled` no sea `false` y la ruta JSON coincida con la del pack. |
| La interfaz aparece vacía | Que `ui/dist/index.html` y los archivos referenciados de `ui/dist/assets/` se hayan copiado juntos. |
| El panel deniega acceso | `Config.AdminCommand.permission`, bindings de permisos y roles o ACE configurados. |
| Se rechaza el pago | Framework elegido, nombres de recursos, saldo y callbacks standalone, si corresponden. |
| Hay dos interacciones de tatuajes en el mismo lugar | Que otro recurso de apariencia o tiendas no tenga también activa esa ubicación. Mantén un único acceso a la tienda que quieras usar. |
| Un cambio de tienda o nivel no se aplica | Que no exista ya un ajuste guardado desde el panel. Edita allí el valor efectivo. |

Puedes activar temporalmente `Config.Debug` y `Config.Permissions.debug` para diagnosticar problemas. Desactívalos al terminar.

[Continuar con la configuración](https://docs.cxgstudios.com/docs/es/01-cxg-tattoos/03-configuracion.md).
