> For the complete documentation index, see [llms.txt](https://otters-developments.gitbook.io/otters-developments/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://otters-developments.gitbook.io/otters-developments/free-resources/rental/configuration.md).

# Configuration

Otters Rentals is configured primarily through `config.lua`. The UI theme can be customised separately through `ui/theme.css`.

## Debug Mode

```lua
config.debug = false
```

Set this to `true` while troubleshooting. Leave it disabled on a live server unless you need additional console information.

## Framework

Select the framework used by your server. The documented supported frameworks are:

* QBCore
* Qbox
* ESX

Where supported, automatic detection can be used.

## Rental Locations

Each location can independently define its NPC, rental type, vehicles, prices, spawn points, return point, cooldown, licence requirement, fuel, blip, marker and refund settings.

Example structure:

```lua
config.locations = {
    ['Example Rental'] = {
        vehicleType = 'automobile',
        rentalCooldown = 300,
        ped = true,
        coords = vec4(0.0, 0.0, 0.0, 0.0),
        vehicles = exampleVehicles,
        vehiclespawncoords = {
            vec4(0.0, 0.0, 0.0, 0.0),
            vec4(0.0, 0.0, 0.0, 0.0),
        },
    }
}
```

### Vehicle Types

Documented values include `auto`, `automobile`, `bike`, `boat`, `heli` and `plane`.

## Vehicles

```lua
local exampleVehicles = {
    {
        model = 'panto',
        label = 'Panto',
        price = 500,
        category = 'Compacts'
    },
}
```

`model` must match the actual FiveM/GTA spawn name. `label` is the display name shown to the player.

## Aircraft Spawn Safety

```lua
config.aircraftSpawnSafety = {
    planeHeightOffset = 1.25,
    freezeTime = 750,
}
```

Increase `planeHeightOffset` slightly if aircraft are touching the runway or being damaged during spawn.

## Rental Cooldown

```lua
rentalCooldown = 300,
```

Cooldowns can be configured independently per rental location. A successful return resets the relevant cooldown.

## Vehicle Returns

```lua
returnVehicle = {
    enabled = true,
    coords = vec4(315.20, -1159.64, 28.29, 5.66),
    returnGroup = 'city_cars',
    returnAtAnyLocation = true,
    maxRefundPercentage = 50,
}
```

Use separate return groups for incompatible vehicle types, such as `city_cars`, `boats`, `helicopters` and `planes`.

## Damage-Based Refunds

Refunds can take engine health and body health into account. The maximum refund percentage is configured per location.

## Return Markers

The documented marker mapping is:

| Marker | Vehicle type |
| ------ | ------------ |
| 33     | Plane        |
| 34     | Helicopter   |
| 35     | Boat         |
| 36     | Car          |
| 37     | Motorbike    |
| 38     | Bicycle      |
| 39     | Truck        |

Keep marker X, Y and Z dimensions equal to avoid stretched markers.

## Licence System

```lua
config.licenses = {
    system = 'none',
    metadataKeys = { 'licences', 'licenses' },
    qbxIdcardItemFallback = true,
    custom = {
        resource = '',
        export = '',
    },
    missingMessage = 'You need a valid {license} to rent from this location.',
}
```

Documented licence systems include `none`, `auto`, `qbx_idcard`, `qbox_metadata`, `qb_metadata`, `esx_license`, `vms_cityhall`, `item` and `custom`.

A location can then require a specific licence:

```lua
license = {
    required = true,
    type = 'driver_car',
    label = 'Car Driving Licence',
}
```

Examples include `driver_car`, `driver_boat`, `driver_helicopter` and `driver_plane`.

## Fuel

```lua
config.fuel = {
    system = 'auto',
    startingFuel = 100.0,
    nativeFallback = true,
}
```

The exported documentation lists support for fuel resources including ox\_fuel, LegacyFuel, ps-fuel, cdn-fuel, qb-fuel, lj-fuel, lc\_fuel, Renewed-Fuel, okokGasStation, rcore\_fuel, qs-fuelstations, ti\_fuel, FRFuel, xFuel, sgx-fuel, esx-sna-fuel, frkn-fuelstationv4, lyre\_fuel and ND\_Fuel.

## Blips

```lua
blip = {
    enable = true,
    sprite = 225,
    color = 3,
    scale = 0.6,
    text = 'Vehicle Rentals'
}
```

## Rental Papers

Rental papers are optional. When enabled, the player can receive rental documentation after renting and the corresponding papers can be removed when the vehicle is successfully returned.

## UI Theme

`ui/theme.css` is intentionally editable so server owners can adjust the appearance without modifying protected runtime logic.


---

# 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 following URL with the `ask` and `goal` query parameters:

```
GET https://otters-developments.gitbook.io/otters-developments/free-resources/rental/configuration.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

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.
