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

# Compartilhar uma Dança

> Envie uma dança ao jogador mais próximo: como o convite funciona, quem recebe e como ajustar distância, tempo e espera

O botão de compartilhar de cada dança (a **seta saindo da caixa**, ao lado da estrela) envia um convite ao **jogador mais próximo**.

O convite usa o pedido do `dk_snippets`, o mesmo painel de aceitar e recusar dos outros scripts da DK, com as teclas dele.

## Como funciona

**1. Quem compartilha**

Clica no botão de compartilhar da dança. Recebe o aviso **"Convite enviado"** na hora.

**2. Quem recebe**

O jogador mais próximo vê o pedido com as opções **Ver** e **Recusar**.

**3. Se aceitar**

O menu dele abre com a dança **selecionada e rolada até a vista**. Ela **não toca sozinha**: ele ainda escolhe **Dançar**.

**4. De volta a quem enviou**

Quem compartilhou recebe outro aviso quando o outro aceita. Recusa e tempo esgotado aparecem igual.

## Regras

* **Quem recebe é sempre escolha do servidor**: o jogador mais próximo, a até `radius` metros, no **mesmo routing bucket**, com o script autenticado e sem outro convite aberto. Quem compartilha só informa qual dança
* Um jogador só tem **um convite aguardando resposta** por vez, e quem já recebeu um não recebe outro até responder
* O convite **não mostra o nome** de quem enviou (o nome da conta Cfx não é o do personagem)
* Se a dança não existir na build do jogador que recebe (dicionário do GTA ausente), o menu abre normal, **sem seleção**

## Configuração

| Arquivo | Opção | Padrão | O que faz |
| - | - | - | - |
| `config/shared` | `share.enabled` | `true` | `false` esconde o botão e o servidor recusa o pedido |
| `config/server` | `share.radius` | `5.0` | Até onde, em metros, o servidor procura o destinatário (aceita `1` a `30`) |
| `config/server` | `share.timer` | `20` | Segundos que o convite fica na tela de quem recebe (aceita `5` a `60`) |
| `config/server` | `share.cooldown` | `5000` | Milissegundos mínimos entre dois pedidos do mesmo jogador, mesmo sem ninguém por perto (aceita `1000` a `60000`) |
| `config/server` | `logs.categories.share` | `true` | Registra cada dança compartilhada e aceita |

```lua theme={null}
-- config/server/config.lua
share = {
    radius = 5.0,
    timer = 20,
    cooldown = 5000,
},
```

## Hooks

| Hook | Quando | Retorno |
| - | - | - |
| `onBeforeShare(src, target, dance)` | Antes de enviar o convite ao jogador mais próximo (`target`) | `false` cancela (um erro também nega) |
| `onShare(src, target, dance)` | O jogador aceitou o convite | |

```lua theme={null}
-- config/server/hooks.lua
onBeforeShare = function(src, target, dance)
    if dance.category == "vip" then
        return exports["meu_script"]:isVip(target)
    end

    return true
end,
```

O `onBeforeShare` roda **antes** de qualquer convite sair. Se ele negar, nenhum convite é enviado.

Veja também [Configurações do Server](https://docs.dkscripts.com.br/scripts/dances/configs/sv-config.md): cooldowns, compartilhar, sincronia e logs.


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