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.

Config.menuStyle supports:

  • 'nui': full-screen Vue menu with cinematic camera and progression card
  • 'menu': olink.menu flow 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
  • 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, the resource attempts to send detailed shift emails through o-link.phone.

Shift states

  • IDLE
  • CLOCKED_IN
  • DELIVERING

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 TypePay MultiplierUnlock LevelRoll Chance
Standard1.0x1fallback
Priority1.5x420% when eligible
Catering3.0x510% 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

Player clocks in at a shop counter.
The first batch is automatically requested after the pickup progress bar.
A GPS blip and route appear for the first delivery address.
A timer starts based on distance.
Player carries the pizza box prop to a nearby vehicle and stores it.
Player drives to the delivery zone.
On exit, the pizza box re-attaches automatically.
Player walks to the marker and presses E to deliver.
A customer NPC spawns and plays a reaction animation based on delivery quality.
Payment feedback appears and the route advances to the next order.

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:

LocationLevel 1 ZonesLevel 2 ZonesLevel 3 Zones
Downtown Pizza This161422
Del Perro Pizza This101010
Mission Row Pizza This101010

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, default 0.85)
  • rush orders use their own configured time limit

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 + tip

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.

Customer Reactions

Customers react based on delivery performance:

  • excellent: fast delivery
  • good: on-time standard delivery
  • poor: late delivery
  • bad: 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.target local 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 PIZZA plate
  • 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

Waypoints

A 3D floating waypoint marker appears above the active destination. It scales by distance and can be shown by holding H.

Phone Messaging

The resource attempts to send service emails through o-link.phone for:

  • shift start
  • vehicle destruction
  • death or hospitalization
  • detailed shift summary

The welcome email arrives with your first order batch and names your first delivery destination. The immediate clock-out UI still follows Config.shiftSummary.

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 in shared/config/outfits.lua before the uniform will look correct.

Tutorials

The resource includes 8 tutorial prompts 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
  • /pizzatutorialreset

Next Steps