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

# Objetos nas Danças

> Bebida, celular, glowsticks e cavalinho: defina que objeto cada dança segura, em qual osso e como acertar a posição

As danças do jogo base que seguram algo (bebida, celular, glowsticks, cavalinho de brinquedo) saem com o **objeto na mão** enquanto tocam, **na prévia também**. Ao parar, o objeto some.

Arquivo: `config/client/props.lua`. Ele é **seu**: ajuste, remova ou acrescente à vontade.

## Visão geral

| Opção | Padrão | O que faz |
| - | - | - |
| `enabled` | `true` | `false` desliga todos os objetos |
| `networked` | `true` | `true` faz os outros jogadores verem o objeto |
| `tuningCommand` | `"dancaprop"` | Comando para ajustar um objeto ao vivo. `""` desliga |
| `props` | — | Os objetos disponíveis, pelo nome que as regras usam |
| `rules` | — | Quais danças seguram quais objetos |

> [!WARNING]
>
> O `networked = true` precisa de **OneSync** e de um servidor que deixe o client criar entidades (`sv_entityLockdown` **fora de** `strict`). Se o servidor recusar, o objeto aparece **só para o jogador**. A prévia nunca usa isto: o clone só existe na tela de quem o vê.

## Definindo um objeto

```lua theme={null}
props = {
    beer = {
        model = "prop_amb_beer_bottle",
        bone = 28422,
        position = { 0.0, 0.0, 0.05 },
        rotation = { 0.0, 0.0, 0.0 },
    },
},
```

| Campo | O que faz |
| - | - |
| `model` | Nome do modelo. Se a build não tiver o modelo, o objeto é **ignorado** e a dança toca sem ele |
| `bone` | Osso do jogador onde o objeto prende |
| `position` | `{ x, y, z }` em metros, a partir do osso |
| `rotation` | `{ x, y, z }` em graus |

### Ossos

| Osso | Id |
| - | - |
| Mão direita (feito para segurar objetos) | `28422` |
| Mão esquerda (feito para segurar objetos) | `60309` |
| Mão direita do esqueleto | `57005` |
| Mão esquerda do esqueleto | `18905` |
| Cabeça | `31086` |

### Objetos que já vêm

| Nome | Modelo | Osso |
| - | - | - |
| `beer` | `prop_amb_beer_bottle` | mão direita |
| `wine` | `prop_drink_champ` | mão direita |
| `whiskey` | `prop_drink_whisky` | mão direita |
| `phone` | `prop_npc_phone_02` | mão direita |
| `glowstickRight` | `ba_prop_battle_glowstick_01` | mão direita |
| `glowstickLeft` | `ba_prop_battle_glowstick_01` | mão esquerda |
| `horse` | `ba_prop_battle_hobby_horse` | mão direita |

## Ligando danças a objetos

`rules` define **quais danças seguram quais objetos**. Vale a **primeira regra que bater**, de cima para baixo. Uma regra bate quando **todos** os campos que ela tem batem.

| Campo | Bate quando... |
| - | - |
| `id` | O id da dança é igual (ex.: `"gta-shuffle-high-left-up"`) |
| `category` | A categoria da dança é igual (ex.: `"gta-crowd"`) |
| `dict` | O dicionário de animação **contém** o texto (texto simples, uma lista de textos vale se um bater) |
| `clip` | O nome do clipe bate com o padrão de Lua (ou com um dos padrões de uma lista) |
| `props` | Nomes de objetos da tabela `props` que a dança segura |

No `clip`, o `$` marca o **fim** do nome e o `^` o **começo**: `"_m04$"` bate só em clipes que terminam em `_m04`.

### Dando uma cerveja a uma dança

```lua theme={null}
rules = {
    {
        id = "gta-shuffle-high-left-up",
        props = { "beer" },
    },
    -- ...as regras que já vêm
},
```

### Tirando o objeto de uma dança

Uma regra com `props = {}` **tira** o objeto de uma dança. Como vale a primeira que bater, ponha-a **antes** da regra geral que daria o objeto:

```lua theme={null}
rules = {
    {
        id = "gta-shuffle-high-left-up",
        props = {},
    },
    -- ...as regras que já vêm
},
```

## Acertando a posição no jogo

**1. Ligue o debug**

`debugMode = true` em `config/client/config.lua`, e reinicie o recurso.

**2. Dance**

Toque a dança com o objeto.

**3. Ajuste ao vivo**

Use o comando, com o nome do objeto e os seis valores:

```
/dancaprop beer 0.0 0.0 0.05 0.0 0.0 0.0
```

O objeto se move na hora.

**4. Copie a linha**

O **F8** mostra a linha pronta para colar em `config/client/props.lua`.

O comando só existe com `debugMode = true`. Desligue o debug depois do ajuste.

## Trocando o jeito de criar o objeto

O código que **cria** o objeto, prende ao osso e limpa fica em `modules/client/props.lua`, feito para você editar. Troque a função `create` ali se quiser outro jeito de criar, por exemplo usando outro recurso de props.

`create` precisa devolver o objeto criado (ou `nil` se falhar). O restante do arquivo cuida de regras, troca de dança e limpeza, e é melhor não mexer.

Veja também [Danças do Jogo Base](https://docs.dkscripts.com.br/scripts/dances/configs/gta-pack.md): as danças que já saem com objeto na mão.


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