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

# taximeter

> Taxímetro para motoristas de táxi: calcula a tarifa da corrida com base na distância percorrida, na tarifa selecionada e em valores extras, exibindo num visor NUI.

O **taximeter** é um taxímetro para motoristas de táxi. Ao entrar num veículo de táxi, o motorista vê um visor (NUI) que calcula a tarifa da corrida com base na distância percorrida, na tarifa selecionada e em valores extras. O fluxo é controlado por *decors* aplicados ao veículo.

## Funcionalidades

<CardGroup cols={2}>
  <Card title="Visor automático" icon="gauge">
    Ao entrar num veículo de táxi, o motorista vê o visor NUI com o cálculo da corrida.
  </Card>

  <Card title="Cálculo por distância" icon="route">
    `preço = distância * Tariffs[tarifa-1] + extras`, com a distância medida em metros.
  </Card>

  <Card title="Tarifas e extras" icon="money-bill">
    O motorista escolhe a tarifa e adiciona/remove extras em passos de `ExtraPrice`.
  </Card>

  <Card title="Reset rápido" icon="rotate-left">
    O Reset zera distância e extras, e a tarifa volta para 1.
  </Card>
</CardGroup>

***

## Fluxo

<Steps>
  <Step title="Detecção">
    Uma thread (1s) verifica se o ped está num veículo cujo archetype está em `Vehicles`. Se sim, ativa o visor (`Display`); se for o condutor (banco -1), o modo motorista (`Driver`).
  </Step>

  <Step title="Início / Parada">
    **Start** marca `StarterDecor = true` e zera as coordenadas de referência; **Stop** marca `false`. Ligado, a cada movimento a distância (`DistanceDecor`) recebe `#(Coords - LastCoords)` (metros).
  </Step>

  <Step title="Cálculo">
    Na NUI, `preço = distância * Tariffs[tarifa-1] + extras`, onde `extras` é o `ExtraDecor`.
  </Step>

  <Step title="Tarifa / Extras / Reset">
    O motorista escolhe a tarifa (`TariffDecor`), adiciona/remove extras em passos de `ExtraPrice`, e o **Reset** zera tudo (tarifa volta a 1).
  </Step>
</Steps>

***

## Dependências

<Info>
  Nenhuma. Recurso autocontido (não depende do vRP).
</Info>

***

## Configuração

<AccordionGroup>
  <Accordion title="shared-side/shared.lua — tarifas e veículos" icon="sliders">
    | Variável     | Padrão                           | Descrição                                 |
    | ------------ | -------------------------------- | ----------------------------------------- |
    | `ExtraPrice` | `1.0`                            | Valor de cada passo de extra.             |
    | `Vehicles`   | `{ "taxi","taxi2" }`             | Models reconhecidos como táxi.            |
    | `Tariffs`    | `{ 0.050, 0.075, 0.100, 0.200 }` | Tarifas (preço por unidade de distância). |
  </Accordion>
</AccordionGroup>

***

## Comandos

| Comando      | Descrição                                                                                    |
| ------------ | -------------------------------------------------------------------------------------------- |
| `+Taximeter` | Alterna foco/cursor da interface (só motorista). Keybind padrão `F3` (`RegisterKeyMapping`). |

***

## Eventos

Não registra eventos de rede próprios. A comunicação ocorre via NUI Callbacks.

### NUI Callbacks

| Callback | Descrição                                                                 |
| -------- | ------------------------------------------------------------------------- |
| `Config` | Recebe a configuração inicial do visor (tarifas/extras).                  |
| `Extras` | Adiciona/remove valor extra em passos de `ExtraPrice` (`ExtraDecor`).     |
| `Start`  | Inicia a corrida (`StarterDecor = true`, zera coordenadas de referência). |
| `Stop`   | Para a corrida (`StarterDecor = false`).                                  |
| `Tariff` | Seleciona a tarifa ativa (`TariffDecor`).                                 |
| `Reset`  | Zera distância/extras e volta a tarifa para 1.                            |

***

## Customização

* **Veículos:** `Vehicles`.
* **Tarifas/extras:** `Tariffs`, `ExtraPrice`.
* **Tecla:** reconfigurável nas configurações de teclado do FiveM.

<Tip>
  Para adicionar um novo model de táxi, basta incluí-lo na lista `Vehicles`.
</Tip>
