# Instalação

Este guia usa o pacote de distribuição com a interface já compilada. Você não precisa de Node.js nem recompilar a UI para instalá-lo.

## Requisitos

| Componente | Quando é necessário |
| --- | --- |
| `oxmysql` e conexão operacional com o banco de dados | Obrigatório para salvar os dados do recurso. |
| Qbox, QBCore ou ESX | Se você usa a economia e as permissões deles. É possível conectar outra economia por callbacks standalone. |
| Packs de tatuagens | Opcionais. Você pode instalar nenhum, alguns ou todos. |
| `ox_lib` | Opcional para o aviso TextUI; há uma alternativa nativa. |
| Sistema de aparência | Se o servidor usa um, consulte o [bridge de aparência](https://docs.cxgstudios.com/docs/pt-BR/01-cxg-tattoos/05-integraciones.md#aparência-e-carregamento-do-personagem). |

Os blueprints são compartilhados por códigos. Você não precisa adicionar um item ao inventário para usar a configuração incluída.

## Coloque o recurso

1. Extraia o pacote em uma pasta de recursos do seu servidor.
2. Nestes guias, usamos `cxg-tattoos` como nome da pasta. Se a sua tiver outro nome, use o nome real nos comandos `ensure` e `restart`.
3. Preserve a estrutura fornecida. Confira se `config.lua`, `shared/tattoos.json`, `bridge/` e `ui/dist/index.html` estão junto dos arquivos do pacote.
4. Configure a conexão com o banco de dados e confirme que `oxmysql` inicia corretamente.

## Ordem de inicialização

Exemplo com Qbox e sem packs externos:

```cfg
ensure oxmysql
ensure qbx_core
ensure cxg-tattoos
```

Com QBCore ou ESX, substitua `qbx_core` por `qb-core` ou `es_extended`. Inicie o sistema de aparência antes do recurso, se você usar um. Em modo standalone, configure primeiro os [callbacks de pagamentos e permissões](https://docs.cxgstudios.com/docs/pt-BR/01-cxg-tattoos/05-integraciones.md).

Se tiver packs, inicie apenas os instalados antes do recurso. Por exemplo:

```cfg
ensure oxmysql
ensure qbx_core
ensure xgc_TattooClasic
ensure xgc_TattooGangs
ensure cxg-tattoos
```

Não adicione linhas `ensure` para packs que você não possui. As fontes padrão podem continuar em `Config.TattooCatalog.sources`: packs que não foram iniciados são ignorados.

## Primeira inicialização

O recurso prepara o armazenamento automaticamente. Em uma instalação nova, não é necessário importar um esquema manualmente.

Antes de testar, confira em `config.lua`:

- `Config.Locale`: idioma global.
- `Config.Purchases`: economia e contas de cobrança.
- `Config.Permissions`: acesso administrativo.
- `Config.Identity`: sistema de identidades do servidor e identificador usado para salvar e recuperar os dados do jogador. Consulte [Sistema de identidades](https://docs.cxgstudios.com/docs/pt-BR/01-cxg-tattoos/03-configuracion.md#sistema-de-identidades).
- `Config.Shops`: locais iniciais das lojas.

Vá até uma loja configurada e interaja com ela. Confira o catálogo, uma prévia e uma compra com um personagem de teste. Carregue o personagem novamente para confirmar que a tatuagem foi mantida.

O comando administrativo incluído é configurado em `Config.AdminCommand`; o nome inicial é `/tattooadmin`. Consulte [permissões e pagamentos](https://docs.cxgstudios.com/docs/pt-BR/01-cxg-tattoos/05-integraciones.md) antes de usá-lo.

## Aplicar alterações

Depois de modificar `config.lua` ou um bridge, salve o arquivo e reinicie o recurso:

```cfg
restart cxg-tattoos
```

As fontes do catálogo são lidas novamente na inicialização e podem ser sincronizadas pelo painel administrativo. Os ajustes salvos nesse painel são mantidos; consulte [configuração](https://docs.cxgstudios.com/docs/pt-BR/01-cxg-tattoos/03-configuracion.md) e [catálogo](https://docs.cxgstudios.com/docs/pt-BR/01-cxg-tattoos/04-catalogo.md) antes de esperar que um valor do arquivo os substitua.

## Problemas frequentes

| Sintoma | O que verificar |
| --- | --- |
| O recurso não inicia | Se `oxmysql` foi iniciado, a conexão funciona e o pacote está completo. |
| Falta um pack na loja | Se o recurso foi iniciado, `enabled` não está como `false` e o caminho JSON corresponde ao pack. |
| A interface aparece vazia | Se `ui/dist/index.html` e os arquivos referenciados em `ui/dist/assets/` foram copiados juntos. |
| O painel nega acesso | `Config.AdminCommand.permission`, bindings de permissões e cargos ou ACE configurados. |
| O pagamento é recusado | Framework escolhido, nomes dos recursos, saldo e callbacks standalone, se aplicável. |
| Há duas interações de tatuagem no mesmo local | Se outro recurso de aparência ou lojas também tem esse local ativo. Mantenha um único acesso à loja desejada. |
| Uma alteração de loja ou nível não é aplicada | Se já existe um ajuste salvo pelo painel. Edite ali o valor efetivo. |

Você pode ativar temporariamente `Config.Debug` e `Config.Permissions.debug` para diagnosticar problemas. Desative-os ao terminar.

[Continue para a configuração](https://docs.cxgstudios.com/docs/pt-BR/01-cxg-tattoos/03-configuracion.md).
