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

> Conjunto de comportamentos de veículos (cliente/servidor): driveby, luz de passageiro, anti-bump, remoção de props atingidos, estouros no escapamento (Pops & Bangs) e limitador de velocidade.

O **five-vehsystem** reúne módulos voltados à experiência de direção, cada um controlado por uma flag no `Config`.

## Funcionalidades

<CardGroup cols={2}>
  <Card title="DriveBy" icon="gun">
    Atirar de dentro de carros/helicópteros, com exceções por veículo e arma.
  </Card>

  <Card title="Passenger Lite" icon="user">
    Zera o multiplicador global de massa de passageiros.
  </Card>

  <Card title="Anti Bump" icon="car-burst">
    Reduz o "pulo" do veículo em colisões.
  </Card>

  <Card title="Del Props" icon="trash">
    Deleta props do cenário atingidos por veículos.
  </Card>

  <Card title="Pops & Bangs (PNB)" icon="fire">
    Estouros no escapamento (visual + som), sincronizados por placa via state-bag.
  </Card>

  <Card title="Speed Limiter" icon="gauge-high">
    Limita a velocidade por classe e/ou modelo.
  </Card>
</CardGroup>

<Note>
  Recurso **autocontido**: não usa vRP, oxmysql nem banco. Estado em memória/state-bags.
</Note>

***

## Dependências

<Info>
  Nenhuma declarada. Usa apenas natives do FiveM/GTA V.
</Info>

***

## Configuração

<AccordionGroup>
  <Accordion title="shared-side/config.lua — Flags principais" icon="sliders">
    ```lua theme={null}
    Config.EnableDriveBy = true
    Config.EnableHeliDriveBy = true
    Config.EnablePassengerLite = true
    Config.EnableAntiBump = true
    Config.EnableDelProps = true
    Config.EnablePnb = true
    Config.EnableSpeedLimiter = false   -- desligado por padrão
    ```
  </Accordion>

  <Accordion title="DriveBy" icon="gun">
    ```lua theme={null}
    Config.BypassDriveBy = { "scorcher", "bmx" }   -- SEMPRE podem atirar
    Config.NotDriveBy = { }                          -- NUNCA podem atirar
    Config.DriveByExtraWeapons = { "WEAPON_ACIDPACKAGE" }  -- armas liberadas mesmo com driveby off
    ```
  </Accordion>

  <Accordion title="Anti Bump / Passenger Lite" icon="car-burst">
    ```lua theme={null}
    Config.AntiBump = { TimeThread = 1000 }          -- intervalo de verificação (ms)
    Config.PassengerLite = { WaitTime = 2000 }       -- intervalo (ms)
    ```
  </Accordion>

  <Accordion title="Del Props" icon="trash">
    ```lua theme={null}
    Config.DelProps = {
        TimeToRemove = 50,        -- ms até o prop sumir após ser atingido
        PropsToRemove = { "1097506217", "1234073471", ... },  -- hashes (string) de postes/lixeiras/cones/etc.
    }
    ```
  </Accordion>

  <Accordion title="Pops & Bangs (PNB)" icon="fire">
    ```lua theme={null}
    Config.Pnb = {
        pnbMode = true, pnbCmd = "pnb",       -- comando de instalar
        enableAllVehicles = false,            -- true = todos já vêm com estouro
        electricModels = { tezeract = true, ... },  -- elétricos sem estouro
        blockedClasses = { [10]=true, [11]=true, ... },
        soundMaxDist = 100.0, minSpeedKmh = 50, chancePerPop = 1.0,
        Handbrake = { enabled = true, ... },
        tick = { idle = 300, driver_installed = 55, ... },  -- intervalos por situação
    }
    ```
  </Accordion>

  <Accordion title="Speed Limiter" icon="gauge-high">
    ```lua theme={null}
    Config.SpeedLimiter = {
        SpeedUnit = "kmh", MaxSpeed = 300.0, LimitGlobal = true,
        ClassesForbiddenGlobal = { [15]=true, [16]=true, [19]=true },  -- helis/aviões/militares sem limite
        LimitedClasses = { }, CustomClasses = { }, LimitedModels = { },
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Comandos

O recurso registra apenas um comando de chat (somente com `EnablePnb` e `pnbMode`).

| Comando          | Permissão                                                                                 | Descrição                                                                                                                                    |
| ---------------- | ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `/pnb [on\|off]` | Nenhuma (precisa ser o motorista; bloqueado para elétricos e classes em `blockedClasses`) | Instala/remove o estouro no escapamento no veículo atual por placa (nome em `Config.Pnb.pnbCmd`; só registrado com `EnablePnb` e `pnbMode`). |

***

## Localizações

Não possui pontos fixos no mapa. Todos os módulos (driveby, anti-bump, del props, PNB, limitador) atuam de forma global sobre os veículos onde o jogador está; o config não define peds, blips, lojas, garagens nem zonas com coordenadas.

***

## Exports

**Server** (só com `EnablePnb`): `SetAllInstalled`, `AddInstalled`, `RemoveInstalled`, `InstallByPlate`, `RemoveByPlate`, `IsInstalled`, `GetAllInstalled`, `InstallCurrentVehicle`, `RemoveCurrentVehicle`, `RenameInstalledPlate`, `IsPnbInstalled`.

**Client:** `InstallPopsAndBangs(vehicle)`, `RemovePopsAndBangs(vehicle)`, `IsPnbInstalled(vehicle)` (só `EnablePnb`); `ToggleNitro(enabled)` (só `EnableSpeedLimiter`).

***

## Banco de Dados

<Note>
  Nenhum. Estado em memória (`installedPlates`) e state-bag `Entity(vehicle).state.pnb_installed` (não persiste entre restarts). Um recurso externo pode repovoar via `SetAllInstalled`.
</Note>

***

## Customização

* **Ligar/desligar módulos:** flags `Config.Enable*`.
* **DriveBy:** `BypassDriveBy`, `NotDriveBy`, `DriveByExtraWeapons`.
* **Del Props:** hashes em `PropsToRemove` + `TimeToRemove`.
* **PNB:** `enableAllVehicles`, `electricModels`, `blockedClasses`, `tick`, `Handbrake`.
* **Speed Limiter:** ative com `EnableSpeedLimiter` e configure `MaxSpeed`/`LimitedClasses`/`LimitedModels`/`CustomClasses`.
