Troubleshooting Guide
Common issues and current fixes for oxide-landscapingjob.
Startup Issues
Resource Fails to Start
Check dependency order:
ensure ox_lib
ensure oxmysql
ensure o-link
ensure oxide-landscapingjob
If xsound is missing, audio is disabled but the job still runs.
Missing Dependency Errors
shared/init.lua checks for:
ox_liboxmysqlo-link
If one is missing or not started, the resource prints an error and stops initialization.
No Init Message
On a healthy startup, the server prints:
[oxide-landscapingjob] oxide-landscapingjob initialized
If that line never appears, fix startup errors first.
Database Issues
Progression Is Not Saving
Verify that sql/install.sql has been imported and that job_progression exists.
The landscaping job expects rows keyed by:
char_idjob = 'landscaping'
Old Progression Table Still Exists
If your server still has landscapingjob_progression or other legacy job progression tables, run sql/migrate_unified_progression.sql once after backing up the database.
Reset Complaints Manually
Current manual reset query:
UPDATE job_progression
SET complaints = 0, timeout_until = NULL
WHERE char_id = 'CHAR_ID' AND job = 'landscaping';
Clock-In Issues
Cannot Clock In
Check:
- the player is near the office NPC
- the office is not full
- the player is not timed out by the complaint system
- the spawn area is not occupied
- progression can load from
job_progression
Spawn Area Busy
Clock-in checks for nearby players and vehicles around the office spawn point. Clear the area around the configured vehicleSpawn and try again.
NPC Exists But No Interaction
The manager NPC uses olink.target.AddLocalEntity(...). Verify:
o-linkis running correctly- the character is fully loaded
- the NPC spawned at a valid position
Yard and Mowing Issues
Yard Will Not Start
Make sure:
- you are at the assigned yard marker
- you are within interaction distance
- the shift is active
Grass Patches Are Not Being Cut
Check:
- blades are lowered with
G - you are using the mower, not the van
Config.Mowing.detectionRadiusis not too small for your use case- the current yard is actually active
Obstacles Cannot Be Picked Up
By default, obstacle interactions use Config.Obstacles.useTarget = true.
Verify:
o-linktargeting is working- you are on foot
- you are close enough
If you change to prompt-style interaction, re-test pickupRadius.
Mower Breaks and the Yard Feels Stuck
Check Config.Mower.allowFinishYardOnBreakdown.
true: the player can repair and resumefalse: the current yard is forfeited and the resource moves on
Menu and UI Issues
Shift Menu Does Not Open
Check:
- the player has a loaded character
o-linkis activeweb/distexists if you are usingConfig.menuStyle = 'nui'
If you want a simpler fallback, set:
Config.menuStyle = 'menu'
NUI Looks Broken
The resource expects compiled assets under web/dist. If they are missing, rebuild the web UI in the web folder and make sure the output exists before starting the resource.
Menu Camera Does Nothing
The scripted menu camera only works in NUI mode and only when the selected office has a menuCamera block in shared/config/locations.lua.
Uniform Issues
Uniform Button Is Missing
Check:
Config.uniformsEnabled = true
in shared/config/outfits.lua.
Uniform Does Not Revert
Uniform restoration happens through olink.clothing and the resource's stored appearance snapshot. If clothing restoration is failing, verify your o-link clothing integration first.
Crew Issues
Invite Fails
Current crew invites are server-ID based, but the server still validates:
- inviter is clocked in
- inviter is not already in a crew
- target is valid
- target is not already on shift
- target is not already in a crew
- target is within
Config.Crew.inviteRange
The shipped range is 15.0.
Crew State Gets Out of Sync
Crew state is managed live in memory. If a member unloads, disconnects, or dies mid-shift, the resource tries to transfer or clean up state automatically. Restarting the resource clears crew session state.
Payment Issues
No Money Received
Net payout is only added if payout.netPay > 0, and it is deposited to bank.
Check:
- at least one yard was completed
- deductions did not consume the full payout
- your
o-linkmoney integration is working
Van Destruction Fine Feels Wrong
Van destruction currently removes the fine from cash, not bank.
That is the implemented behavior in server/main.lua.
Shift Summary Did Not Arrive
Check:
Config.shiftSummaryConfig.usePhone- your
o-linkphone/email integration
If Config.usePhone = true, the summary text path uses olink.phone.SendEmail(...).
Builder Issues
Yard Export Did Not Change Live Runtime Data
/mowerexport writes exported_locations.lua and prints the merged Lua data to the server console. Treat that output as export data to merge into your yard/location workflow.
Do not assume the export file is automatically applied to the running resource unless your deployment workflow explicitly consumes it.
/mowerremoveyard Cannot Find a Yard
Run /mowerimport first so the current runtime data is loaded into the session, then use the exact yard name.
Debugging
Enable:
Config.Debug = true
This enables the resource's debug logger and helps track:
- progression loads and saves
- state transitions
- builder operations
- yard flow
Support
Need more help?
- Discord: https://discord.gg/dZ6q8FyGhm
- Website: https://www.oxidestudios.dev/
- o-link (required abstraction layer): https://github.com/WHEREISDAN/o-link