Configuration Reference

Reference for the current oxide-pizzajob config layout.

Reference for the current oxide-pizzajob config layout.

Config File Map

FilePurpose
shared/config.luaGlobal toggles and startup settings
shared/config/job.luaPayment, random events, complaints, timer, reactions, animations
shared/config/levels.luaProgression level definitions
shared/config/locations.luaPizza shops and delivery zones
shared/config/vehicles.luaVehicle and pizza prop settings
shared/config/visuals.luaNPC, blip, customer, marker, and waypoint settings
shared/config/outfits.luaUniform definitions
shared/config/tutorials.luaTutorial prompt definitions
shared/init.luaShared enums and o-link bootstrap
server/main.luaRate limit configuration

General Settings

File: shared/config.lua

SettingTypeDefaultDescription
Config.DebugbooleanfalseEnables [oxide-pizzajob] debug logs
Config.menuStylestring'nui''nui' for the Vue menu, 'menu' for olink.menu
Config.usePhonebooleantruePresent in config, but not currently checked by runtime logic
Config.shiftSummarystring'text''nui' for popup summary, 'text' for notification summary
Config.MaxSlotsPerLocationnumber3Maximum concurrent shifts per shop
shared/config.lua
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 = 3

Job Settings

File: shared/config/job.lua

Payment

SettingDefaultDescription
Config.Payment.basePay50Flat base pay per delivery
Config.Payment.distanceBonusPerUnit0.50Bonus per distance unit
Config.Payment.speedBonusAmount25Bonus for beating the timer
Config.Payment.speedBonusTimeLimit180Speed bonus threshold in seconds
Config.Payment.damagedPizzaThreshold300Vehicle body health threshold for damaged pizza
Config.Payment.damagedPizzaMultiplier0.5Damaged pizza pay multiplier
Config.Payment.vehicleDestroyFine100Cash fine when the vehicle is destroyed
Config.Payment.streakBonusPerDay10Daily streak bonus per day
Config.Payment.maxStreakDays7Maximum streak count used for bonus calculation
Config.Payment.minDeliveryTimePerDistanceUnit0.05Anti-teleport minimum time scaling
Config.Payment.absoluteMinDeliveryTime10Absolute anti-teleport minimum in seconds
Config.Payment.gasFeePercent0.05Gas deduction percentage
Config.Payment.taxPercent0.10Tax 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

SettingDefaultDescription
Config.RandomEvents.customerNotHome.chance0.08Chance to force a wait at the door
Config.RandomEvents.customerNotHome.waitTime10Wait duration in seconds
Config.RandomEvents.rushOrder.chance0.10Chance to roll a rush order
Config.RandomEvents.rushOrder.bonusMultiplier1.5Rush order bonus multiplier
Config.RandomEvents.rushOrder.timeLimit120Rush order time limit
Config.RandomEvents.wrongAddress.chance0.05Chance to reroute to a corrected destination

Complaints

SettingDefaultDescription
Config.Complaints.maxComplaints3Timeout threshold
Config.Complaints.timeoutMinutes30Timeout duration
Config.Complaints.vehicleDestroyPenalty1Complaints added on vehicle destruction
Config.Complaints.deathPenalty1Complaints added on death
Config.Complaints.decayPerDelivery1Complaints removed per successful delivery

Timer

SettingDefaultDescription
Config.Timer.baseTime90Base time in seconds
Config.Timer.timePerDistanceUnit0.3Distance-based timer scaling
Config.Timer.expiredPenalty0.85Late-delivery multiplier

Current timer formula:

timeLimit = Config.Timer.baseTime + math.floor(distance * Config.Timer.timePerDistanceUnit)

Customer Reactions

Config.CustomerReactions defines reaction tiers for:

  • excellent
  • good
  • poor
  • bad

Each tier includes walk speed, animation data, and an optional locale key for feedback.

Animations

Config.Animations currently defines:

  • pickup: counter order pickup animation
  • deliver: handoff animation

Levels

File: shared/config/levels.lua

Each entry in Config.Levels defines:

FieldDescription
titleDisplay title
requiredDeliveriesDeliveries required to unlock the level
maxOrdersMaximum batch size
vehicleVehicle model used at the level
vehicleLiveryLivery index to apply to the vehicle (-1 = leave the model's default)
vehicleExtrasOptional table of vehicle extras to force off, e.g. { [1] = false } (nil = leave defaults)
tipChanceTip probability
tipRangeMin/max tip range
payMultiplierPay multiplier
priorityOrdersEnables Priority orders
cateringOrdersEnables Catering orders

The default config ships with 5 levels from Trainee through Veteran.

Locations

File: shared/config/locations.lua

Each location entry contains:

FieldDescription
nameShop display name
coordsCounter interaction position
headingNPC facing direction
vehicleSpawnVehicle spawn position
menuCameraNUI camera framing config
deliveryZonesAvailable delivery points

Each delivery zone contains:

FieldDescription
coordsDelivery destination
minLevelMinimum required level
labelZone 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.

SettingDefaultDescription
Config.Vehicle.spawnDistance5.0Spawn-area clearance threshold
Config.Vehicle.healthCheckInterval1000Vehicle health polling interval in ms
Config.Vehicle.destroyedThreshold150Engine 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.damageChargeRate0.50Charge per health point below threshold
Config.Vehicle.damageChargeThreshold950Body 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

SettingDefault
Config.NpcModel'S_M_Y_Chef_01'
Config.NpcScenario'WORLD_HUMAN_CLIPBOARD'
Config.Blip.enabledtrue
Config.Blip.sprite267
Config.Blip.color1
Config.Blip.scale0.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

SettingDefaultDescription
Config.uniformsEnabledfalseTurns the uniform toggle on or off (off by default)

Separate outfit definitions exist for:

  • Config.PizzaOutfitMale
  • Config.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_clockin
  • first_delivery_start
  • first_store_pizza
  • first_delivery_complete
  • first_timer_expired
  • first_vehicle_damage
  • first_level_up
  • first_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.IDLE
  • ShiftState.CLOCKED_IN
  • ShiftState.DELIVERING

OrderType

  • OrderType.STANDARD
  • OrderType.PRIORITY
  • OrderType.CATERING

DeliveryRating

  • DeliveryRating.EXCELLENT
  • DeliveryRating.GOOD
  • DeliveryRating.POOR
  • DeliveryRating.BAD

Rate Limits

File: server/main.lua

Server-side rate limiting prevents action spam. Each action has a cooldown period in milliseconds:

ActionCooldown (ms)
completeDelivery5000
requestOrders3000
clockIn2000
clockOut2000
vehicleDestroyed10000

Next Steps