Configuration

Complete configuration reference for shifts, crews, calls, vehicles, flatbeds, visuals, outfits, and protection.

Every setting in oxide-roadsideassistancejob, explained.


How Settings Work

Settings are edited in-game with the /roadside settings command (admins only). Changes save to your database and apply instantly — no restart needed.

The config files in the shared/ folder are factory defaults. The first time the resource starts, every value is imported from the files into the database; from then on, the database is the source of truth and editing the files has no effect on settings that are already stored. Only brand-new settings added by a future update are imported from the files.

A few settings are positions in the world rather than plain numbers:

  • Tow yards, breakdown scenes, and the tow delivery point are edited in /roadside settings under Locations & Events, like everything else. Their coordinate fields have a Place button that hides the menu and lets you drop a live preview (the dispatcher, the truck, or the stranded car) exactly where you want it, and a teleport button that jumps you to the stored spot. Saving applies immediately — dispatcher NPCs and blips move on the spot.

Prefer editing the files? You still can: change the value in the file, restart the server, then open /roadside settings and press the Reset to default arrow on that setting — reset restores whatever the file says.

The tables below document every setting and its factory default.


Config File Map

FileWhat's in it
shared/config.luaMain on/off switches and menu modes
shared/config/job.luaPay, crew, complaints, timers, call frequency
shared/config/levels.luaLevel titles and rewards
shared/config/locations.luaThe tow yard and the shared tow drop-off point
shared/config/events.luaThe list of breakdown scenes players get sent to
shared/config/vehicles.luaThe tow truck
shared/config/flatbed.luaThe flatbed truck, its animated bed, and the winch
shared/config/props.luaTools, animations, and attachment positions
shared/config/visuals.luaMap blips, NPCs, cones, traffic zones, effects
shared/config/outfits.luaOptional work uniforms
shared/config/tutorials.luaFirst-time player hints

General Settings

File: shared/config.lua

SettingDefaultWhat it does
Config.usePhonetrueSends service messages and pay summaries to the player's phone as emails. Set to false if your server's phone isn't supported — players get notifications instead
Config.shiftSummary'text'How the end-of-shift pay breakdown is shown: 'text' (phone email / notification) or 'nui' (on-screen pop-up)
Config.menuStyle'nui'The shift menu style: 'nui' (full custom menu) or 'menu' (simple text menu)
Config.MaxSlotsPerLocation3How many players can be clocked in at one tow yard at the same time

Note: the 'nui' pop-up summary only works when Config.menuStyle is not 'menu'.


Job Settings

File: shared/config/job.lua

Crew

SettingDefaultWhat it does
Config.Crew.maxSize2Crew size limit
Config.Crew.inviteTimeout60Seconds before a crew invite expires
Config.Crew.coopBonusPercent0.15Extra pay for crew jobs (0.15 = 15% bonus)

Payment

SettingDefaultWhat it does
Config.Payment.distanceBonusPerUnit0.30Dollars earned per meter driven to the scene
Config.Payment.speedBonusAmount25Bonus for finishing before the timer runs out
Config.Payment.vehicleDestroyFine200Fine charged when the tow truck is destroyed
Config.Payment.streakBonusPerDay10Bonus per streak day, added to every job
Config.Payment.maxStreakDays7Daily streak cap
Config.Payment.gasFeePercent0.05Gas fee taken out of the shift total (0.05 = 5%)
Config.Payment.taxPercent0.10Taxes taken out of the shift total (0.10 = 10%)
Config.Payment.payoutAccount'bank'Which account shift pay goes into ('bank', 'cash', etc.)
Config.Payment.fineAccount'cash'Which account the truck-destruction fine comes out of

Base pay per job type:

Config.Payment.basePay = {
    [JobType.FUEL_HELP]      = 60,
    [JobType.CHANGE_WHEEL]   = 80,
    [JobType.TOWING]         = 100,
    [JobType.BATTERY_CHANGE] = 70,
}

