> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nexdevelopment.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> All configuration lives in the config/ folder. Each file covers one area, so you only edit what you need.

All configuration lives in the `config/` folder. Each file covers one area, so you only edit what you need:

| File                    | What it controls                                                          |
| ----------------------- | ------------------------------------------------------------------------- |
| `config/main.lua`       | Brand, framework, job gates, contract economy, repair pricing             |
| `config/locations.lua`  | Depot locations, garage and trailer spawn slots, delivery points          |
| `config/cargo.lua`      | The full list of loads and their ADR / fragile / valuable / illegal flags |
| `config/dealership.lua` | Trucks for sale, prices, stats, images, level requirements                |
| `config/leveling.lua`   | XP curve, distance caps, per-tier money and XP bonuses                    |
| `config/drivers.lua`    | NPC driver pool, hire costs, profit rates, fuel consumption               |
| `config/loans.lua`      | Loan plans, interest, repayment period, level-based limits                |
| `config/party.lua`      | Crew pricing, member caps, delivery bonuses                               |

## config/main.lua

### Brand

```lua theme={null}
Config.Brand = {
    name    = 'NEX Trucking',
    short   = 'Trucking',
    tagline = 'Logistics. Power. Profit.',
    primary = '#ffffff',   -- UI accent color; any hex works
    danger  = '#ff5d5d',
    logo    = 'https://...' -- HTTPS image URL; nil/'' = text tile
}
```

`primary` recolors the whole UI (chips, buttons, glow, gradients) and the depot markers. Dark hues are automatically lifted to stay readable on the dark backdrop.

### Framework and account

```lua theme={null}
Config.Framework = 'auto'   -- 'auto' | 'esx' | 'qb' | 'qbox'
Config.Account   = 'bank'   -- framework account used for deposits/withdrawals
```

### Integrations

```lua theme={null}
Config.UseOxTarget    = false   -- false = marker + keypress fallback
Config.UseOxInventory = true    -- reserved for future cargo items
Config.UseOxLibNotify = true    -- ox_lib notifications
```

<Info>
  `Config.UseOxTarget` is `false` by default. Set it to `true` (and run `ox_target`) to get target zones on the depot and trailers instead of markers.
</Info>

### Job gates

```lua theme={null}
Config.AllowedJobs = {  }             -- empty = anyone can open the dashboard
Config.PoliceJobs  = { 'police' }     -- jobs allowed to inspect trailers
```

### Feature toggles

```lua theme={null}
Config.DisableLoans   = false
Config.DisableDrivers = false   -- also hides the Recruit and My Drivers pages
Config.CreateTables   = true    -- run SQL bootstrap at start
```

### Contracts

```lua theme={null}
Config.Contracts = {
    cancelKey           = 167,   -- F6 (hold 2s to cancel a delivery)
    inspectCargoSeconds = 5,     -- police inspection duration

    generation = {
        cooldownMinutes = 5,     -- generator interval
        perInterval     = 5,     -- contracts per track per interval
        maxActive       = 30,    -- cap per track; oldest are pruned
        maxIllegal      = 5,     -- cap on illegal contracts per track
    },

    economy = {
        pricePerKm = { min = 150, max = 350 },
        multipliers = {
            freight = 1.2,       -- applied to freight contracts
            illegal = 1.8,       -- applied to illegal cargo
        },
    },

    urgent = {
        chancePercent    = 10,   -- chance a contract is flagged urgent
        secondsPerKm     = 90,   -- time budget per kilometre
        rewardPenaltyPct = 20,   -- bonus penalty when late
    },

    fragile = {
        minHealthPercent = 70,   -- trailer health floor
        rewardPenaltyPct = 20,   -- bonus penalty below the floor
    },

    rental = {
        availableTrucks = { 'hauler', 'packer', 'blacktop', 'brickades', 'vetirs' },
        mustReturnTruck = true,
    },
}
```

### Selling, repairs, and logging

```lua theme={null}
Config.SellPriceMultiplier = 0.7   -- trucks sell for 70% of purchase price

Config.RepairPrice = {             -- cost per 1% damage per part
    engine       = 75,
    body         = 40,
    transmission = 50,
    wheels       = 25,
    fuel         = 5,              -- cost per 1% of missing fuel
}

Config.WebhookURL = ''             -- Discord webhook for logs ('' = disabled)
```

## config/locations.lua

