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

# securitycam

> Sistema de câmeras de segurança (CCTV): visualização via câmera scriptada, rotação pelo mouse e desativação por minigame de hacking.

O **securitycam** disponibiliza um terminal de câmeras de segurança acessível por zonas `ox_target`. Ao abrir, lista os objetos de câmera registrados (objetos com `Mode == "Camera"`, recebidos via eventos `objects:*`) num menu `dynamic`. Ao selecionar uma câmera, cria uma `CreateCam` nas coordenadas dela, aplica o filtro `scanline_cam_cheap` e permite rotacionar (±90° yaw, -45°/0° pitch a partir do heading).

## Funcionalidades

<CardGroup cols={2}>
  <Card title="Visualização por Câmera" icon="video">
    Cria uma câmera scriptada nas coordenadas do objeto selecionado, com filtro CCTV `scanline_cam_cheap`.
  </Card>

  <Card title="Rotação pelo Mouse" icon="arrows-up-down-left-right">
    Controle a câmera com o mouse dentro dos limites de ±90° yaw e -45°/0° pitch a partir do heading.
  </Card>

  <Card title="Terminal Padrão" icon="desktop">
    Acesso via `Abrir`, exigindo `CheckPolice()` para liberar o terminal.
  </Card>

  <Card title="Terminal Hacker" icon="user-secret">
    Acesso `Hackear`/`Desativar` que exige o item `tablet_hacker` e a conclusão do minigame `lettergame`.
  </Card>
</CardGroup>

<Info>
  As câmeras em si são registradas em runtime pelos eventos `objects:*` — não ficam em `Locations`.
</Info>

***

## Dependências

<CardGroup cols={2}>
  <Card title="vrp" icon="cubes">`ConsultItem`, `TakeItem`.</Card>
  <Card title="ox_target" icon="crosshairs">Zonas dos terminais.</Card>
  <Card title="lettergame" icon="keyboard">`LetterGame` (minigame de hacking).</Card>
  <Card title="dynamic" icon="bars">Menu de câmeras.</Card>
</CardGroup>

<Info>
  Eventos utilizados: `Notify`, `hud:Active`, `objects:Table`/`Adicionar`/`Remover`, helper `CheckPolice()`.
</Info>

***

## Configuração

Configurações em `shared-side/shared.lua`.

| Variável         | Padrão            | Descrição                                                   |
| ---------------- | ----------------- | ----------------------------------------------------------- |
| `LetterSpeed`    | `5`               | Velocidade do `lettergame`.                                 |
| `LetterDuration` | `60`              | Duração do `lettergame`.                                    |
| `HackerDuration` | `5`               | Cooldown (min) do acesso Hacker.                            |
| `InativeMinutes` | `30`              | Tempo (min) que o sistema fica desativado após `Desativar`. |
| `HackerItem`     | `"tablet_hacker"` | Item consumido para hackear/desativar.                      |

<Info>
  `Locations` define os pontos de acesso: `Coords`, `Distance` (raio); `Hacker = true` marca o terminal de hacking.
</Info>

***

## Eventos

A interface `securitycam` (servidor) é exposta via `Tunnel.bindInterface`.

### Cliente

| Evento                 | Descrição                                                         |
| ---------------------- | ----------------------------------------------------------------- |
| `securitycam:Open`     | Abre o menu de câmeras pelo índice do terminal.                   |
| `securitycam:Selected` | Seleciona uma câmera e cria a `CreateCam`.                        |
| `securitycam:Destroy`  | Destroi a câmera ativa e restaura a visão.                        |
| `securitycam:Inative`  | Marca o sistema como desativado (após `Desativar`).               |
| `objects:Table`        | Recebe a tabela completa de objetos (câmeras `Mode == "Camera"`). |
| `objects:Adicionar`    | Registra um objeto/câmera em runtime.                             |
| `objects:Remover`      | Remove um objeto/câmera registrado.                               |

***

## Customização

* **Terminais:** tabela `Locations`.
* **Dificuldade/cooldown:** `LetterSpeed`, `LetterDuration`, `HackerDuration`, `HackerItem`, `InativeMinutes`.
* **Sensibilidade/limites:** `MouseSpeed` e clamps de pitch/yaw em `client-side/core.lua`.
* **Filtro/FOV:** `SetTimecycleModifier("scanline_cam_cheap")` e `SetCamFov` em `securitycam:Selected`.
