Installation Guide
Step-by-step setup for oxide-pizzajob.
Step-by-step setup for oxide-pizzajob.
Prerequisites
Required resources
| Resource | Purpose |
|---|---|
ox_lib | Locale, callbacks, timers, UI helpers |
oxmysql | Database driver |
o-link | Framework and system abstraction used by this resource |
o-link expectations
This resource depends on your server's o-link setup for:
- player identity and character lookup
- notifications
- phone messages for shift updates (texts or mail)
- money handling
- clothing and uniform management
- fuel level setting
- vehicle keys
- targeting for NPC and vehicle interactions
- menu support when
Config.menuStyle = 'menu' - progress bars and help text
Installation
Place the resource
Place oxide-pizzajob inside your server's resources folder.
Add startup order
Start dependencies before the job resource:
ensure ox_lib
ensure oxmysql
ensure o-link
ensure oxide-pizzajobDatabase — nothing to do
The job 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;oxide-pizzajob stores progression rows with job = 'pizza'.
The job creates two more shared tables in the same way:
oxide_settings, where the job saves its settingsjob_pending_payouts, where shift pay waits for a player who disconnected or logged out on shift, until their next login
Migrate old data if needed
If your server is migrating from an older Oxide pizza job install, run sql/migrate_unified_progression.sql once before moving to the unified progression table.
Review configuration
Adjust:
shared/config.luashared/config/job.luashared/config/levels.luashared/config/locations.luashared/config/outfits.luashared/config/tutorials.luashared/config/vehicles.luashared/config/visuals.lua
These files are factory defaults. They are imported into the database the first time the resource starts. After that, change settings in game with /pizza settings (admins only); they save and apply live. A later edit to a file only takes effect after a restart and pressing Reset to default on that setting in /pizza settings. The one exception is Config.UseHudAccent, which is always read from shared/config.lua. See How Settings Work.
See the Configuration Reference for the full reference.
Verification
ox_lib, oxmysql, o-link, and oxide-pizzajob all load without dependency errors.Optional Setup
Phone messaging
When Config.usePhone is true (the default), the pizza shop sends the player phone messages for the welcome with their first batch of orders, vehicle destruction, going down on shift, being taken to hospital, and the detailed pay summary at clock-out. Make sure your o-link phone module is configured for the phone resource your server uses.
Supported phones: qb-phone, lb-phone, gksphone, okokPhone, qs-smartphone, qs-smartphone-pro, yseries and Oxide Phone. How the messages arrive depends on the phone:
- Text message from the shop on Oxide Phone, gksphone, okokPhone and qs-smartphone (Quasar V3).
- Mail on qb-phone, lb-phone, yseries, qs-smartphone-pro and older qs-smartphone versions.
Texts need o-link 1.11.0 or newer. With an older o-link, every message arrives as mail. If a text can't be sent for any reason, the message is sent as mail instead.
Gigs app on Oxide Phone: if you run Oxide Phone, its Gigs app shows the pizza shops (and whether each has room), the player's current shift, and their level. While the player carries an Oxide Phone and the Gigs app is on, shift updates arrive there as Gigs notifications instead of texts. The pay summary at clock-out still arrives as a text or mail. You don't need to set anything up beyond running Oxide Phone and this job.
Config.shiftSummary still controls the immediate on-screen clock-out summary:
Config.shiftSummary = 'nui' -- popup summary
Config.shiftSummary = 'text' -- notification summaryAdmin permission for the settings editor and builder
The /pizza settings editor and the pizza builder commands (/pizzacreate, /pizzavehicle, /pizzadeliv, /pizzaexport, and /pizzacancel) are admin-only and use the standard admin check.
If you run QBCore, Qbox, or ESX, your existing framework admins pass automatically — no extra setup is needed.
To make someone an admin manually, add them to the admin group and grant that group the admin ace in your server.cfg:
add_principal identifier.license:<their-license> group.admin
add_ace group.admin admin allowReplace <their-license> with the player's license identifier.
Uniform customization
The default outfit values in shared/config/outfits.lua are placeholders. Replace the drawable and texture values with your server's actual pizza uniform component IDs for both male and female characters before enabling uniforms. Once the resource has started, set them in /pizza settings under Uniforms (Male outfit and Female outfit, on the Advanced tab) instead, or edit the file, restart, and press Reset to default on each outfit.
Notes for UI developers
The packaged web/dist build is already included and referenced by the manifest. Rebuilding the UI is only necessary if you edit files under web/src.
Next Steps
Oxide Pizza Job
Pizza delivery gig job with order tiers, random events, and progression for FiveM servers.
Configuration Reference
How settings work in oxide-pizzajob (the /pizza settings editor and factory defaults), plus every setting and its default — pay, events, cancelling, levels, shops, vehicles, visuals, and model compatibility.