`Config.TruckerLocations` ships with one depot (`main_depot`) at the LSIA freight yard. Each depot needs a `menu` point (where the dashboard opens), `garage` slots (truck spawns), `trailer` slots, and a `blip` (default sprite `478`, color `25`, scale `0.7`). Copy the block to add more depots.

`Config.DeliveryLocations` is a single shared pool of 170+ `vector4` drop-off points across Los Santos and Blaine County. The contract generator picks from this list at random — add or remove entries freely.

<Warning>
  Crew deliveries spawn one truck and trailer per member, so a depot can only host crews up to the smaller of its garage and trailer slot counts (5 with the default depot).
</Warning>

## config/cargo.lua

Every load is one line: trailer model, display name, ADR class, and fragile / valuable / illegal flags.

```lua theme={null}
load('tanker2',     'Kerosene',        3, 0, 0, 0),
load('docktrailer', 'Smuggled ivory',  0, 1, 1, 1),
```

ADR classes: `0` none, `1` explosives, `2` flammable gas, `3` flammable liquid, `4` flammable solid, `5` toxic, `6` corrosive. A player needs an ADR Certification skill level at or above the cargo's class to take the job.

## config/dealership.lua

Nine trucks keyed by spawn name. Each entry sets `label`, `price`, displayed `engine` / `transmission` / `hp` specs, `image`, `driverBonus` (extra % earnings when assigned to an NPC driver), and `requiredLevel`. The default range runs from the `vetirs` (`price = 25000`, `requiredLevel = 0`) to the `phantom3` (`price = 180000`, `requiredLevel = 30`).

## config/leveling.lua

```lua theme={null}
Config.DistanceSkill = {           -- max delivery distance (km) per Range level
    [0] = 6, [1] = 6.5, [2] = 7, [3] = 7.5, [4] = 8, [5] = 8.5, [6] = 99,
}

Config.RequiredXP = { [1] = 1000, --[[ ... ]] [36] = 100000 }

Config.ExpGain = 2.0               -- XP per km as % of metres (2 km = 40 XP)
```

`Config.Bonus` defines per-tier money and XP bonuses for the `distance`, `valuable`, `fragile`, `fast`, and `illegal` skills — money bonuses run 2–12% across tiers 1–6 by default.

<Warning>
  Only ever *increase* `Config.RequiredXP` values on a live server. Decreasing them causes players to skip skill point grants.
</Warning>

## config/drivers.lua

```lua theme={null}
Config.Drivers = {
    cooldownMinutes = 20,        -- a new hireable driver spawns every 20 min
    maxActive       = 20,        -- max unhired drivers at once
    maxPerLevel     = { [0] = 1, [10] = 2, [20] = 3, [30] = 4 },
    hiringCost      = { min = 50, max = 100, percentPerSkill = 25 },
}

Config.DriverJobs = {
    cooldownMinutes  = 30,       -- profit cycle interval
    fuelConsumption  = { min = 2, max = 8 },
    profit           = { min = 200, max = 350, percentPerSkill = 15 },
    earnWhileOffline = false,    -- true = owners earn even while offline
}
```

## config/loans.lua

```lua theme={null}
Config.MaxLoanPerLevel = { [0] = 40000, [10] = 100000, [20] = 150000, [30] = 200000 }

Config.Loans = {
    paymentIntervalHours = 24,
    plans = {
        { amount = 20000,  interestPct = 17,   days = 15 },
        { amount = 50000,  interestPct = 22,   days = 20 },
        { amount = 150000, interestPct = 30,   days = 25 },
        { amount = 200000, interestPct = 35.5, days = 20 },
    },
}
```

Loans debit the trucking wallet, not the player's bank. If a daily payment can't be covered, the player goes bankrupt and **all their trucking data is wiped** — see [Player usage](/nex_trucking/usage#loans-and-bankruptcy).

## config/party.lua

```lua theme={null}
Config.Party = {
    createPrice       = 5000,   -- one-time cost to create a crew
    perMemberPrice    = 100,    -- cost per seat
    maxMembers        = 10,
    moneyBonusPercent = 2,      -- bonus money per delivery
    expBonusPercent   = 2,      -- bonus XP per delivery
    onlyLeaderStarts  = true,   -- only the leader can start crew deliveries
}
```

## Locales

Strings live in `locales/*.json` and load through ox\_lib. Pick the language with the `ox:locale` convar — see [Installation](/nex_trucking/installation#language).
