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

# domination

> Dominação de território (guerra de gangues / captura de ponto): grupos com permissão disputam uma zona e pontuam por presença e abates até atingir a meta de vitória.

O **domination** é um sistema de dominação de território (guerra de gangues / captura de ponto). Um admin inicia (ou agenda) a disputa em uma `Location`. Jogadores cujo grupo tem `Domination = true` que entram no raio (`SurvivalDistance`) pontuam: a cada `PointSeconds` a pé (fora de veículo/água, vida > 100) o grupo soma pontos × presença de membros. Abates na zona também rendem pontos. O primeiro grupo a atingir `DominationGoal` vence.

## Funcionalidades

<CardGroup cols={2}>
  <Card title="Captura por presença" icon="location-crosshairs">
    A thread cliente checa a distância ao `Blip`, dispara `Core.Progress("Enter"/"Exit")` e chama `Core.Pontuation(Location)` por ciclo dentro do `PolyZone`.
  </Card>

  <Card title="Pontuação por tick" icon="chart-line">
    O grupo dominante ganha `presença*1 + 1` por tick; demais grupos presentes perdem `1`. A presença sobe `PresenceMultiplier` por membro até `MaxPresenceMultiplier`.
  </Card>

  <Card title="Pontos por abate" icon="crosshairs">
    `gameEventTriggered` (vítima ≤ 100) → `domination:KillFeed`; o servidor credita `PointsKillFeed` ao grupo do atacante.
  </Card>

  <Card title="Logs" icon="file-lines">
    `exports["five_logs"]:AddLog("DOMINATION", ...)` ao iniciar/finalizar (se `five_logs` ativo).
  </Card>
</CardGroup>

***

## Dependências

<CardGroup cols={3}>
  <Card title="vrp" icon="server" />

  <Card title="PolyZone" icon="draw-polygon" />

  <Card title="keyboard" icon="keyboard">
    Tunnel `Instagram`.
  </Card>

  <Card title="survival" icon="heart-pulse">
    `FinishSurvival`.
  </Card>

  <Card title="garages" icon="warehouse">
    `garages:Delete`.
  </Card>
</CardGroup>

<Info>
  Opcionais: **core\_logs** e `exports.vrp:Bucket`.
</Info>

***

## Configuração

<AccordionGroup>
  <Accordion title="shared-side/shared.lua — variáveis de ritmo" icon="sliders">
    | Variável                | Padrão         | Descrição                          |
    | ----------------------- | -------------- | ---------------------------------- |
    | `Bucket`                | `false`        | Bucket dedicado durante a disputa. |
    | `PointSeconds`          | `15`           | Intervalo (s) entre contagens.     |
    | `Permission`            | `"Admin"`      | Permissão base do comando.         |
    | `DominationGoal`        | `1000`         | Pontuação para vencer.             |
    | `Command`               | `"domination"` | Nome do comando.                   |
    | `MaxPresenceMultiplier` | `3.0`          | Teto do multiplicador de presença. |
    | `PresenceMultiplier`    | `0.25`         | Incremento por membro.             |
    | `PointsKillFeed`        | `5`            | Pontos por abate.                  |
  </Accordion>

  <Accordion title="Locations — zonas de disputa" icon="map-pin">
    Cada zona com `Name`, `Blip` (centro), `SurvivalDistance` (raio), `Poly` (vértices), `Permission` e `Execute` (`Hour`/`Minute`/`Week`, agendamento automático).
  </Accordion>
</AccordionGroup>

***

## Comandos

| Comando                   | Acesso            | Descrição                                                                  |
| ------------------------- | ----------------- | -------------------------------------------------------------------------- |
| `/domination` (`Command`) | `Admin` (nível 1) | Abre menu para iniciar a disputa de uma `Location` ou `Finalizar` a atual. |

***

## Eventos

A interface Tunnel `bindInterface("domination", Core)` (servidor) expõe `Core.Progress(Mode)` (entrada/saída do raio, ajusta presença/bucket) e `Core.Pontuation(Select)` (computa pontos do grupo no tick e verifica vitória).

### Recebidos no servidor

| Evento                | Descrição                                                                                |
| --------------------- | ---------------------------------------------------------------------------------------- |
| `domination:KillFeed` | Recebe o `OtherSource` do abate na zona e credita `PointsKillFeed` ao grupo do atacante. |
| `Disconnect`          | Limpa o estado do jogador (`Active`/presença) ao desconectar.                            |

### Cliente

| Evento               | Descrição                                                                      |
| -------------------- | ------------------------------------------------------------------------------ |
| `domination:Start`   | Inicia a disputa na `Location` recebida (cria blip/zona e thread de captura).  |
| `domination:Finish`  | Encerra a disputa (remove blip/zona, limpa HUD).                               |
| `gameEventTriggered` | Detecta abates (vítima ≤ 100) e dispara `domination:KillFeed` para o servidor. |

***

## Customização

<CardGroup cols={2}>
  <Card title="Zonas" icon="map-pin">
    Crie/edite zonas em `Locations` (vértices via PolyZone, raio em `SurvivalDistance`).
  </Card>

  <Card title="Agendamento" icon="calendar">
    Agende disputas por `Execute` (dia/hora); a thread verifica a cada 30s.
  </Card>

  <Card title="Habilitar grupo" icon="users">
    Marque `Domination = true` no grupo (`vrp/config/Global.lua`).
  </Card>

  <Card title="Ritmo" icon="gauge">
    `DominationGoal`, `PointSeconds`, `PointsKillFeed`, multiplicadores de presença.
  </Card>
</CardGroup>

<Note>
  Sem persistência — o estado fica em memória (`Active`, `Points`, `Multiplier`).
</Note>
