Installation
Install Oxide Roadside Assistance, migrate older progression data, and verify the full job flow.
Step-by-step setup for oxide-roadsideassistancejob.
Prerequisites
Required resources
These must be installed and running on your server before the roadside job will start:
| Resource | Required | Purpose |
|---|---|---|
ox_lib | Yes | Shared helper library (translations, menus, dialogs) |
oxmysql | Yes | Lets the resource save player progress to your database |
o-link | Yes | Connection layer between this job and your framework (QBCore, QBX, ESX) |
What this job uses from o-link
You don't need to configure anything here — this is just so you know which parts of your server this job talks to through o-link:
- notifications
- phone/email messages (service updates and pay summaries)
- paying players and charging fines
- player names and identity
- the interaction eye/target on the dispatcher NPC
- progress bars and menus
- vehicle keys and fuel for the tow truck
- work uniforms (optional)
If o-link is already working with your other Oxide resources, you are good to go.
Installation Steps
1. Place the Resource
Put the oxide-roadsideassistancejob folder in your server's resources directory, alongside your other resources.
2. Start It After Its Dependencies
In your server.cfg, the roadside job must start after the resources it needs. Make sure the lines appear in this order:
ensure ox_lib
ensure oxmysql
ensure o-link
ensure oxide-roadsideassistancejob3. Database — nothing to do
The resource creates its own database tables the first time it starts, so there is no SQL script to run. (sql/install.sql is still included if you prefer to create the tables yourself or want to see the schema.)
The progression table below is shared by current Oxide job resources — it is only created if another Oxide job hasn't already created it:
CREATE TABLE IF NOT EXISTS `job_progression` (
`char_id` VARCHAR(60) NOT NULL,
`job` VARCHAR(40) NOT NULL,
`level` TINYINT NOT NULL DEFAULT 1,
`total_count` INT NOT NULL DEFAULT 0,
`daily_streak` INT NOT NULL DEFAULT 0,
`last_activity_date` DATE NULL,
`complaints` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`timeout_until` DATETIME NULL,
PRIMARY KEY (`char_id`, `job`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;The roadside job saves its rows in this table with job = 'roadside'.
4. Migrate Old Data (Only If Upgrading)
Skip this step on a fresh install.
If you previously ran an older version of an Oxide job that used its own progression table (for example roadsideassistancejob_progression), run sql/migrate_unified_progression.sql once. It copies player progress from the old tables of every Oxide job (landscaping, pizza, postal, animal control, newspaper, roadside) into the shared table, then removes the old tables.
Back up your database before running it.
5. Review the Settings
Settings are edited in-game: join as an admin and run /roadside settings. Changes save to your database and apply instantly — no restart needed.
The files under shared/config/ hold the factory defaults. On the resource's first start every value is imported from those files into the database; after that the database is the source of truth, so edit settings through the in-game menu rather than the files.
The most important switches, under General in the settings menu:
- Use phone messages — send service messages to the player's phone
- Shift summary style — how the end-of-shift pay summary is shown
- Shift menu style — which style of shift menu to use
- Workers per yard — how many players can work from one tow yard at once
See CONFIGURATION.md for every setting explained.
Verification
Startup Check
Start your server and watch the console. On startup the resource checks that ox_lib, oxmysql, and o-link are running. If one is missing or started in the wrong order, you will see a clear red error from oxide-roadsideassistancejob telling you which one — fix your server.cfg order and restart.
In-Game Check
- Join the server with a loaded character.
- Drive to the tow yard (truck blip on the map, in the Grand Senora Desert by default).
- Walk up to the dispatcher NPC and interact with him.
- Open the shift menu and clock in.
- Confirm that:
- a tow truck spawns nearby with keys and a full tank
- tools (jack, spare wheel, jerry can, battery) and cones are visible on the truck bed
- within about 15–45 seconds, an incoming service call appears on screen
Job Check
- Accept the incoming call with
E. - Drive to the marked location — a timer at the top of the screen counts down.
- Complete the work at the scene (the on-screen prompts and the interaction eye guide you through each step).
- Confirm the job-complete notification with the pay amount appears.
- Return to the dispatcher and clock out — your pay summary should arrive and the money should land in the player's bank account.
If all of that works, the resource is installed correctly.
Optional Setup
Phone / Email Service Messages
When Use phone messages is on (the default), the job sends players service emails for the shift welcome message, incident reports, and the end-of-shift pay summary.
These messages are delivered through o-link, which supports popular phone resources like qb-phone, lb-phone, gksphone, okokPhone, qs-smartphone, and yseries. If your server doesn't run a supported phone, the emails simply won't arrive — turn Use phone messages off so players aren't left waiting on messages. Important moments (pay received, truck destroyed, etc.) always also show as regular on-screen notifications, with or without a phone.
Shift Summary Mode
Shift summary style controls how the end-of-shift pay breakdown is delivered:
- Text message: sent to the player's phone as an email (default)
- Popup summary: shown on screen (requires the shift menu style to not be the plain context menu)
Menu Mode
Shift menu style controls what the shift menu looks like:
- Custom UI: the full custom menu with a camera view of the tow yard (default)
- Context menu: a simple text menu — use this if you prefer something lightweight
Uniforms
Work uniforms are off by default. To turn them on, enable Uniforms in /roadside settings (Presentation → Uniforms).
When enabled, players get a button in the shift menu to put on a roadside uniform while clocked in. Their own clothes are restored when they take it off, clock out, get hospitalized, or disconnect. The outfit pieces are edited in the same settings group — the shipped values are placeholders, so set them to clothing IDs that fit your server.
Admin Permission
The /roadside settings command requires admin permission. On QBCore and QBX the stock server.cfg already grants this to your admin group, so admins can use them right away. Otherwise, add these two lines to your server.cfg (replace the license with the admin's own):
add_principal identifier.license:YOUR_LICENSE_HERE group.admin
add_ace group.admin admin allowSee ADMIN.md for details.
Notes for UI Developers
The ready-to-use web/dist build is already included, so there is nothing to build or install for the menus to work. Rebuilding the UI is only necessary if you edit the source files under web/src.