Complaints

SettingDefaultWhat it does
Config.Complaints.maxComplaints3Complaints before the player is suspended
Config.Complaints.timeoutMinutes30How long the suspension lasts
Config.Complaints.vehicleDestroyPenalty1Complaints added for destroying the truck
Config.Complaints.deathPenalty1Complaints added for dying / going down on shift
Config.Complaints.decayPerJob1Complaints removed per completed job

Timer

SettingDefaultWhat it does
Config.Timer.baseTime90Starting time limit in seconds for every job
Config.Timer.timePerDistanceUnit0.20Extra seconds added per meter between the player and the scene
Config.Timer.expiredPenalty0.85Pay multiplier when the job finishes late (0.85 = paid 85%)

So a job 1,000 meters away gets 90 + 200 = 290 seconds. Late jobs can still be finished — they just pay less and lose the speed bonus.

Calls

SettingDefaultWhat it does
Config.Calls.minIntervalSeconds15Shortest wait before the next call comes in
Config.Calls.maxIntervalSeconds45Longest wait before the next call comes in
Config.Calls.responseTimeSeconds30How long the player has to accept or decline
Config.Calls.maxMissedCalls3Declined + expired calls allowed before auto clock-out
Config.Calls.enabledJobTypesnilRestrict dispatch to specific job types. nil = all types. Set a list to limit it, e.g. { JobType.TOWING, JobType.FUEL_HELP }

After a towed vehicle is dropped off, it's removed automatically. Config.Calls.deliveredVehicleDespawn controls that removal — it waits delay milliseconds, then fades the vehicle out over fadeMs milliseconds:

Config.Calls.deliveredVehicleDespawn = { delay = 2000, fadeMs = 1200 }  -- wait 2s, fade over 1.2s

Stranded Vehicle Marker

An overhead marker floats over the stranded vehicle so players can find it, but only when they're close and holding a key.

SettingDefaultWhat it does
Config.StrandedMarker.key74Control id the player holds to show the marker (74 = H)
Config.StrandedMarker.range50.0How close (in meters) the player must be for the marker to appear

Levels

File: shared/config/levels.lua

Five levels by default, from Trainee to Master Technician. Each level entry defines:

  • title — the rank name shown to the player
  • requiredJobs — total completed jobs needed to reach it
  • payMultiplier — multiplies every job's pay (1.0 up to 1.5 by default)
  • tipChance — how often the motorist tips (0.10 = 10% of jobs)
  • tipRange — the smallest and largest possible tip

You can add, remove, or re-tune levels freely — just keep requiredJobs increasing from one level to the next.


Locations

File: shared/config/locations.lua

Shared tow drop-off point

Config.TowingDeliveryPoint = vector3(2387.94, 3088.48, 48.19)

Towed cars get delivered here unless a breakdown scene defines its own drop-off. If you remove this line entirely, towed cars get delivered to the tow yard instead.

Tow yards

The resource ships with 1 tow yard. Each entry in Config.Locations has:

  • name — the label shown on the map blip and in messages
  • coords and heading — where the dispatcher NPC stands
  • vehicleSpawn — where the tow truck appears on clock-in
  • menuCamera — the camera angle used behind the full shift menu

To add or change tow yards, edit Config.Locations directly in this file — each entry is one yard.


Events (Breakdown Scenes)

File: shared/config/events.lua

Each event is one possible service call. The resource ships with 40 (10 per job type). Each entry has:

FieldWhat it does
typeThe job type: JobType.FUEL_HELP, JobType.CHANGE_WHEEL, JobType.TOWING, or JobType.BATTERY_CHANGE
labelThe job name shown to the player (a translation key from locales/en.json)
vehicleThe model of the stranded car (e.g. 'Asea')
coordsWhere the stranded car spawns, plus its facing direction
fuelBoneFuel jobs only, optional — which point on the car the fueling target attaches to (the fuel cap bone)
deliveryCoordsTowing jobs only, optional — a custom drop-off for this scene
npcDrivertrue to spawn a stranded driver waiting by the car

