Troubleshooting Guide
Solutions for common issues with oxide-landscapingjob.
Shift Issues
Can't Clock In
Symptoms:
- "Talk to Manager" option not appearing
- Clock in fails with an error message
Solutions:
-
Check location slots
- Each office has a maximum of
Config.MaxSlotsPerLocationworkers (default: 3) - If all slots are full, try a different office
- Each office has a maximum of
-
Check for suspension
- If you have 3+ complaints, you are temporarily suspended
- Wait for the timeout to expire (default: 30 minutes)
- Check with debug mode: look for "Temporarily suspended" messages
-
Verify dependencies are running
# server.cfg - Ensure correct order ensure ox_lib ensure oxmysql ensure community_bridge ensure xsound ensure oxide-landscapingjob -
Check database table exists
- Import
sql/install.sqlif not already done - Verify the
landscapingjob_progressiontable exists
- Import
-
Already clocked in
- You cannot clock in while already on a shift
- Clock out first or restart the resource
Suspended from Work
Symptoms:
- "Temporarily suspended" message when trying to clock in
- Cannot start a shift
Solutions:
-
Wait for timeout
- Default suspension is 30 minutes (
Config.Complaints.timeoutMinutes) - The remaining time is shown in the error message
- Default suspension is 30 minutes (
-
Check complaint count
- Open the manager menu to see your current complaints
- Complaints are earned by destroying vehicles or dying on shift
-
Reduce complaints
- Complete yards successfully to decay complaints (
Config.Complaints.decayPerYard)
- Complete yards successfully to decay complaints (
-
Admin reset (database)
UPDATE landscapingjob_progression SET complaints = 0, timeout_until = NULL WHERE char_id = 'CHAR_ID';
NPC Not Appearing
Symptoms:
- Map blip exists but no NPC at the location
- Target interaction zone not working
Solutions:
-
Check resource is started
- Verify
oxide-landscapingjobis running in your server console
- Verify
-
Check NPC model
- Default model
s_m_y_construct_01should be available in base GTA - Try changing
Config.NpcModelif using a custom model
- Default model
-
Verify location coordinates
- Check
Config.Locationsfor valid coordinates - NPCs may spawn inside buildings or underground if coordinates are wrong
- Check
-
Restart the resource
restart oxide-landscapingjob
Vehicle Issues
Van Not Spawning
Symptoms:
- Clock in succeeds but no company van appears
- Yards assigned but no vehicle
Solutions:
-
Check vehicle spawn point
- The
vehicleSpawncoordinate may be blocked by another vehicle or object - Verify the coordinate is on flat, accessible ground
- The
-
Check vehicle model
- Default model
bison3must be available - If using a custom model, ensure it is streamed/loaded
- Default model
-
Check for model conflicts
- Other resources may be blocking vehicle spawns
- Try with minimal resources running
-
Verify spawn with debug
Config.Debug = true -- Look for: 'Assigned X yards to player Y'
Mower Stuck on Roof
Symptoms:
- Mower cosmetic prop visible on van but won't unload
- Unload animation plays but mower doesn't spawn
Solutions:
-
Check mower spawn area
- Mower spawns behind the van (
Config.Mower.spawnOffsetBehind) - Ensure nothing is blocking the rear of the van
- Mower spawns behind the van (
-
Check mower model
- Default model
mowermust be available - Verify no model conflicts
- Default model
-
Move the van
- Park on flat ground with space behind
- Try a different location
Sounds Not Playing
Symptoms:
- No mower engine sound
- No blade toggle sound
- Mowing is silent
Solutions:
-
Verify xsound is running
ensure xsound -
Check sound files exist
- Verify
sounds/directory contains the.oggfiles:lower_mechanical_whirr.ogglawn_mower_engine_loop.oggengine_fail.ogg
- Verify
-
Check xsound version
- Ensure you have a compatible version of xsound
- Update to the latest version
-
Check volume settings
- Sound volumes are configurable in
Config.Mower.blades.sound - Default volumes: toggle 0.2, loop 0.3, fail 0.4
- Sound volumes are configurable in
Mowing Issues
Patches Not Detecting
Symptoms:
- Driving mower over grass but patches don't disappear
- No mowing progress
Solutions:
-
Check blades are lowered
- Press
Gto lower blades (default key) - Look for the blade hint in the HUD
- Press
-
Check detection radius
- Default:
Config.Mowing.detectionRadius = 2.0meters - Drive slowly and directly over patches
- Increase the radius if patches are too hard to hit
- Default:
-
Check mower speed
- Blades-down speed is capped at 3.0 m/s by default
- If moving too fast, patches may be skipped between checks
-
Verify yard is started
- You must enter the yard marker and press
[E]to start - Patches only register after the yard is activated
- You must enter the yard marker and press
-
Check mower check interval
- Default:
Config.Mowing.mowerCheckInterval = 100ms - Lower values catch patches more reliably but use more CPU
- Default:
Obstacles Not Interactable
Symptoms:
- Obstacles visible but no target/prompt to pick up
- "Pick up" option missing
Solutions:
-
Check interaction mode
- If
Config.Obstacles.useTarget = true: requires third-eye target system - If
Config.Obstacles.useTarget = false: requires proximity withinpickupRadius
- If
-
Verify target system is working
- Test other target interactions in your server
- Restart your target resource
-
Check pickup radius
- Default:
Config.Obstacles.pickupRadius = 4.0meters - Must be on foot (not in mower)
- Default:
-
Highlight obstacles
- Hold
Hto outline remaining obstacles - Verify obstacles are actually present
- Hold
Crew Issues
Invite Not Working
Symptoms:
- "No eligible partner nearby" when inviting
- Invite button does nothing
Solutions:
-
Check partner requirements
- Partner must be within 10m (
Config.Crew.inviteRange) - Partner must NOT be clocked in at any office
- Partner must NOT be in another crew
- Partner must be within 10m (
-
Check you are clocked in
- You must be on an active shift to invite
-
Check you are not in a crew already
- Only one crew at a time
- Clock out and back in to reset
-
Rate limit
- Crew invites have a 5-second cooldown
- Wait and try again
Crew Sync Problems
Symptoms:
- Partner can't see patches being mowed
- Yard progress not syncing between crew members
Solutions:
-
Check server console
- Enable debug mode and look for crew-related messages
- Verify both players show as crew members
-
Both must be near the yard
- Yard rendering is proximity-based (250m broadcast range)
- Both players should be at the yard
-
Restart the resource
- Crew state is in-memory and resets on resource restart
- Both players will need to clock in again
Payment Issues
Incorrect Payment
Symptoms:
- Pay seems too low or too high
- Deductions don't match expectations
Solutions:
-
Review the payment formula
Subtotal = (basePay + speedBonus) × tierMultiplier × levelMultiplier × timerMultiplier Total = Subtotal + streakBonus + tip Net = Gross - vehicleDamage - gasFee - taxes -
Check level multiplier
- Your level affects pay via
Config.Levels[level].payMultiplier - Level 1 has 1.0x, Level 5 has 1.5x
- Your level affects pay via
-
Check timer penalty
- Exceeding the time limit applies a 15% penalty (
Config.Timer.expiredPenalty = 0.85)
- Exceeding the time limit applies a 15% penalty (
-
Check vehicle damage
- Van body damage below 950 health incurs charges at $0.50/hp
- Use
/mowerexportand check console for breakdown details
-
Enable phone for full breakdown
- Set
Config.usePhone = trueto receive a detailed shift summary via SMS
- Set
No Payout
Symptoms:
- Clock out but receive $0
- Shift summary shows no earnings
Solutions:
-
Complete at least one yard
- Payment is only earned for completed yards
- Cancelled or incomplete yards don't count
-
Check deductions
- If vehicle damage + gas + taxes exceed gross pay, net pay is $0
- The minimum net pay is $0 (never goes negative)
-
Check debug output
Config.Debug = true -- Look for: 'Player X completed yard Y, paid $Z'
HUD Issues
Overlay Not Showing
Symptoms:
- No timer or progress bar during mowing
- Blade hint not appearing
Solutions:
-
Check web build
- Verify
web/dist/exists with compiled assets - If missing, run:
cd oxide-landscapingjob/web && npm install && npm run build
- Verify
-
Check NUI
- Press
F8and check for JavaScript errors - Verify
fxmanifest.luaincludesui_page 'web/dist/index.html'
- Press
-
Verify yard is started
- HUD only appears after entering a yard marker and pressing
[E]
- HUD only appears after entering a yard marker and pressing
Timer Stuck
Symptoms:
- Timer shows but doesn't count down
- Timer frozen at a value
Solutions:
-
Check for client errors
- Press
F8and look for NUI errors - The timer is driven by the Vue component receiving
updateTimerevents
- Press
-
Restart the resource
- Timer state is client-side and resets on restart
Performance Issues
Too Many Objects
Symptoms:
- FPS drops when near yards
- Objects flickering or not loading
Solutions:
-
Reduce patch count per yard
- Large yards (150+ patches) create many local objects
- Keep yards under 50 patches for best performance
-
Check render distance
- Yard objects only spawn when players are within 250m
- Multiple active yards in the same area compound the load
-
Verify objects are non-networked
- The resource uses local (non-networked) objects to avoid entity limits
- If you see entity limit warnings, another resource may be conflicting
-
Reduce concurrent workers
Config.MaxSlotsPerLocation = 2 -- Fewer workers = fewer active yards
High Server CPU
Solutions:
-
Check mower detection interval
Config.Mowing.mowerCheckInterval = 200 -- 200ms instead of 100ms -
Reduce health check frequency
Config.Rumpo.healthCheckInterval = 2000 -- 2 sec instead of 1 Config.Mower.healthCheckInterval = 2000 -
Disable debug mode
Config.Debug = false -
Check rate limits
- The resource has built-in rate limiting for all callbacks
- If you see excessive callback spam in the console, check for exploits
Yard Editor Issues
Editor Not Opening
Symptoms:
/moweryardruns but no freecam appears- Still controlling player ped
Solutions:
-
Check permissions
- Requires
admin.landscapingjobACE permission - Add to your
server.cfg:add_ace group.admin admin.landscapingjob allow
- Requires
-
Check for active yard
- Only one yard can be in progress at a time
- Use
/mowercancelto clear any stuck state
-
Check client errors
- Press
F8for any error messages - The editor requires camera and entity permissions
- Press
Ghost Prop Not Visible
Symptoms:
- Editor opens but no preview prop at crosshair
- Can't see what you're placing
Solutions:
-
Check model loading
- The ghost prop model may fail to load
- Try cycling models with
E/Q
-
Check raycast
- The ghost follows a raycast from the camera to the ground
- Point at the ground, not the sky
- Maximum raycast distance: 100m (
Config.YardEditor.raycastDistance)
-
Check alpha
- Ghost prop alpha:
Config.YardEditor.ghostAlpha = 150 - Increase if too transparent to see
- Ghost prop alpha:
Debug Mode
Enable comprehensive logging:
-- config.lua
Config.Debug = true
Console output includes:
- Resource initialization
- Yard assignment and completion
- Payment calculations
- Crew formation and dissolution
- Vehicle destruction events
- Death handling
- Visual state changes
- Editor operations
Log prefix: [oxide-landscapingjob]
Disable in production to reduce console spam.
Getting Help
If issues persist:
- Enable debug mode and collect console output
- Check server console for errors during the issue
- Check client console (
F8) for JavaScript or NUI errors - Verify community_bridge is running and up to date
- Test with minimal resources to isolate conflicts