Features Guide

Current behavior reference for oxide-landscapingjob.

Current behavior reference for oxide-landscapingjob.


Shift Flow

A typical shift looks like this:

  1. Walk up to the manager NPC at the landscaping office.
  2. Open the shift menu and clock in.
  3. Get assigned a set of yards — higher-level workers get more yards per shift.
  4. Drive the company van to each yard.
  5. Start the yard, unload the mower, cut all the grass, and pick up any junk lying around.
  6. Return to the office and clock out to get paid.

Each office only has room for a limited number of workers at once (Config.MaxSlotsPerLocation, default 3). If the office is full, players have to wait for a slot to open.


Two menu modes are supported:

  • Config.menuStyle = 'nui': the full custom menu (default)
  • Config.menuStyle = 'menu': a simple text menu for servers that prefer something lightweight

The full menu shows:

  • the player's level, title, and progress toward the next level
  • crew status and a field to invite a partner by their server ID
  • the uniform on/off button (when uniforms are enabled)
  • a nice camera shot of the office while the menu is open (when menuCamera is set on the office)

The simple text menu offers the same core actions — clock in/out, crew invite, and uniform — just without the visuals.

While a yard is in progress, both menus also offer Cancel Current Task (see Cancelling the Current Yard).


Progression

Progression is stored in job_progression with job = 'landscaping'.

Tracked values:

  • level
  • total completed yards
  • daily streak
  • complaints
  • timeout state

Levels:

LevelTitleRequired YardsMax Yards
1Trainee03
2Groundskeeper124
3Landscaper355
4Senior Landscaper705
5Foreman1306

Each level improves:

  • pay multiplier
  • mower speed multiplier
  • tip chance
  • max yards per shift

Payment

The resource calculates per-yard earnings and then builds a shift payout.

Key factors:

  • base pay
  • yard size multiplier
  • level multiplier
  • speed bonus
  • timer penalty
  • streak bonus
  • random tip
  • gas fee
  • tax
  • van damage deduction

Current money behavior:

  • net shift payout is deposited to Config.Payment.payoutAccount (default 'bank')
  • company vehicle destruction fine is removed from Config.Payment.fineAccount (default 'cash')

Pay is settled when the shift ends. Besides a clock-out, that includes the resource stopping or restarting: every running shift is paid what a clock-out would pay, and the pay summary is sent. A shift lost to going down on the job pays nothing, also when the player quits before respawning.

A player who disconnects, logs out or switches character on shift isn't paid at that moment, because their character may already be gone. What the shift earned is worked out as a clock-out would, kept in the database (the shared job_pending_payouts table) and paid about 3 seconds after that character next loads in, with the notification "You were paid $X still owed from your last landscaping shift." It is paid once, even if the server restarts in between. If the framework refuses a payment, it is kept and tried again at the next login. If the database is unreachable, the job keeps the pay and saves it again every minute, or pays it at the player's next login if they come back first.

At clock-out, the player always gets an on-screen notification with their net pay. With Config.usePhone = true, the full breakdown also arrives on their phone from the landscaping office: yards completed, the pay for each yard, any co-op bonus, gross pay, each deduction, and net pay. It comes as a text on phones that support texts from a service (with o-link 1.11.0 or newer) and as mail on the rest — see Phone Shift Messages for which phones get which. Config.shiftSummary currently has no effect on this.

