> For the complete documentation index, see [llms.txt](https://docs.sonoransoftware.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sonoransoftware.com/store/dashcam/vehicle-setup.md).

# Vehicle Setup

Choose which emergency, department, fleet, and inventory-equipped vehicles can use Dashcam.

A player must be the driver of an eligible, networked vehicle before a recording can start. Vehicle eligibility and recording permissions are separate: the vehicle must pass this policy, and the driver must also have dashcam.record through ACE or a configured framework job grade.

## Shipped eligibility

The default vehicle policy accepts a vehicle when at least one configured condition matches:

* The vehicle is in FiveM emergency class 18 and allowEmergencyClass is enabled
* Its model appears in models; police is included by default
* Its plate appears in plates
* Its model appears in civilianFleetModels
* Its plate appears in fleetPlates
* The driver's framework job appears in jobs; police, sheriff, ambulance, and fire are included by default
* A configured inventory bridge confirms the driver has the dashcam item

The plate and civilian-fleet lists are empty by default. The inventory item name is configured, but the shipped inventory bridge does not grant eligibility until it is connected to your inventory system.

## Configure your fleet

Edit eventsDashcam/config/vehicles.lua. The shipped structure is:

```lua
Config.Vehicles = {
    allowEmergencyClass = true,
    models = { 'police' },
    plates = {},
    jobs = {
        police = true,
        sheriff = true,
        ambulance = true,
        fire = true
    },
    civilianFleetModels = {},
    fleetPlates = {},
    inventoryItem = 'dashcam'
}
```

Use vehicle spawn names in the model lists. Plate matching ignores leading and trailing spaces and is not case-sensitive. Keep plate entries specific enough that they do not unintentionally authorize unrelated vehicles.

## Example custom fleet

```lua
Config.Vehicles.allowEmergencyClass = false
Config.Vehicles.models = { 'police', 'police2', 'ambulance' }
Config.Vehicles.plates = { 'LSPD101', 'EMS12' }
Config.Vehicles.jobs = {
    police = true,
    sheriff = true,
    ambulance = true
}
Config.Vehicles.civilianFleetModels = { 'speedo' }
Config.Vehicles.fleetPlates = { 'MOBILE1' }
```

This example requires an explicit model, plate, fleet entry, or configured job instead of accepting every emergency-class vehicle.

## Framework jobs

Job eligibility requires Events Core to be configured for ESX, QBCore, Qbox, or supported automatic detection. The player must be on duty when the framework reports duty state. Job action grades are configured separately in eventsDashcam/config/permissions.lua.

## Test the policy

After restarting both resources:

1. Enter an allowed vehicle as the driver and start a recording.
2. Enter the same vehicle as a passenger and confirm recording is denied.
3. Test an unlisted non-emergency vehicle and confirm it is denied.
4. Test every custom job, model, or plate entry you added.
5. Change vehicles while recording and confirm the new vehicle must pass eligibility again.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.sonoransoftware.com/store/dashcam/vehicle-setup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
