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_lib
  • oxmysql
  • o-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_id
  • job = '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:

  1. the player is near the office NPC
  2. the office is not full
  3. the player is not timed out by the complaint system
  4. the spawn area is not occupied
  5. 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-link is 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.detectionRadius is 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-link targeting 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 resume
  • false: the current yard is forfeited and the resource moves on

Shift Menu Does Not Open

Check:

  • the player has a loaded character
  • o-link is active
  • web/dist exists if you are using Config.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.

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-link money 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.shiftSummary
  • Config.usePhone
  • your o-link phone/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?