Dispatch avoids sending a player to the same spot twice in a row, and won't repeat a scene until all of them have been used in that shift.

To add or change breakdown scenes, edit Config.Events directly in this file — each entry is one scene.


Vehicle

File: shared/config/vehicles.lua

SettingDefaultWhat it does
Config.Vehicle.mode'flatbed'Which towing style the job uses: 'flatbed' (the streamed flatbed truck with an animated bed and scripted winch — the default) or 'towtruck' (the native tow-arm hook). See the Flatbed section for the flatbed truck's own settings
Config.Vehicle.model'towtruck'The tow truck model used when Config.Vehicle.mode is 'towtruck'
Config.Vehicle.spawnDistance5.0How clear the spawn area must be for the truck to appear
Config.Vehicle.healthCheckInterval1000How often (in milliseconds) the truck's condition is checked
Config.Vehicle.destroyedThreshold150Engine health below this counts as destroyed
Config.Vehicle.damageChargeRate0.50Dollars charged per point of body damage at clock-out
Config.Vehicle.damageChargeThreshold950Body health above this is considered "undamaged" — no charge
Config.Vehicle.livery-1Paint job index for models with multiple liveries (-1 = leave default)
Config.Vehicle.extrasnilTurn vehicle extras on/off, e.g. { [1] = false }. Useful for custom replacement models

Flatbed

File: shared/config/flatbed.lua

These settings only apply when Config.Vehicle.mode is 'flatbed' (the default). The flatbed truck uses a separate animated bed prop and a scripted winch to load the stranded car, so its models and offsets live in their own file.

SettingDefaultWhat it does
Config.Flatbed.model'flatbed3'The flatbed truck model
Config.Flatbed.bedModel'inm_flatbed_base'The animated bed prop that slides and tilts
Config.Flatbed.truckExtras{ [1] = false }Vehicle extras forced on the truck. Extra 1 is the truck's static built-in bed, turned off so the animated bed prop can replace it
Config.Flatbed.slideDuration4.0Seconds for the bed to slide back or forward
Config.Flatbed.tiltDuration2.0Seconds for the bed to tilt down or up

The bed moves through a set of positions as it lowers and raises (raised → slide back → tilt down → lowered, then reverse). Those positions are stored in Config.Flatbed.bedOffsets, and the final resting spot of the towed car on the bed is Config.Flatbed.carRest:

Config.Flatbed.bedOffsets = {
    raised  = { pos = vec3(0.0, -3.8, 0.45), rot = vec3(0.0, 0.0, 0.0) },
    back    = { pos = vec3(0.0, -4.0, 0.0),  rot = vec3(0.0, 0.0, 0.0) },
    lowered = { pos = vec3(0.0, -0.4, -1.0), rot = vec3(12.0, 0.0, 0.0) },
}
Config.Flatbed.carRest = { pos = vec3(0.0, 1.5, 0.3), rot = vec3(0.0, 0.0, 0.0) }

Winch

Config.Flatbed.winch controls the rope-and-hook the player pulls out to load the car:

SettingDefaultWhat it does
Config.Flatbed.winch.hookProp'prop_rope_hook_01'The hook prop on the end of the rope
Config.Flatbed.winch.ropeLength15.0Maximum rope length; the hook auto-drops beyond this
Config.Flatbed.winch.maxAttachDistance12.0Furthest the car can be from the bed to still be winched
Config.Flatbed.winch.pullDuration8.0Seconds to pull the car up onto the bed
Config.Flatbed.winch.grabRange2.0How close to the anchor point you must be to grab or return the hook
Config.Flatbed.winch.attachProgressDuration1500Milliseconds for the "attach hook" progress step
Config.Flatbed.winch.dropKey73Control id for dropping the hook (73 = X)

