Oxide Landscaping
Landscaping job system for FiveM servers.
Overview
oxide-landscapingjob is a landscaping gig job. Players clock in at a landscaping office, receive a company vehicle and a set of assigned yards, then complete those yards by unloading a mower, cutting grass patches, clearing obstacles, and returning to the office for payout.
The current resource is built around o-link for framework-facing integrations, uses oxmysql for persistent progression data, and optionally uses xsound for 3D mower audio.
Technical
| Dependency | Required | Purpose |
|---|---|---|
o-link | Yes | Shared integration layer for character, money, clothing, phone, target, menu, fuel, vehicle keys, notifications, and callbacks |
ox_lib | Yes | Locale loading, input dialogs, and shared utility support |
oxmysql | Yes | Persistent progression storage |
xsound | No | 3D mower audio; the job still works without it |
Database: Unified job_progression table with one row per char_id and job, where this resource stores progression under the landscaping job key.
Frontend: Vue 3 + Vite + Tailwind CSS for the default shift menu and in-shift HUD overlay.
Features
- 5-level progression with persistent yard count, streaks, complaints, and timeout state
- Company van plus ride-on mower workflow with loading, unloading, repair, and breakdown handling
- Yard timers, size tiers, speed bonuses, streak bonuses, tips, taxes, gas fees, and vehicle damage deductions
- Two-player crews with shared yards, shared vehicle flow, and an ID-based invite system
- Configurable default NUI shift menu or
o-linkcontext menu fallback - Optional work uniforms with automatic reversion on clock-out and character unload
- In-game yard builder with export, import, listing, and removal commands
Current Runtime Notes
- Shift payouts are deposited to the account set in
Config.Payment.payoutAccount(defaultbank) througholink.money.Add(...). - Company vehicle destruction fines are taken from the account set in
Config.Payment.fineAccount(defaultcash) througholink.money.Remove(...). - When
Config.usePhone = true, the resource sends shift emails througholink.phone.SendEmail(...). - The builder exports merged yard and location data to
exported_locations.luafor reuse or manual merging.