> ## Documentation Index
> Fetch the complete documentation index at: https://rust-co.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Enforcer

> O camburão da polícia: sirene, quatro bancos de presos e a API para police jobs.

O RCO Enforcer é um camburão preto da polícia com um baú de presos atrás. Ele é vendido na concessionária do RCO Vehicles como todo veículo RCO (veja a [Visão geral](https://rust-co.mintlify.site/pt-BR/rco-vehicles/overview.md)).

## Bancos

Seis bancos: o motorista, um passageiro na frente e quatro presos no baú, em dois bancos de frente um para o outro.

Atrás do camburão há um prompt só para o baú. Cada jogador que aperta ganha o próximo banco livre, da cabine para as portas, e sobe pelas duas portas de trás. Banco ocupado nunca é oferecido.

## Sirene

O motorista aperta **G** para ligar a sirene e **G** de novo para desligar. Ela usa a tecla da buzina: o Enforcer não tem buzina. O rotor gira, a lâmpada vermelha acende e todos por perto ouvem. A sirene desliga quando o motorista sai.

No `config/config.lua` do Enforcer:

| Opção | O que faz | Padrão |
| - | - | - |
| `Config.Sound.Volume` | Volume do camburão inteiro (0 a 1) | `0.5` |
| `Config.Sound.Effects.siren` | Volume da sirene (0 a 1) | `0.5` |
| `Config.Sound.SirenRange` | Até onde a sirene é ouvida, em metros | `160.0` |

## API para police jobs

O seu police job pode pôr um jogador no baú: algemado ele não anda, então a própria animação do camburão o leva de trás do carro até o banco. Os exports rodam no **cliente do preso**. O seu job decide no servidor dele quem pode prender quem (cargo, distância, algemas); o Enforcer confia nessa conferência.

| Export (client) | O que faz | Devolve |
| - | - | - |
| `PutInBack(vehicle, held)` | Põe este jogador no próximo banco de preso livre. `vehicle` é a entidade ou o network id do camburão; sem ele, vale o Enforcer cuja traseira está a até 6 m. `held` (padrão `true`): ele não sai sozinho. | O banco (`1` a `4`), ou `false` se estiver cheio, longe ou capotado |
| `TakeOutOfBack()` | Solta este jogador; ele desce pelas portas de trás. | `true` se ele estava num banco de preso |
| `IsHeldInBack()` | Se este jogador está preso no baú. | `true` / `false` |

```lua theme={"dark"}
-- cliente do policial: o Enforcer que ele escolheu
TriggerServerEvent('myjob:server:putInEnforcer', targetId, NetworkGetNetworkIdFromEntity(enforcer))

-- servidor (seu police job): confira o policial, a distância e as algemas, depois
RegisterNetEvent('myjob:server:putInEnforcer', function(targetId, netId)
    TriggerClientEvent('myjob:client:putInEnforcer', targetId, netId)
end)

-- cliente do preso
RegisterNetEvent('myjob:client:putInEnforcer', function(netId)
    local seat = exports['rco-enforcer']:PutInBack(netId) -- sem network id: o Enforcer cuja traseira está a até 6 m
    if not seat then
        -- sem banco: o Enforcer está cheio ou longe
    end
end)

RegisterNetEvent('myjob:client:takeOutOfEnforcer', function()
    exports['rco-enforcer']:TakeOutOfBack()
end)
```

> [!NOTE]
>
> `PutInBack` para a animação atual do jogador (a pose de algemado) para tocar a de subir. Reaplique a pose de algemado depois, se o seu job usa uma. O trinco do camburão não impede o export. O preso ainda sai do baú se morrer ou se o camburão for guardado.

> [!TIP]
>
> No pacote **RCO Cars** todos os carros ficam num recurso só: chame `exports['rco-cars']:PutInBack(...)`.


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