The winch also stores the rope anchor point on the bed (anchorOffset), and the hand/animation settings used while carrying and hooking the rope (pickupAnimation, handAttach). Most servers never need to touch these unless they swap the flatbed for a custom model.

The tools, spare wheel, and cones ride on the animated bed in flatbed mode, so their positions are stored here too as Config.Flatbed.props and Config.Flatbed.coneAttach — the equivalents of the truck-bed positions in shared/config/props.lua.


Props (Tools)

File: shared/config/props.lua

Controls the physical tools — the jack, spare wheel, jerry can, and battery:

  • which prop models are used
  • where they sit on the truck bed
  • how they attach to the player's hands when carried
  • the animations for fueling, wheel changes, and battery swaps
  • jack raise/lower steps and timing
  • which bone each wheel maps to on the stranded car

Most servers never need to touch this file unless they swap the tow truck for a custom model and need to adjust where the tools sit.


Visuals

File: shared/config/visuals.lua

Dispatcher and map blips

  • Config.NpcModel / Config.NpcScenario — who the dispatcher is and what he's doing
  • Config.Blip — the tow yard map blip (set Config.Blip.enabled = false to hide it)
  • Config.EventBlip — the blip marking an active job scene
  • Config.DeliveryBlip — the blip marking the tow drop-off

Stranded drivers

  • Config.DriverPeds — the pool of 16 possible stranded-driver looks
  • Config.StrandedNPC — where the driver stands, the animations they cycle through while waiting, how they act when the timer runs low, and from how far away they react to you

Scene dressing

  • Config.BreakdownVisuals — cosmetic damage, engine smoke, and hazard lights on the stranded car

Traffic safety

Config.SafetyZone — slows AI traffic around active scenes in rings (4 mph inside 15m, 15 mph inside 30m, 25 mph inside 50m by default), keeps ambient pedestrians away, and clears parked cars from the scene. Set enabled = false to turn all of it off.

Cones

SettingDefaultWhat it does
Config.Cones.enabledtrueMaster switch for the cone system
Config.Cones.model'prop_roadcone01a'The cone prop
Config.Cones.maxCones3Cones carried on the truck
Config.Cones.bonusPerCone5Bonus per cone placed when the job completes
Config.Cones.placementRange6.0How far from the player a cone can be placed (meters)

The rest of the cone settings control where cones sit on the truck bed and how they're held.

Repair effects

Config.RepairEffects.spark — the spark effect shown during wheel and battery work.

Waypoints

Config.Waypoints — size and height of the floating marker shown when holding H during a job.


Outfits

File: shared/config/outfits.lua

SettingDefaultWhat it does
Config.uniformsEnabledfalseMaster switch for the uniform system
Config.RoadsideOutfitMaleplaceholderClothing pieces for male characters
Config.RoadsideOutfitFemaleplaceholderClothing pieces for female characters

When enabled, players get a button in the shift menu to put the uniform on or take it off while clocked in. Their own clothes come back automatically on clock-out, hospitalization, or disconnect.

Each outfit has:

  • components — clothing pieces as { component_id, drawable, texture }
  • props — accessories like hats as { prop_id, drawable, texture }

The shipped values are placeholders — replace them with clothing IDs that fit your server before enabling uniforms.


Tutorials

File: shared/config/tutorials.lua

Config.Tutorials holds the 14 first-time hint pop-ups. Each entry defines:

  • icon — a Font Awesome icon name
  • title and body — translation keys from locales/en.json
  • position — where on screen it appears (optional, defaults to top-right)
  • duration — how long it stays up in seconds (optional)

To change the actual hint text, edit locales/en.json.


Built-In Server Protection

File: server/main.lua (not meant to be edited)

The server automatically ignores suspiciously fast repeated requests (clocking in, accepting calls, completing jobs, crew invites, prop/cone syncing, uniform toggles, and so on) to protect against spam and cheating. This is built in — there's nothing to configure.


Next Steps