Installation Guide
Step-by-step setup for oxide-postaljob.
Step-by-step setup for oxide-postaljob.
Prerequisites
Required resources
| Resource | Purpose |
|---|---|
ox_lib | Locale, callbacks, timers, UI helpers |
oxmysql | Database driver |
o-link | Framework and system abstraction used by this resource |
o-link expectations
This resource depends on your server's o-link setup for:
- player identity and character lookup
- notifications
- phone messaging (shift events, crew invites, clock-out summary)
- money handling
- clothing and uniform management
- fuel level setting
- vehicle keys
- targeting (NPC interaction, box pickup, van loading, delivery zones)
- menu support when
Config.menuStyle = 'menu'
Installation
Place the resource
Place oxide-postaljob inside your server's resources folder.
Add startup order
Start dependencies before the job resource:
ensure ox_lib
ensure oxmysql
ensure o-link
ensure oxide-postaljobInstall the SQL table
Run sql/install.sql against your database.
This creates the unified progression table used by current Oxide jobs:
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-postaljob stores progression rows with job = 'postal'.
Migrate old data if needed
If your server is migrating from an older Oxide job install, run sql/migrate_unified_progression.sql once before moving to the unified progression table.
Review configuration
Adjust:
shared/config.luashared/config/job.luashared/config/levels.luashared/config/locations.luashared/config/npcs.luashared/config/outfits.luashared/config/vehicles.luashared/config/visuals.luashared/config/tutorials.lua
See the Configuration Reference for the full reference.
Verification
ox_lib, oxmysql, o-link, and oxide-postaljob all load without dependency errors.Optional Setup
Phone messaging
Shift event messages, crew invites, and the clock-out summary are sent through o-link.phone automatically. Make sure your o-link phone module is configured for the phone resource your server uses.
If you prefer the NUI popup summary on clock-out rather than a phone message, use:
Config.shiftSummary = 'nui'Admin permission for the builder
/postalbuilder (for creating your own depots and delivery routes) is limited to admins. To make someone an admin, add them to the admin group and grant that group the admin ace in your server.cfg:
add_principal identifier.license:<their-license> group.admin
add_ace group.admin admin allowIf you already run QBCore, QBX, or ESX admins, you don't need to do anything extra — your existing framework admins pass automatically. See Admin Tools for how it works.
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.