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

# engine

> Sistema de combustível e motor de veículos: consumo dinâmico por RPM, abastecimento em postos (com cobrança e estoque), abastecimento por galão, sincronização em rede e verificação do estado mecânico.

O **engine** controla o combustível e o estado mecânico dos veículos. Ao entrar no veículo, define o combustível em `100.0` (se não existir) e desativa o hotwire. Uma thread reduz o combustível conforme o RPM (tabela `Consume`); ao zerar, o motor desliga. O abastecimento em posto abre a NUI da bomba, cobra por litro e debita estoque do posto. Há também abastecimento por galão (consome munição de galão). O combustível é sincronizado via statebag `Fuel` da entidade.

## Funcionalidades

<CardGroup cols={2}>
  <Card title="Consumo Dinâmico" icon="gauge-high">
    O combustível cai conforme o RPM do veículo, usando a tabela `Consume`; o motor desliga ao zerar.
  </Card>

  <Card title="Abastecimento em Posto" icon="gas-pump">
    NUI da bomba que cobra por litro, debita o estoque do posto e credita o caixa do grupo dono.
  </Card>

  <Card title="Abastecimento por Galão" icon="jug-detergent">
    Reabastece o veículo consumindo munição de galão de gasolina (hash `883325847`).
  </Card>

  <Card title="Sincronização em Rede" icon="arrows-rotate">
    O combustível é mantido no statebag `Fuel` da entidade, sincronizado entre todos os jogadores.
  </Card>

  <Card title="Verificação Mecânica" icon="screwdriver-wrench">
    Menu de verificação do estado mecânico do veículo via recurso `dynamic`.
  </Card>
</CardGroup>

***

## Dependências

<CardGroup cols={2}>
  <Card title="vrp" icon="cube">Framework base.</Card>
  <Card title="PolyZone" icon="draw-polygon">Zonas e áreas.</Card>
  <Card title="oxmysql" icon="database">Persistência de dados.</Card>
  <Card title="fuelstations" icon="gas-pump">Estoque do posto (`UpdateStock`, `FuelStock`).</Card>
  <Card title="dynamic" icon="screwdriver-wrench">Menu de verificação mecânica.</Card>
  <Card title="hud" icon="display">Integração `hud:Active`.</Card>
</CardGroup>

***

## Configuração

<AccordionGroup>
  <Accordion title="client-side/core.lua — valores no código" icon="sliders">
    Sem pasta `config/`: os valores ficam direto no código.

    ```lua theme={null}
    PriceLitterDefault = 5.0   -- preço/litro padrão (posto pode ter o próprio)
    -- combustível inicial: 100.0; tanque cheio: > 99.980
    -- classes sem consumo: 13 (bikes), 14 (barcos)
    -- Consume[RPM] (arredondado a 0.1) * 0.1 = gasto por tick
    -- incremento por tick de abastecimento: +0.01
    -- hash do galão de gasolina: 883325847
    ```
  </Accordion>
</AccordionGroup>

***

## Comandos

Nenhum.

***

## Exports

Não declara exports próprios. Interface Tunnel `engine`:

```lua theme={null}
Core.RechargeFuel(Price, Permission, Fuel)
-- cobra, debita estoque do posto, credita o banco do grupo
```

***

## Eventos

`Tunnel.bindInterface("engine", Core)` no servidor (interface `engine` com `RechargeFuel`).

| Evento                           | Lado     | Descrição                                                                                     |
| -------------------------------- | -------- | --------------------------------------------------------------------------------------------- |
| `engine:SyncFuel(Network, Fuel)` | Servidor | Grava o combustível no statebag `Fuel` da entidade.                                           |
| `gameEventTriggered`             | Cliente  | Ao entrar no veículo, inicializa o combustível (`100.0` se inexistente) e desativa o hotwire. |
| `engine:FuelAdmin`               | Cliente  | Reabastece o veículo para 100 (uso admin).                                                    |
| `engine:Supply(Entitys)`         | Cliente  | Inicia o abastecimento na bomba (disparado por `fuelstations`).                               |
| `engine:Vehrify(Entitys)`        | Cliente  | Abre o menu de verificação do estado mecânico.                                                |

***

## Banco de Dados

Lê `fuelstations_creative` (`Name`, `Stock` por `Permission`). Escrita de estoque via `exports.fuelstations:UpdateStock`.

***

## Customização

* **Consumo:** tabela `Consume` (por faixa de RPM).
* **Preço/litro padrão:** `PriceLitterDefault` (posto sobrescreve via `FuelPrice`).
* **Velocidade/custo de abastecimento:** incremento `+0.01` e `Price += PriceLitter/100` por tick.
* **Classes sem consumo:** condição `Class ~= 13 and Class ~= 14`.
* **Galão:** hash `883325847`.
