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

# lettergame

> Minigame de habilidade (carrossel de letras/números) usado por outros recursos como verificação de sucesso para hacks, lockpicks e ações similares.

O **lettergame** é um minigame de NUI no qual o jogador pressiona a tecla do caractere que está passando pelo centro do carrossel no momento certo. A função é **bloqueante**: abre a UI, prende o foco e retorna `true`/`false`.

Regras (na `web-side`): cada acerto = 1 ponto; **5 acertos = vitória** (`true`); **2 erros = derrota**, assim como o **tempo (`Duration`) chegar a 0** (`false`). Conjunto de caracteres: `A-Z` e `0-9`. Recurso client-side puro, sem servidor, banco ou persistência.

## Funcionalidades

<CardGroup cols={2}>
  <Card title="Minigame de habilidade" icon="gamepad">
    Carrossel de letras e números (`A-Z`, `0-9`) com janela de acerto no centro.
  </Card>

  <Card title="Chamada bloqueante" icon="hourglass-half">
    Abre a UI, prende o foco e retorna `true`/`false` ao concluir.
  </Card>

  <Card title="Verificação de sucesso" icon="circle-check">
    Usado por outros recursos como gate para hacks, lockpicks e ações similares.
  </Card>

  <Card title="Parâmetros ajustáveis" icon="sliders">
    `Duration` e `Speed` controlam o tempo e a velocidade do carrossel.
  </Card>
</CardGroup>

***

## Dependências

<CardGroup cols={2}>
  <Card title="vrp" icon="layer-group">
    Apenas `lib/Tunnel`.
  </Card>
</CardGroup>

***

## Exports

Chame o minigame via export, recebendo um `boolean` de sucesso:

```lua theme={null}
-- Duration (s, padrão 60) | Speed (velocidade, padrão 5)
local sucesso = exports.lettergame:LetterGame(Duration, Speed) -- boolean
```

Também via Tunnel `lettergame`:

```lua theme={null}
local lettergame = Tunnel.getInterface("lettergame")
local sucesso = lettergame.LetterGame(Duration, Speed)
```

<Info>
  Exemplos reais de uso: [securitycam](/base-five/scripts/securitycam), [propertys](/base-five/scripts/propertys)/`vRP.LetterGame`.
</Info>

***

## Eventos

`Tunnel.bindInterface("lettergame", Core)` no cliente (interface `lettergame` com `LetterGame`). A NUI é aberta com `SendNUIMessage({Action="Open", Payload={Duration, "Jogo das Letras", "Acerte a combinação das letras.", Speed}})`.

| Evento    | Lado | Descrição                                              |
| --------- | ---- | ------------------------------------------------------ |
| `Success` | NUI  | Acerto suficiente: resolve o minigame como `true`.     |
| `Failure` | NUI  | Erros/tempo esgotado: resolve o minigame como `false`. |

***

## Customização

* **`Duration`/`Speed`:** argumentos do export (padrões `60`/`5`).
* **Título/subtítulo:** fixos no `Payload` (`client-side/core.lua`).
* **Regras (5 acertos / 2 erros), charset e sons:** na `web-side`.
