Installation Guide
Setup guide for oxide-landscapingjob.
Prerequisites
Required Resources
| Resource | Required | Purpose |
|---|---|---|
ox_lib | Yes | Locale support, shared helpers, and UI utility usage |
oxmysql | Yes | Database access |
o-link | Yes | Integration layer used by this job |
xsound | No | 3D mower audio |
o-link Features Used
This resource uses o-link for:
- callbacks
- character identity lookups
- notifications
- phone/email delivery
- local entity targets
- help text
- progress bars
- context menus
- clothing appearance changes
- fuel and vehicle key helpers
- money transactions
- player-ready / player-unload lifecycle events
Make sure your o-link installation is working before starting this resource.
Installation
Place the Resource
Put oxide-landscapingjob in your server's resources directory.
Ensure Dependencies First
Add the resource after its required dependencies in server.cfg:
ensure ox_lib
ensure oxmysql
ensure o-link
ensure xsound
ensure oxide-landscapingjobxsound is optional. If it is missing, the resource prints a warning and disables mower audio.
Import the Database Schema
Import sql/install.sql. The current schema creates a unified job_progression table:
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;This resource stores progression rows with job = "landscaping".
Run the Optional Migration If Needed
If you still have older per-job progression tables from previous Oxide job resources, run sql/migrate_unified_progression.sql once.
That migration:
- creates
job_progressionif needed - moves old landscaping progression into the unified table
- drops legacy job-specific progression tables after migration
Do not run the migration blindly on a live production database without backing it up first.
Review the Config
The resource is configured from:
shared/config.luashared/config/job.luashared/config/vehicles.luashared/config/mowing.luashared/config/visuals.luashared/config/locations.luashared/config/outfits.luashared/config/tutorials.lua
Core toggles:
Config.Debug = false
Config.usePhone = true
Config.shiftSummary = 'text'
Config.menuStyle = 'nui'
Config.MaxSlotsPerLocation = 3See the Configuration Guide for the full reference.
Verification
Startup Check
When the resource starts correctly, the server prints:
[oxide-landscapingjob] oxide-landscapingjob initializedIf o-link, ox_lib, or oxmysql are not running, startup prints dependency errors from shared/init.lua.
In-Game Check
Mowing Check
G.Optional Setup
Phone / Email Shift Messages
When Config.usePhone = true, the job sends service emails through olink.phone.SendEmail(...).
These messages are used for:
- shift welcome
- shift summary text output
If you disable Config.usePhone, the resource still uses normal notifications for immediate feedback.
Shift Summary Mode
Config.shiftSummary controls how the end-of-shift summary is delivered:
"text": send the summary through the phone/email flow"nui": show the summary in the NUI flow
Menu Mode
Config.menuStyle controls the manager UI:
"nui": Vue NUI shift menu, default"menu":o-linkcontext menu fallback
Uniforms
Uniform support is controlled in shared/config/outfits.lua:
Config.uniformsEnabled = trueWhen enabled, players can equip and remove uniforms from the shift menu while clocked in.
Admin Permission for the Yard Builder
The yard builder commands (for creating your own offices and yards) require admin permission. Add this line to your server.cfg:
add_ace group.admin admin allowThis gives everyone in your admin group access to the builder commands. Standard QBCore/QBX/ESX admins pass the check automatically. See the Admin Commands Reference for the full command list.