> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dkscripts.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Prévia

> Veja a dança no seu personagem antes de tocar: como a prévia funciona e como ajustar câmera, posição e distância

A prévia cria um **clone do personagem**, só na tela do jogador, dançando a animação selecionada **à esquerda da câmera**, longe do painel. Ninguém mais vê esse clone.

## Como funciona

A prévia **liga sozinha** na primeira dança que o jogador seleciona no menu e passa a acompanhar a seleção:

**1. Primeira seleção**

Uma barrinha enche no botão **Prévia**. Quando completa, o clone aparece dançando.

**2. Trocar de dança**

A barrinha enche na etiqueta da prévia e, quando completa, o clone passa a dançar a nova animação. Mudar de novo no meio **recomeça** a barra.

**3. Desligar e ligar**

<kbd>P</kbd> ou o botão **Prévia** desliga e liga esse acompanhamento. Ao ligar por eles, a prévia abre **na hora**. Desligada, só volta com <kbd>P</kbd> ou ao reabrir o menu.

* Uma prévia por vez; trocar de dança troca a animação do **mesmo clone**
* Se o arquivo da dança ainda não foi baixado, a prévia **espera o download**
* Enquanto o jogador dança não há prévia: o botão some do rodapé (fica só o **Parar**) e a prévia aberta **fecha assim que qualquer dança começa**

### Quando a prévia fecha sozinha

* ao fechar o menu
* ao se afastar do lugar (`leaveDistance`)
* se algo impedir a dança (veículo, queda, nado)

Uma prévia que **falha**, ou que fecha porque o jogador se afastou, também **desliga** o acompanhamento: ele só volta com <kbd>P</kbd> ou ao reabrir o menu.

A prévia só mostra a animação. Quem decide se o jogador **pode dançar** é o `onBeforePlay` do servidor, e a prévia **não tem o cooldown** das danças exclusivas: o aviso de espera lembra o jogador disso.

## Configuração

Em `config/client/config.lua`, bloco `preview`:

| Opção | Padrão | O que faz |
| - | - | - |
| `enabled` | `true` | `false` esconde o botão **Prévia** e desliga a prévia |
| `autoDelay` | `1000` | Quanto tempo (ms) a barra leva para encher depois que o jogador seleciona uma dança, inclusive a primeira. `0` abre e troca a prévia na hora; o download de um arquivo novo continua esperando 1 s desde o anterior |
| `screenX` | `0.24` | Posição do clone na largura da tela (`0` = borda esquerda, `0.5` = centro, `1` = borda direita). Como o painel abre à direita, valores entre `0.15` e `0.35` são seguros |
| `cameraDistance` | `3.5` | Quanto a câmera da prévia recua atrás do jogador, em metros |
| `alpha` | `255` | Opacidade do clone, de `0` a `255`. Menos que `255` deixa claro que é só uma prévia |
| `leaveDistance` | `4.0` | A prévia fecha se o jogador se afastar mais que isto (metros) de onde ela abriu |
| `checkSpace` | `true` | Não abre a prévia se houver parede entre o jogador e o clone, e aproxima a câmera quando há parede atrás |

```lua theme={null}
preview = {
    enabled = true,
    autoDelay = 600,
    screenX = 0.24,
    cameraDistance = 3.5,
    alpha = 220,
    leaveDistance = 4.0,
    checkSpace = true,
},
```

A prévia usa uma **câmera própria**, atrás do jogador e no rumo em que ele olhava, então aparece inteira em primeira ou terceira pessoa. O clone fica ao lado do personagem, na mesma profundidade, e a câmera ajusta a lente para o quadro ser sempre o mesmo.

Com parede atrás do jogador a câmera se aproxima e abre a lente. **Colada demais, a prévia não abre**, e o jogador recebe o aviso de que não há espaço.

## Controlando por hook

O `onBeforePreview(dance)` do client impede a prévia quando retorna `false`.

```lua theme={null}
onBeforePreview = function(dance)
    if dance.category == "gta-pole" then
        return false
    end

    return true
end,
```

Veja também [Hooks](https://docs.dkscripts.com.br/scripts/dances/dev/hooks.md): todos os hooks de client e server.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.