Installation Guide

Step-by-step setup for oxide-pizzajob.

Step-by-step setup for oxide-pizzajob.

Prerequisites

Required resources

ResourcePurpose
ox_libLocale, callbacks, timers, UI helpers
oxmysqlDatabase driver
o-linkFramework and system abstraction used by this resource

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:

server.cfg
ensure ox_lib
ensure oxmysql
ensure o-link
ensure oxide-pizzajob

Database — 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:

sql/install.sql
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 settings
  • job_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.lua
  • shared/config/job.lua
  • shared/config/levels.lua
  • shared/config/locations.lua
  • shared/config/outfits.lua
  • shared/config/tutorials.lua
  • shared/config/vehicles.lua
  • shared/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

Start the server and confirm ox_lib, oxmysql, o-link, and oxide-pizzajob all load without dependency errors.
Join the server and verify the pizza shop blips appear on the map.
Walk to the counter NPC at any shop and confirm the third-eye target appears.
Clock in, confirm the delivery vehicle spawns, and pick up a batch.
Complete a test delivery and verify the timer, delivery target, and payout work.

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 summary

Admin 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:

server.cfg
add_principal identifier.license:<their-license> group.admin
add_ace group.admin admin allow

Replace <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