Configuration Reference
Reference for the current oxide-pizzajob config layout.
Reference for the current oxide-pizzajob config layout.
Config File Map
| File | Purpose |
|---|---|
shared/config.lua | Global toggles and startup settings |
shared/config/job.lua | Payment, random events, complaints, timer, reactions, animations |
shared/config/levels.lua | Progression level definitions |
shared/config/locations.lua | Pizza shops and delivery zones |
shared/config/vehicles.lua | Vehicle and pizza prop settings |
shared/config/visuals.lua | NPC, blip, customer, marker, and waypoint settings |
shared/config/outfits.lua | Uniform definitions |
shared/config/tutorials.lua | Tutorial prompt definitions |
shared/init.lua | Shared enums and o-link bootstrap |
server/main.lua | Rate limit configuration |
General Settings
File: shared/config.lua
| Setting | Type | Default | Description |
|---|---|---|---|
Config.Debug | boolean | false | Enables [oxide-pizzajob] debug logs |
Config.menuStyle | string | 'nui' | 'nui' for the Vue menu, 'menu' for olink.menu |
Config.usePhone | boolean | true | Present in config, but not currently checked by runtime logic |
Config.shiftSummary | string | 'text' | 'nui' for popup summary, 'text' for notification summary |
Config.MaxSlotsPerLocation | number | 3 | Maximum concurrent shifts per shop |
Config = {}
Config.Debug = false
Config.menuStyle = 'nui' -- 'nui' for Vue shift menu, 'menu' for olink.menu context menu
Config.usePhone = true -- Present for shift message behavior
Config.shiftSummary = 'text' -- 'nui' for popup summary, 'text' for notification summary
Config.MaxSlotsPerLocation = 3Job Settings
File: shared/config/job.lua
Payment
| Setting | Default | Description |
|---|---|---|
Config.Payment.basePay | 50 | Flat base pay per delivery |
Config.Payment.distanceBonusPerUnit | 0.50 | Bonus per distance unit |
Config.Payment.speedBonusAmount | 25 | Bonus for beating the timer |
Config.Payment.speedBonusTimeLimit | 180 | Speed bonus threshold in seconds |
Config.Payment.damagedPizzaThreshold | 300 | Vehicle body health threshold for damaged pizza |
Config.Payment.damagedPizzaMultiplier | 0.5 | Damaged pizza pay multiplier |
Config.Payment.vehicleDestroyFine | 100 | Cash fine when the vehicle is destroyed |
Config.Payment.streakBonusPerDay | 10 | Daily streak bonus per day |
Config.Payment.maxStreakDays | 7 | Maximum streak count used for bonus calculation |
Config.Payment.minDeliveryTimePerDistanceUnit | 0.05 | Anti-teleport minimum time scaling |
Config.Payment.absoluteMinDeliveryTime | 10 | Absolute anti-teleport minimum in seconds |
Config.Payment.gasFeePercent | 0.05 | Gas deduction percentage |
Config.Payment.taxPercent | 0.10 | Tax deduction percentage |
Config.Payment.payoutAccount | 'bank' | Account the net shift payout is deposited into (e.g. bank, cash, dirty) |
Config.Payment.tipAccount | 'cash' | Account per-delivery tips are paid into |
Config.Payment.fineAccount | 'cash' | Account the vehicle-destroy fine is taken from |
The vehicle-destruction fine can never take more money than the player has — notifications report the amount actually charged.
Random Events
| Setting | Default | Description |
|---|---|---|
Config.RandomEvents.customerNotHome.chance | 0.08 | Chance to force a wait at the door |
Config.RandomEvents.customerNotHome.waitTime | 10 | Wait duration in seconds |
Config.RandomEvents.rushOrder.chance | 0.10 | Chance to roll a rush order |
Config.RandomEvents.rushOrder.bonusMultiplier | 1.5 | Rush order bonus multiplier |
Config.RandomEvents.rushOrder.timeLimit | 120 | Rush order time limit |
Config.RandomEvents.wrongAddress.chance | 0.05 | Chance to reroute to a corrected destination |
Complaints
| Setting | Default | Description |
|---|---|---|
Config.Complaints.maxComplaints | 3 | Timeout threshold |
Config.Complaints.timeoutMinutes | 30 | Timeout duration |
Config.Complaints.vehicleDestroyPenalty | 1 | Complaints added on vehicle destruction |
Config.Complaints.deathPenalty | 1 | Complaints added on death |
Config.Complaints.decayPerDelivery | 1 | Complaints removed per successful delivery |
Timer
| Setting | Default | Description |
|---|---|---|
Config.Timer.baseTime | 90 | Base time in seconds |
Config.Timer.timePerDistanceUnit | 0.3 | Distance-based timer scaling |
Config.Timer.expiredPenalty | 0.85 | Late-delivery multiplier |
Current timer formula:
timeLimit = Config.Timer.baseTime + math.floor(distance * Config.Timer.timePerDistanceUnit)Customer Reactions
Config.CustomerReactions defines reaction tiers for:
excellentgoodpoorbad
Each tier includes walk speed, animation data, and an optional locale key for feedback.
Animations
Config.Animations currently defines:
pickup: counter order pickup animationdeliver: handoff animation
Levels
File: shared/config/levels.lua
Each entry in Config.Levels defines:
| Field | Description |
|---|---|
title | Display title |
requiredDeliveries | Deliveries required to unlock the level |
maxOrders | Maximum batch size |
vehicle | Vehicle model used at the level |
vehicleLivery | Livery index to apply to the vehicle (-1 = leave the model's default) |
vehicleExtras | Optional table of vehicle extras to force off, e.g. { [1] = false } (nil = leave defaults) |
tipChance | Tip probability |
tipRange | Min/max tip range |
payMultiplier | Pay multiplier |
priorityOrders | Enables Priority orders |
cateringOrders | Enables Catering orders |
The default config ships with 5 levels from Trainee through Veteran.
Locations
File: shared/config/locations.lua
Each location entry contains:
| Field | Description |
|---|---|
name | Shop display name |
coords | Counter interaction position |
heading | NPC facing direction |
vehicleSpawn | Vehicle spawn position |
menuCamera | NUI camera framing config |
deliveryZones | Available delivery points |
Each delivery zone contains:
| Field | Description |
|---|---|
coords | Delivery destination |
minLevel | Minimum required level |
label | Zone label shown to players |
The resource ships with 3 pizza shop locations.
Vehicles
File: shared/config/vehicles.lua
Vehicle Settings
There is no Config.Vehicle.model — the delivery vehicle model is set per level via the vehicle field in shared/config/levels.lua.
| Setting | Default | Description |
|---|---|---|
Config.Vehicle.spawnDistance | 5.0 | Spawn-area clearance threshold |
Config.Vehicle.healthCheckInterval | 1000 | Vehicle health polling interval in ms |
Config.Vehicle.destroyedThreshold | 150 | Engine health threshold for destruction handling |
Config.Vehicle.primaryColor | { 207, 31, 33 } | Primary RGB color |
Config.Vehicle.secondaryColor | { 255, 255, 255 } | Secondary RGB color |
Config.Vehicle.damageChargeRate | 0.50 | Charge per health point below threshold |
Config.Vehicle.damageChargeThreshold | 950 | Body health threshold for damage charge |
Spawned vehicles receive the configured colors and the PIZZA plate.
Pizza Prop
Config.PizzaProp defines:
- prop model
- attachment bone
- attachment offset and rotation
- carry animation data
Visuals
File: shared/config/visuals.lua
NPC and Blip Settings
| Setting | Default |
|---|---|
Config.NpcModel | 'S_M_Y_Chef_01' |
Config.NpcScenario | 'WORLD_HUMAN_CLIPBOARD' |
Config.Blip.enabled | true |
Config.Blip.sprite | 267 |
Config.Blip.color | 1 |
Config.Blip.scale | 0.5 |
Config.Blip.label | 'Pizza Shop' |
Customer Peds
Config.CustomerPeds is the random ped pool used for delivery customers.
Delivery Marker
Config.DeliveryMarker controls the in-world marker type, scale, color, and motion flags.
Waypoints
Config.Waypoints controls:
- height offset
- minimum and maximum scale
- near and far scaling distances
- render update interval
Outfits
File: shared/config/outfits.lua
| Setting | Default | Description |
|---|---|---|
Config.uniformsEnabled | false | Turns the uniform toggle on or off (off by default) |
Separate outfit definitions exist for:
Config.PizzaOutfitMaleConfig.PizzaOutfitFemale
Each outfit contains components and props arrays. These are applied through olink.clothing.
The default outfit values are placeholders — set your server's real uniform component IDs before enabling uniforms.
Tutorials
File: shared/config/tutorials.lua
The resource includes tutorial entries for:
first_clockinfirst_delivery_startfirst_store_pizzafirst_delivery_completefirst_timer_expiredfirst_vehicle_damagefirst_level_upfirst_batch_complete
Each entry defines an icon and the title/body text keys. An entry can also set position and duration, but these are optional and most tooltips leave them at the defaults (top-right, 10 seconds).
Enums
File: shared/init.lua
ShiftState
ShiftState.IDLEShiftState.CLOCKED_INShiftState.DELIVERING
OrderType
OrderType.STANDARDOrderType.PRIORITYOrderType.CATERING
DeliveryRating
DeliveryRating.EXCELLENTDeliveryRating.GOODDeliveryRating.POORDeliveryRating.BAD
Rate Limits
File: server/main.lua
Server-side rate limiting prevents action spam. Each action has a cooldown period in milliseconds:
| Action | Cooldown (ms) |
|---|---|
completeDelivery | 5000 |
requestOrders | 3000 |
clockIn | 2000 |
clockOut | 2000 |
vehicleDestroyed | 10000 |