Feature Guide
Overview of the current oxide-pizzajob gameplay flow and systems.
Overview of the current oxide-pizzajob gameplay flow and systems.
Shift Flow
Players manage the job from the counter NPC at each Pizza This! location using the configured o-link target integration.
Menu modes
Config.menuStyle supports:
'nui': full-screen Vue menu with cinematic camera and progression card'menu':olink.menuflow for servers that want a lighter interface
Both modes support:
- clocking in and out
- viewing progression and complaint state
- requesting a new batch of orders
- cancelling the batch they're on (only shown while a batch is running — see Cancelling the current orders)
- toggling the pizza uniform (only shown when uniforms are turned on — see Uniform System)
Summary modes
Config.shiftSummary controls the immediate clock-out presentation:
'nui': popup summary screen'text': notification summary
Separately from that, when Config.usePhone is on, the player also gets the detailed pay summary on their phone as a text or mail. See Phone Messaging.
Shift states
IDLECLOCKED_INDELIVERING
Normal flow is:
IDLE -> CLOCKED_IN -> DELIVERING -> CLOCKED_IN
Slot limits
Each shop has a configurable maximum number of concurrent shift slots (Config.MaxSlotsPerLocation, default 3). If all slots are full, new players cannot clock in at that location.
Order Types
When requesting orders from the counter menu, the server generates a batch based on the player's current progression level.
| Order Type | Pay Multiplier | Unlock Level | Roll Chance |
|---|---|---|---|
| Standard | 1.0x | 1 | fallback |
| Priority | 1.5x | 4 | 20% when eligible |
| Catering | 3.0x | 5 | 10% when eligible |
- Standard orders are the default delivery flow.
- Priority orders add a higher payout multiplier.
- Catering orders are high-value bulk deliveries.
Delivery Phase
Delivery flow
E to deliver.After all deliveries in a batch are complete, the shift returns to CLOCKED_IN.
Delivery zones
Each shop location has a set of delivery zones with minimum level requirements:
| Location | Level 1 Zones | Level 2 Zones | Level 3 Zones |
|---|---|---|---|
| Downtown Pizza This | 16 | 14 | 22 |
| Del Perro Pizza This | 10 | 10 | 10 |
| Mission Row Pizza This | 10 | 10 | 10 |
Higher-level zones are generally further from the shop.
Mission timers
The timer is distance-based:
Config.Timer.baseTime + math.floor(distance * Config.Timer.timePerDistanceUnit)If the timer expires:
- the delivery can still be completed
- the late-delivery penalty multiplier is applied (
Config.Timer.expiredPenalty, default0.85) - rush orders use their own configured time limit
Cancelling the current orders
A player who picks up a batch and then can't finish it — the address is across a blocked road, a friend needs them, or they just want a different area — can drop the batch without ending their shift. There are two ways to do it:
- From the shift menu: a Cancel Current Task option appears in the counter menu, but only while a batch is actually running.
- From the delivery vehicle: aim the third-eye (interaction) at the work vehicle and pick Cancel Current Task.
Either way, a short confirmation menu appears first, so nobody cancels by accident.
When the batch is cancelled:
- the remaining orders are dropped and the pizza box is put away
- the player stays clocked in and keeps the delivery vehicle — no need to drive back to the shop
- deliveries already completed still count, and their earnings are still paid out at clock-out
- no complaint is added and no fine is charged — cancelling is not a punishment
The only cost is a short wait before the next batch. By default the player must wait 60 seconds; asking the counter NPC sooner tells them how many seconds are left. The wait is tied to the character, so disconnecting and coming back doesn't skip it. Adjust or disable it with Config.Cancel.cooldownSeconds — see Configuration → Cancel.
Random Events
Each delivery can roll a random event.
Customer Not Home
- 8% chance by default
- Player must wait through a short progress bar before completion.
Rush Order
- 10% chance by default
- Uses a tighter time limit.
- Awards an extra 1.5x multiplier if completed in time.
Wrong Address
- 5% chance by default
- The player gets a "the address seems wrong... rerouting!" message and the delivery point is set to a different address than the one they were originally sent to.
- This is a flavor event. The delivery is completed normally at the address shown on the map, with no change to the payout.
Progression
Progression is stored in the unified job_progression table under job = 'pizza'.
Level rewards
Levels increase:
- pay multiplier
- tip chance
- tip range
- batch size
- access to Priority and Catering orders
Default progression is 5 levels from Trainee through Veteran.
Daily streaks
Completing at least one delivery on consecutive real-world days increases daily_streak up to Config.Payment.maxStreakDays (default 7). Missing a day resets the streak to 1.
Complaints and timeout
Complaints are added for:
- delivery vehicle destruction
- death or downed state during shift
Complaints decay as deliveries are completed. Reaching Config.Complaints.maxComplaints (default 3) causes a temporary timeout of Config.Complaints.timeoutMinutes (default 30 minutes).
Payment
Per-delivery payment includes:
- base pay
- distance bonus
- speed bonus
- order multiplier
- rush multiplier
- level multiplier
- damaged-pizza multiplier
- late-delivery multiplier
- streak bonus
- random tip
Per-delivery formula:
subtotal = (basePay + distanceBonus + speedBonus)
* orderMultiplier
* rushMultiplier
* levelMultiplier
* qualityMultiplier
* timerMultiplier
total = subtotal + streakBonus + tipAn order reached faster than any vehicle could drive there (Config.Payment.maxTravelSpeed, 50 metres per second in a straight line from the shop, counted from when the batch was handed out) pays no distance bonus and no speed bonus. Normal driving never triggers it.
How players get paid
There are two parts:
- Tips are paid immediately, in cash, the moment each delivery is completed.
- Everything else (base pay, bonuses, streak, etc.) is added up across the whole shift and paid out as one lump sum when the player clocks out.
The lump sum has deductions taken off before it is paid:
- vehicle damage charge
- gas fee (
Config.Payment.gasFeePercent, default 5%) - taxes (
Config.Payment.taxPercent, default 10%)
The final net amount is paid into the account set by Config.Payment.payoutAccount (default bank). Tips go to Config.Payment.tipAccount (default cash), and the vehicle-destroy fine is taken from Config.Payment.fineAccount (default cash). All money handling goes through o-link.money.
The lump sum is also paid when a shift ends without a clock-out: when the resource restarts (every running shift is paid) or when an admin deletes the player's shop. The pay summary still goes to the player's phone when Config.usePhone is on, but no on-screen summary shows.
A player who disconnects, logs out or switches character on shift isn't paid at that moment, because their character may already be gone. Their net pay is worked out as a clock-out would, kept in the database, and paid a few seconds after that character next loads in, with a notification saying how much it was. It is paid once, even if the server restarts in between. If the database is unreachable at that moment, the job keeps the pay and saves it again every minute, or pays it straight away if the player comes back first.
A shift lost to going down is not paid: the lump sum is dropped when the player is taken to hospital, and also when they leave before respawning. Tips already paid are kept.
Customer Reactions
Customers react based on delivery performance:
excellent: fast deliverygood: on-time standard deliverypoor: late deliverybad: damaged pizza
The customer NPC walks to the player, performs the reaction animation, receives the pizza prop, then walks away and despawns.
Pizza Prop System
Players carry a visible pizza box prop (prop_pizza_box_02) during deliveries.
Prop behavior
- attached on foot with the configured carry animation
- stored in the work vehicle through an
o-link.targetlocal entity action - vehicle entry blocked while the pizza is unstored
- detached on vehicle entry and re-attached on vehicle exit
- transferred to the customer on delivery
Vehicle System
The delivery vehicle:
- uses the current level's configured model, livery, and extras
- gets custom colors and the
PIZZAplate - receives keys through
o-link.vehiclekey - gets full fuel through
o-link.fuel - is health-monitored during the shift
If the vehicle is destroyed:
- current deliveries are cancelled
- a complaint is added
- the configured destroy fine is removed from cash (never more than the player has)
- the player returns to
CLOCKED_IN
HUD Overlay
A NUI delivery panel appears during DELIVERING showing:
- current timer
- late indicator
- batch progress
With Oxide HUD
On a server running Oxide HUD (free, needs o-link 1.12.1 or newer), players can move the delivery timer and the tutorial cards in the /hud editor, or switch them off. Both hide with the HUD (pause menu, character select, death) and use the server's accent colour (see Config.UseHudAccent in General Settings). Without Oxide HUD everything stays where it is.
Waypoints
A 3D floating waypoint marker appears above the active destination. It scales by distance and can be shown by holding H.
Phone Messaging
When Config.usePhone is true, the pizza shop sends the player a phone message for:
- the welcome, when the first batch of the shift is handed out (it names the first delivery address)
- vehicle destruction, with the repair fee that was charged
- going down or dying on shift
- being taken to hospital, which also ends the shift
- the detailed pay summary at clock-out, and when a restart or a deleted shop ends the shift
How each message arrives depends on the phone your server runs:
| Phone | Arrives as |
|---|---|
| Oxide Phone, gksphone, okokPhone, qs-smartphone (Quasar V3) | A text message from the shop |
| qb-phone, lb-phone, yseries, qs-smartphone-pro, older qs-smartphone versions |
Any message that can't be sent as a text is sent as mail instead. Texts need o-link 1.11.0 or newer; see Installation → Phone messaging.
The immediate clock-out UI still follows Config.shiftSummary.
Gigs app on Oxide Phone
If your server runs Oxide Phone, its Gigs app shows this job: the pizza shops and whether each one has room for another driver, the player's current shift (the order they're on, batch progress, pay so far and tips), 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 is the exception: it always arrives as a text or mail. There is nothing to set up — just run Oxide Phone and this job.
Uniform System
Uniforms are turned off by default (Config.uniformsEnabled = false). When you turn them on, players can put on or take off a pizza uniform from the shift menu. Separate outfits are configured for male and female character models through o-link.clothing. The resource saves the player's current outfit before applying the uniform and puts it back when the uniform is removed or the shift ends.
The default outfit values are placeholders — you must set your server's real uniform component IDs before the uniform will look correct. Set them in /pizza settings under Uniforms (Male outfit and Female outfit), or in shared/config/outfits.lua before the resource's first start. A file edit after that needs a restart and Reset to default on the outfit.
Tutorials
The resource includes 8 tutorial cards covering:
- first clock-in
- first delivery start
- first pizza storage
- first delivery complete
- first timer expiry
- first vehicle damage
- first level-up
- first batch complete
Players can toggle or reset tutorials with:
/pizzatutorials(or/pizza tutorials)/pizzatutorialreset(or/pizza tutorialreset)
Next Steps
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.
Admin & Developer Tools
Reference for oxide-pizzajob admin commands — the /pizza settings editor, the location builder, permissions, and progression management.