> ## 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.

# Exports

> Abra o menu, toque e pare danças, pré-carregue arquivos e registre animações a partir de outros scripts

Os exports permitem integrar o dk\_dances com o resto do servidor: abrir o menu a partir de um NPC ou de um item, tocar uma dança por script, saber se o jogador está dançando, registrar as animações de outro recurso.

O arquivo `types.lua` do recurso descreve todos os exports para o **Lua LSP**. Ele não é carregado em runtime — serve só para o seu editor sugerir e validar as assinaturas enquanto você escreve a integração.

## Client

| Export | Assinatura | Retorno |
| - | - | - |
| `openMenu` | `openMenu(id?: string)` | `boolean` |
| `closeMenu` | `closeMenu()` | `boolean` |
| `openShortcuts` | `openShortcuts()` | `boolean` |
| `play` | `play(id: string)` | `boolean, motivo?` |
| `stop` | `stop()` | `boolean` |
| `isDancing` | `isDancing()` | `boolean` |
| `isLoaded` | `isLoaded(id: string)` | `boolean` |
| `load` | `load(id: string)` | `boolean` |

> **openMenu / closeMenu**
>
> Abrem e fecham o menu de danças. Com o `id` de uma dança, o menu abre **com ela selecionada**.
>
> O hook `onOpenUi` pode negar a abertura.

> **openShortcuts**
>
> Abre a barra de atalhos. Devolve `false` se ela estiver **desligada** (`shortcuts.enabled`), se o **menu já estiver aberto** ou se o hook `onOpenUi` negar.

> **play**
>
> Toca a dança do `id`, como o comando `/danca <id>`.
>
> Retorna `true`, ou `false` e o motivo.

> **stop**
>
> Para a dança atual. É o que um script externo chama quando termina uma [dança que chama outro script](https://docs.dkscripts.com.br/scripts/dances/dev/actions.md).

> **isDancing**
>
> Retorna `true` enquanto o jogador local está dançando.

> **isLoaded / load**
>
> `isLoaded` diz se o arquivo da dança já está baixado. `load` **espera o download** e devolve o resultado: use para pré-carregar uma dança antes de tocar.

## Server

| Export | Assinatura | Retorno |
| - | - | - |
| `isDancing` | `isDancing(src: number)` | `boolean` |
| `registerDance` | `registerDance(dance: DkDance)` | `boolean, motivo?` |
| `unregisterDance` | `unregisterDance(id: string)` | `boolean, motivo?` |

> **isDancing**
>
> Retorna `true` se o jogador `src` está dançando.

> **registerDance**
>
> Põe **uma** dança no menu. Sempre local: `file` e `remote` são ignorados. Retorna `false` e o motivo se a dança for recusada.
>
> Veja [Injetar animações do seu servidor](https://docs.dkscripts.com.br/scripts/dances/dev/inject.md).

> **unregisterDance**
>
> Tira do menu uma dança que o **mesmo recurso** registrou. Retorna `false` e o motivo se não puder remover.

Só o **servidor** registra danças. O client não tem export de registro, então nenhum jogador consegue colocar uma dança no catálogo.

## Exemplos

### Abrir o menu a partir de um NPC

```lua theme={null}
exports.dk_dances:openMenu()
```

### Abrir o menu já em uma dança

```lua theme={null}
exports.dk_dances:openMenu("passinho_i_love_u_funk")
```

### Tocar uma dança por script

```lua theme={null}
local ok, reason = exports.dk_dances:play("gta-shuffle-high-left-up")

if not ok then
    print(("Não deu para dançar: %s"):format(reason))
end
```

### Parar a dança quando outra coisa precisa do jogador

```lua theme={null}
if exports.dk_dances:isDancing() then
    exports.dk_dances:stop()
end
```

### Pré-carregar antes de tocar

```lua theme={null}
exports.dk_dances:load("passinho_i_love_u_funk")
exports.dk_dances:play("passinho_i_love_u_funk")
```

### Saber, no servidor, se um jogador está dançando

```lua theme={null}
if exports.dk_dances:isDancing(source) then
    return
end
```

### Registrar uma dança de outro recurso

```lua theme={null}
local ok, problem = exports.dk_dances:registerDance({
    id = "meupack-samba",
    label = "Samba do Zé",
    dict = "meupack@samba",
    clip = "samba_1",
    category = "party",
    origin = "exclusive",
    loop = true,
})

if not ok then
    print(("dk_dances recusou a dança: %s"):format(problem))
end
```

> **[Hooks](https://docs.dkscripts.com.br/scripts/dances/dev/hooks.md)**
>
> Reaja a início, fim e compartilhamento.

> **[Injetar animações](https://docs.dkscripts.com.br/scripts/dances/dev/inject.md)**
>
> Registre as animações do seu servidor no menu.


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