Oxide Phone's Gigs app. If your server runs Oxide Phone, its Gigs app shows this job: the offices and whether each one has room, the player's current shift (the yard they're mowing, how many yards are done, their crew role, and their pay so far), and their level. While a player carries an Oxide Phone and the Gigs app is turned on, the job's shift messages show up there as Gigs notifications instead of texts. The pay summary is the exception: it always arrives as a text or mail. Nothing needs setting up beyond running Oxide Phone and this job.


Vehicles and Mowing

The job uses:

  • a bison3 company van
  • a mower vehicle for yard work

Key behaviors:

  • the mower rides on the van's roof rack until it is unloaded at a yard
  • the van spawns with a full tank and the player automatically gets the keys (both through o-link, so they work with your fuel and key systems)
  • blades toggle with G
  • the mower is slow and sluggish while the blades are down — raise them to drive normally
  • grass is cut by driving the mower over the patches
  • running over obstacles damages the mower's engine

If xsound is installed, mower audio includes:

  • blade toggle
  • mower loop
  • engine failure

Yard System

Each yard has:

  • a center point
  • patch definitions
  • optional obstacle definitions

Yard size tiers are based on patch count:

  • small: 1-50
  • medium: 51-149
  • large: 150+

Players:

  • drive to the yard
  • start it at the marker
  • mow all patches
  • clear remaining obstacles

Assigned yards also get:

  • map blips
  • floating waypoint indicators if enabled

While a yard is running, an on-screen overlay shows the timer and how much of the yard is done, with a reminder to lower or raise the blades while the player is on the mower.

With Oxide HUD

On a server running Oxide HUD, players can move the yard overlay and the tutorial hints in the /hud editor, or switch them off. Both hide with the HUD (pause menu, character select, death) and use the server's accent colour (see Config.UseHudAccent in the Configuration Guide). The HUD also hides while an admin is in the visual yard editor. This needs o-link 1.12.1 or newer. Without Oxide HUD everything stays where it is.


Cancelling the Current Yard

A yard can go wrong — the mower ends up somewhere it can't be driven out of, or the player simply needs to stop. Rather than clocking out and ending the shift, they can drop the yard they're on and keep working.

Where players find it

  • Cancel Current Task in the shift menu. It only shows while a yard is actually in progress, and in a crew only the leader sees it.
  • Cancel Current Task on the company van, using the interaction eye.

Both ask for confirmation first, so nobody cancels by accident.

What cancelling does

  • Only the current yard is affected. It's forfeited — it can't be restarted this shift and it won't pay.
  • The rest of the assigned yards carry on as normal. The player drives to the next one.
  • If the cancelled yard was the last one, the player is pointed back to the office to clock out.
  • The player stays clocked in, and the van and mower stay where they are.
  • No fine and no complaint. Cancelling isn't treated as a failure.

In a crew

Only the crew leader can cancel; a crew member is told "Only the crew leader can cancel the task". When the leader cancels, the yard clears for both players. A crew member who wants out of the shift entirely clocks out as normal.

The wait afterwards

After cancelling, there's a short wait before the next yard can be started. The default is 60 seconds, set by Config.Cancel.cooldownSeconds. In a crew both members get the wait, since either of them can start the next yard. Change it in /landscaping settings (Tasks & Dispatch → Cancelling a yard, Advanced view); 0 means no wait at all.


Obstacles

Obstacle interaction is controlled by Config.Obstacles.

Current shipped behavior:

  • useTarget = true by default
  • on-foot pickup uses a progress bar
  • holding H highlights remaining obstacles
  • mower contact causes engine damage

Crews

Crews support up to two players.

Current flow:

  • the leader opens the menu
  • enters a target server ID
  • the server validates range and shift state
  • the invited player can accept or decline

Crew behavior includes:

  • shared yards
  • shared vehicle flow
  • shared completion progress
  • each member paid on their own level: every yard pays each of them with their own level multiplier, tip chance and streak bonus, and each is told their own pay for it
  • co-op bonus via Config.Crew.coopBonusPercent (15%), worked out from each member's own pay

A partner is paid only for the yards done since they joined. When the leader leaves, the partner takes over the yards and carries on, still without being paid for the leader's yards from before they joined. Someone who leaves the crew and rejoins is not paid for the same yards twice.

The resource also handles crew transfer and cleanup when a member clocks out, unloads, dies, or disconnects.


Uniforms

Uniform support is optional and controlled by Config.uniformsEnabled.

When enabled:

  • players can equip or remove a landscaping uniform while clocked in
  • the resource snapshots current clothing before applying the outfit
  • uniforms revert on normal clock-out
  • uniforms also revert on player unload while on shift

Uniform application and restoration use olink.clothing.


Builder Tooling

The resource ships with an in-game builder for:

  • office creation
  • yard creation
  • patch placement
  • obstacle placement
  • export / import / listing / removal

New offices are easiest to add in /landscaping settings, where they go live as soon as you save; an office captured with the builder only reaches a running install through the config file and Reset to default on Depots. Yards are pasted into shared/config/locations.lua. See the Yard Building Guide.

The visual editor supports:

  • free camera movement
  • patch and obstacle modes
  • model cycling
  • precision rotation and height adjustment
  • undo
  • export of merged session data

Tutorials

The resource ships with a one-time onboarding hint system. Each tutorial fires the first time a player encounters a specific situation: first clock-in, first mower unload, first blades lowered, first obstacle, first yard completion, first timer expiry, first vehicle damage, first mower damage, first level-up, and first crew.

Player commands:

  • /landscapingtutorials (or /landscaping tutorials) — toggle tutorials on/off for the player
  • /landscapingtutorialreset (or /landscaping tutorialreset) — re-show all tutorials from scratch

Tutorial content is defined in shared/config/tutorials.lua. See Configuration → Tutorials.


Player Keybinds

Default KeyCommandAction
Glandscaping_bladesToggle mower blades while seated in the mower during a shift
H (hold)+landscaping_highlightHighlight remaining obstacles in the active yard; otherwise shows yard waypoints

Both keys are registered through RegisterKeyMapping and can be rebound from the FiveM keybinds menu. Defaults come from Config.Mower.blades.key and Config.Obstacles.highlight.key.


Notifications and Lifecycle

All player-facing UI (notifications, help text, the interaction eye, progress bars, phone texts and mail) goes through o-link, so it automatically matches whatever systems your server already uses.

The job also cleans up after players automatically: if someone switches character or disconnects mid-shift, their shift ends, their yards are freed up for other workers, and any uniform is removed. What the shift earned is paid at their next login (see Payment).


Next Steps