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

# five-influencers

> Sistema de influenciador/redes sociais: painel NUI com catálogo de emotes e danças (com música 3D espacial), emotes sincronizados em par entre dois jogadores, grupos para dançar em conjunto e modo câmera/selfie cinematográfico.

O **five-influencers** é um recurso para criação de conteúdo in-game, com painel NUI de emotes e danças, som 3D espacial, emotes sincronizados em par, grupos de dança e modo câmera/selfie cinematográfico.

## Funcionalidades

<CardGroup cols={2}>
  <Card title="Painel NUI" icon="table-cells">
    Catálogo de emotes organizado por categoria.
  </Card>

  <Card title="Som 3D espacial" icon="volume-high">
    Cada emote pode tocar um `.ogg` ouvido por quem está perto, com atenuação por distância.
  </Card>

  <Card title="Emotes sincronizados" icon="people-arrows">
    Em par entre dois jogadores próximos (abraço/beijo), com posicionamento relativo/attach.
  </Card>

  <Card title="Grupos" icon="users">
    Um líder convida jogadores e a dança é replicada em sincronia.
  </Card>

  <Card title="Modo câmera/selfie" icon="camera">
    FOV/zoom, roll, profundidade de campo, luz, grade e proporção.
  </Card>
</CardGroup>

<Note>
  **Não usa banco de dados** (só um KVP local para o estado de mudo).
</Note>

***

## Dependências

<CardGroup cols={2}>
  <Card title="vRP" icon="puzzle-piece">
    `Proxy.getInterface("vRP")`, `vRPclient`.
  </Card>

  <Card title="Notify / hud:Active" icon="bell">
    Sistemas externos esperados.
  </Card>
</CardGroup>

<Info>
  **PL\_PROTECT** *(opcional)*: autoriza spawn dos props no anticheat.
</Info>

***

## Configuração

<AccordionGroup>
  <Accordion title="config/config.lua — Configurações principais" icon="sliders">
    Tabela `Influencers`:

    ```lua theme={null}
    Influencers.Command = "influencer"             -- abre/fecha o painel
    Influencers.CancelCommand = "influencercancel" -- cancela emote/sync
    Influencers.Permission = nil                   -- nil = todos | "Grupo" | "grupo@nivel" | tabela
    Influencers.ThemeColor = "#37dae6"             -- Theme.main tem prioridade

    Influencers.DefaultCategory = "Geral"
    Influencers.CategoryOrder = { "Geral", "TikTok", "TikTok Compartilhado", "Carregar" }

    Influencers.Sound = { Radius = 7.0, Volume = 0.4 }   -- som 3D (alcance/volume)
    Influencers.SyncDistance = 5.0                 -- distância p/ achar o par
    Influencers.SyncAutoAccept = true              -- aceite automático de sync
    ```
  </Accordion>

  <Accordion title="config/emotes.lua — Catálogo de emotes" icon="list">
    ```lua theme={null}
    Influencers.EmotePack = {
        options = {  -- lista plana
            {
                Label = 'Gang Sign', Command = 'gangsign',
                Dictionary = 'mp_player_int_uppergang_sign_a', Animation = 'mp_player_int_gang_sign_a',
                Options = { Flags = { Loop = true, Move = true } },
                -- soundFile = "musica.ogg", volume = 0.4,  -- som 3D
                -- Synchronized = true, Options.Shared = { OtherEmote = '...', Attach = true, ... },  -- emote em par
                -- Options.Props = { { Bone = 57005, Name = 'prop...', Placement = {...} } },
            },
        },
        categories = {  -- mapa nomeado (a chave vira a categoria)
            ["TikTok"] = { emoteList = { { dict="...", anim="...", label="...", command="...", soundFile="x.ogg", loop=true } } },
        },
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Comandos

Os comandos abaixo controlam o painel e os emotes ativos.

| Comando             | Descrição                               |
| ------------------- | --------------------------------------- |
| `/influencer`       | Abre/fecha o painel (valida permissão). |
| `/influencercancel` | Cancela emote/sincronização ativos.     |

<Tip>
  Atalhos: tecla **X** cancela emote; no modo câmera, TAB (selfie/normal), scroll (zoom), Q/E (roll), F (DOF), H (luz), G (grade), ENTER (captura limpa).
</Tip>

***

## Localizações

<Info>
  O recurso não usa coordenadas fixas no mundo (sem NPCs, blips, lojas, zonas ou markers). Os emotes funcionam onde o jogador estiver. As coordenadas que aparecem em `config/emotes.lua` (`Placement`, `Bone`, offsets) e no código (attach de sync, props) são posições/rotações **relativas ao próprio jogador**, não pontos no mapa.
</Info>

***

## Exports

Não publica exports próprios. Consome `exports["PL_PROTECT"]:setSpawnClient` (se ativo). Tunnel `five-influencers` expõe `Core.CheckPermission()`.

***

## Banco de Dados

<Note>
  Nenhum.
</Note>

***

## Customização

* **Emotes/danças:** `config/emotes.lua` (`options` ou `categories`). Música = `.ogg` em `sounds/` + `soundFile`. Par = `Synchronized = true` + `Options.Shared.OtherEmote`.
* **Categorias:** `CategoryOrder` / `DefaultCategory`.
* **Acesso:** `Influencers.Permission`.
* **Aparência:** `Influencers.ThemeColor`.
* **Som:** `Influencers.Sound`. **Sync:** `SyncDistance`/`SyncAutoAccept`.
* **Comandos/textos:** `Command`/`CancelCommand` e `Influencers.Language`.
