Skip to main content
All configuration lives in the config/ folder. Each file covers one area, so you only edit what you need:
FileWhat it controls
config/main.luaBrand, framework, job gates, contract economy, repair pricing
config/locations.luaDepot locations, garage and trailer spawn slots, delivery points
config/cargo.luaThe full list of loads and their ADR / fragile / valuable / illegal flags
config/dealership.luaTrucks for sale, prices, stats, images, level requirements
config/leveling.luaXP curve, distance caps, per-tier money and XP bonuses
config/drivers.luaNPC driver pool, hire costs, profit rates, fuel consumption
config/loans.luaLoan plans, interest, repayment period, level-based limits
config/party.luaCrew pricing, member caps, delivery bonuses

config/main.lua

Brand

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

Config.Framework = 'auto'   -- 'auto' | 'esx' | 'qb' | 'qbox'
Config.Account   = 'bank'   -- framework account used for deposits/withdrawals

Integrations

Config.UseOxTarget    = false   -- false = marker + keypress fallback
Config.UseOxInventory = true    -- reserved for future cargo items
Config.UseOxLibNotify = true    -- ox_lib notifications
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.

Job gates

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

Feature toggles

Config.DisableLoans   = false
Config.DisableDrivers = false   -- also hides the Recruit and My Drivers pages
Config.CreateTables   = true    -- run SQL bootstrap at start

Contracts

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

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

config/cargo.lua

Every load is one line: trailer model, display name, ADR class, and fragile / valuable / illegal flags.
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

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.
Only ever increase Config.RequiredXP values on a live server. Decreasing them causes players to skip skill point grants.

config/drivers.lua

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

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.

config/party.lua

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.