# Installazione

Questa guida utilizza il pacchetto di distribuzione con l'interfaccia già compilata. Non servono Node.js né la ricompilazione della UI per installarlo.

## Requisiti

| Componente | Quando serve |
| --- | --- |
| `oxmysql` e una connessione al database funzionante | Obbligatori per salvare i dati della risorsa. |
| Qbox, QBCore o ESX | Se usi la loro economia e i loro permessi. Puoi collegare un'altra economia tramite callback standalone. |
| Pacchetti di tatuaggi | Facoltativi. Puoi scegliere di non installarne nessuno, installarne alcuni o installarli tutti. |
| `ox_lib` | Facoltativo per l'avviso TextUI; è disponibile un'alternativa nativa. |
| Sistema di aspetto | Se il server ne utilizza uno, consulta il [bridge di aspetto](https://docs.cxgstudios.com/docs/it/01-cxg-tattoos/05-integraciones.md#aspetto-e-caricamento-del-personaggio). |

I blueprint si condividono tramite codici. Non occorre aggiungere un oggetto all'inventario per usare la configurazione inclusa.

## Posiziona la risorsa

1. Estrai il pacchetto in una cartella delle risorse del server.
2. In queste guide usiamo `cxg-tattoos` come nome della cartella. Se la tua cartella ha un nome diverso, usa il nome effettivo nei comandi `ensure` e `restart`.
3. Mantieni la struttura fornita. Verifica che `config.lua`, `shared/tattoos.json`, `bridge/` e `ui/dist/index.html` siano presenti insieme agli altri file del pacchetto.
4. Configura la connessione al database e assicurati che `oxmysql` si avvii correttamente.

## Ordine di avvio

Esempio con Qbox e senza pacchetti esterni:

```cfg
ensure oxmysql
ensure qbx_core
ensure cxg-tattoos
```

Con QBCore o ESX, sostituisci `qbx_core` con `qb-core` o `es_extended`. Se usi un sistema di aspetto, avvialo prima della risorsa. Per la modalità standalone, configura prima i [callback di pagamento e permessi](https://docs.cxgstudios.com/docs/it/01-cxg-tattoos/05-integraciones.md).

Se hai dei pacchetti, avvia solo quelli installati prima della risorsa. Per esempio:

```cfg
ensure oxmysql
ensure qbx_core
ensure xgc_TattooClasic
ensure xgc_TattooGangs
ensure cxg-tattoos
```

Non aggiungere righe `ensure` per pacchetti che non possiedi. Le fonti predefinite possono restare in `Config.TattooCatalog.sources`: i pacchetti non avviati vengono ignorati.

## Primo avvio

La risorsa prepara automaticamente il proprio archivio. Per una nuova installazione non devi importare manualmente uno schema.

Prima di provarla, controlla `config.lua`:

- `Config.Locale`: lingua globale.
- `Config.Purchases`: economia e conti di addebito.
- `Config.Permissions`: accesso amministrativo.
- `Config.Identity`: sistema di identità del server e identificatore usato per salvare e recuperare i dati del giocatore. Consulta [Sistema di identità](https://docs.cxgstudios.com/docs/it/01-cxg-tattoos/03-configuracion.md#sistema-di-identità).
- `Config.Shops`: posizioni iniziali dei negozi.

Raggiungi un negozio configurato e usa la relativa interazione. Controlla il catalogo, un'anteprima e un acquisto con un personaggio di prova. Ricarica il personaggio per verificare che il tatuaggio sia ancora presente.

Il comando amministrativo incluso si configura in `Config.AdminCommand`; il nome iniziale è `/tattooadmin`. Consulta [permessi e pagamenti](https://docs.cxgstudios.com/docs/it/01-cxg-tattoos/05-integraciones.md) prima di usarlo.

## Applicare le modifiche

Dopo aver modificato `config.lua` o un bridge, salva il file e riavvia la risorsa:

```cfg
restart cxg-tattoos
```

Le fonti del catalogo vengono rilette all'avvio e possono essere sincronizzate dal pannello amministrativo. Le impostazioni salvate dal pannello vengono mantenute; consulta [configurazione](https://docs.cxgstudios.com/docs/it/01-cxg-tattoos/03-configuracion.md) e [catalogo](https://docs.cxgstudios.com/docs/it/01-cxg-tattoos/04-catalogo.md) prima di aspettarti che un valore del file le sostituisca.

## Problemi comuni

| Sintomo | Cosa controllare |
| --- | --- |
| La risorsa non si avvia | Che `oxmysql` sia avviato, la connessione funzioni e il pacchetto sia completo. |
| Un pacchetto non compare nel negozio | Che la relativa risorsa sia avviata, `enabled` non sia `false` e il percorso JSON corrisponda a quello del pacchetto. |
| L'interfaccia è vuota | Che `ui/dist/index.html` e i file referenziati in `ui/dist/assets/` siano stati copiati insieme. |
| Il pannello nega l'accesso | `Config.AdminCommand.permission`, binding dei permessi e ruoli o ACE configurati. |
| Il pagamento viene rifiutato | Framework scelto, nomi delle risorse, saldo e callback standalone, se applicabili. |
| Ci sono due interazioni per i tatuaggi nello stesso punto | Che un'altra risorsa di aspetto o dei negozi non abbia attiva la stessa posizione. Mantieni un solo accesso al negozio che vuoi usare. |
| Una modifica al negozio o al livello non viene applicata | Che non esista già un'impostazione salvata dal pannello. Modifica lì il valore effettivo. |

Puoi attivare temporaneamente `Config.Debug` e `Config.Permissions.debug` per diagnosticare i problemi. Disattivali al termine.

[Continua con la configurazione](https://docs.cxgstudios.com/docs/it/01-cxg-tattoos/03-configuracion.md).
