Using Garbage Job: the job panel, the shipped routes, collecting bags with the garbage truck, the dumpster cleaning minigame, crews, crew payouts, levels, loot, leaderboards and custom routes.
Everything starts at the foreman — Sal Moretti by default — standing in the Garbage Center yard under a floating marker. Press E beside him, or select him with your target, and the camera cuts to him while the panel opens on the right half of the screen. He gestures as if mid-sentence, and your own character is hidden from the shot while you talk.
Part
What it is for
Foreman's card
His name and greeting, from Config.PedName and Config.PedGreeting. Leave either empty to hide it.
Missions
Every route with its picture, the level it needs, the recommended crew, the pay, the experience and the number of stops.
Garbage Group
Your crew: a portrait of each member, a field to invite a player by server ID, and a remove button for the leader.
Level
Your level, your experience towards the next one, and the level bonus.
Statistics
The all-time, season and daily leaderboards, the prizes, the last winners and the time left before each reset.
Guide
A step-by-step walkthrough of the job for new collectors, with tips.
Footer
Start Mission — or, while a route is running, Abandon mission with a confirmation.
Anyone may open the panel to read the guide and the statistics; the job is checked when a route is started. The panel also opens in full during a route, so a crew can check the rankings without giving anything up.
The guide is written entirely in config/translations.lua: GUIDE_INTRO, GUIDE_STEP_1 to GUIDE_STEP_6 and GUIDE_TIP_1 to GUIDE_TIP_4. Reword them for your server, or delete a key to drop that line.
Seven routes ship in Config.Tasks, all leaving from the Garbage Center, plus an eighth built from your properties when qs-housing is running:
Route
Level
Stops
Pay
Experience
Beginner Route
1
20
$400
300
Neighborhood Pickup
2
9
$600
500
Urban Collection
3
9
$600
500
Citywide Cleanup
4
10
$800
700
Industrial Route
5
11
$1,000
800
Advanced Cleanup
6
12
$1,200
1,100
Metropolitan Circuit
6
13
$1,350
1,200
Housing Tour
1
10, at random
$750
600
Most routes ship with extra stops commented out in the config — uncomment them to make a route longer. Pay and experience are per collector with the default payout mode; see How a crew is paid below.
Pick a route and press Start Mission. The server checks the job and the level of every crew member, and that nobody is already on a route. Then a truck is parked in the first free bay of the yard, its keys are handed over, the crew changes into the work outfit and the route tracker opens.
Drive to the stop
The current stop is a blip with a GPS route. The tracker counts the stops done out of the route's total.
Pull the bags out
Each container holds a random number of bags — 1 to 3 by default, set by Config.GarbageBagsRequired. Press E at the container to pull one out; the prompt shows how many you have taken and how many there are.
Throw them into the truck
Carry the bag to the back of the truck and press E. Every bag thrown in is one loot roll. When the container's last bag is in, the stop is done and the GPS moves on — unless the container was left filthy and needs cleaning first.
Hand the truck back
After the last stop the GPS points back to the depot, Config.DeliverTruckCoords. Press E there: the truck is taken back, the outfit comes off and the route is paid.
Key
Does
E
Talk to the foreman, pull a bag, throw it into the truck, start cleaning a container, hand the truck back. Change it with Config.InteractKey (a FiveM control ID).
Left mouse button
Wipe the rag in the cleaning minigame.
ESC
Give up the cleaning minigame. The container stays dirty.
With Config.Target = true the same actions become target options — on the foreman, on the container, on the truck and on a dirty container — instead of keypresses. The depot hand-in always stays a keypress.
The reward is paid with the truck, not stop by stop. Abandoning from the panel, losing the job mid-route or disconnecting ends the route with nothing paid, and the truck is removed. A route pays only when the server has seen every one of its stops done and the truck back at the depot.
After a container is emptied there is a Config.CleanDumpsterChance percent chance — 20 by default — that it was left filthy. The route waits for it: walk back to the container and press E, and the camera closes in while the character sprays it down. Hold left click and wipe the rag over the bin until enough of the grime is gone. Caked-on patches are darker and need several passes.
lua
Config.CleanDumpsterChance = 20-- % chance a container needs cleaning
Config.CleanDumpster = {
duration = 45000, -- time limit in ms; running out means a retry
threshold = 0.90, -- share of the grime that must come off (0-1)
patches = 5, -- caked-on patches that need several passes
bonusExperience = 15, -- XP for a cleaned container, 0 disables it
}
Running out of time, or pressing ESC, leaves the container dirty and the route where it was — come back and clean it again. A cleaned container pays its bonus once, to the collector who cleaned it. Set Config.CleanDumpsterChance = 0 to switch the minigame off.
Config.Particles controls the bursts of water that puff off the container while it is scrubbed — the effect, how many, how often, their size and where they land. They are cosmetic only: Enabled = false removes them and changes nothing else.
Every bag thrown into the truck is one roll of Config.DropItems. Each entry is rolled on its own, so one lucky bag can turn up more than one item.
Field
Meaning
name
The item, exactly as your inventory names it.
chance
Percent chance per bag, from 0 to 100.
minAmount / maxAmount
How many are given when it comes up, picked at random in that range.
The roll is made on the server — the player's client only reports that a bag was thrown — and it only counts from the stop being worked, a few seconds apart, and never more times than the route has bags. A player with a full inventory is told they found something they had no room for, and the item is lost.
A route can be worked alone or by a crew of up to four, leader included. Config.MaxPartyMembers sets the number of slots the panel draws: lower it for smaller crews — four is the most the server accepts.
Step
How it works
Inviting
In the Garbage Group card, type the other player's server ID and press Invite. They must be within Config.InviteDistance metres (20) and not on a route. They see a card with your name and accept or decline it. An invitation lapses after a minute, and the same player can only be asked once every fifteen seconds.
Leading
The player who invites is the leader. Only the leader starts a route — for the whole crew — and only the leader hands the truck back. Every member must hold the job and the route's level.
Working
The whole crew rides in the leader's truck and gets the route, the tracker and the outfit. Each member works every stop for themselves: their own bags, their own progress and their own pay.
Handing in
When the leader returns the truck, the route ends for everyone at once and each member who finished all of their stops is paid, wherever they are standing.
Removing
The leader can remove a member from the panel, and that member's route ends. If the leader abandons, the route ends for the whole crew. Closing the panel before a route starts releases a crew the leader assembled.
The route's full money and experience, each. A crew of four on a $1,000 route costs the server $4,000.
'split'
The money and the experience divided between the members still in the crew when the route is paid. Shares round down and never fall below 1.
What a route asks of each collector does not change with the size of the crew, so 'members' is the generous setting. It is the default so that updating does not move an existing server's economy.
With qs-party running, a crew can also come from your party system — see Integrations.
Experience comes from finishing routes and from cleaning containers. The amount needed for each level grows by GrowthFactor every level, so levelling never caps:
lua
Config.LevelExperience = {
BaseExperience = 1000, -- experience to clear level 1
GrowthFactor = 1.1, -- each level needs 10% more than the last
TipPerLevel = 0.01, -- level bonus shown on the panel (1% per level)
}
-- experience to clear level N = BaseExperience * GrowthFactor ^ (N - 1)
Level
Experience to clear it
Total experience to reach it
1
1,000
0
2
1,100
1,000
3
1,210
2,100
4
1,331
3,310
5
1,464
4,641
6
1,610
6,105
Every route has a levelRequired. The panel shows it on the card, and the server checks every crew member against it when the route starts. A level-up is announced the moment it happens, and the panel's experience bar follows it live.
The Statistics button opens three rankings, each ordered by experience with the earnings beside it, a search box, and your own row highlighted:
Tab
Ranks by
Resets and pays
All-Time Garbage
Lifetime experience
Never
Top Garbage Season
Experience this month
00:00 server time on the 1st of each month
Top Garbage Daily
Experience today
00:00 server time, every day
At each reset the top three are paid in cash from Config.LeaderBoardRewards and shown as the last winners, with a countdown to the next reset. A winner who is offline is paid the moment they next load in, and a reset the server slept through is caught up on its next start.
lua
Config.EnableLeaderboard = true-- false hides the Statistics button
Config.UpdateLeaderboard = 10-- minutes between refreshes of the rankings (1-59)
Config.LeaderBoardRewards = {
Daily = { [1] = 500, [2] = 350, [3] = 200 },
Season = { [1] = 5000, [2] = 3500, [3] = 2000 },
}
Only players with experience in that period appear in a tab, under their character's name. The rankings refresh on a timer, so a route just finished can take up to Config.UpdateLeaderboard minutes to show.
With qs-housing running, an extra route appears in the panel: the Housing Tour, whose stops are picked at random from the properties qs-housing knows about. It is built when either resource starts, and the same tour stands for everybody until the next restart.
lua
Config.HousingTask = {
enabled = true, -- needs qs-housing running
taskOrder = 8, -- unique, higher than every route in Config.Tasks
name = "Housing Tour",
img = "garbage_2.png",
description = "Collect garbage from residential housing areas across the city.",
recommendedPlayers = { 1, 4 },
levelRequired = 1,
experience = 600,
money = 750,
spotsCount = 10, -- how many random properties to visit
}
Set enabled = false to keep it out of the panel even with qs-housing installed.
Config.VehicleModel — trash2, the Trashmaster — is parked at the first bay in Config.VehicleSpawnCoords with no vehicle within four and a half metres of it. When every bay is taken the start is refused with Parking lot is full, so add bays on a busy server. Config.SpawnInsideVehicle = true seats the leader straight at the wheel, and Config.Fuel fills the tank. The truck belongs to the route: it is removed when the route is handed in or abandoned.
Starting a route dresses the crew in the work outfit; finishing or abandoning it puts their own clothes back. The outfit is set at the top of client/clothing.lua, one for male and one for female characters, with the usual clothing component numbers:
true draws [E] Pick up garbage in the world, above the spot. false shows the same prompts as a key hint on screen instead.
Config.PlayerNameSource
The name shown for crew members: 'character' (first and last name), 'cfx' (the FiveM account name) or 'both'. The FiveM name fills in whenever there is no character name.
Config.CurrencyPosition
"prefix" for $500, "suffix" for 500 zł. The symbol itself is CURRENCY_TYPE in the translation file.
Config.DefaultNotifications
The script's own notifications, or yours — see Integrations.
Everything that pays is decided on the server, from its own records — a modified client can neither change what the job pays nor claim a route it did not work:
Check
What it prevents
Stops are counted on the server one at a time, in order, and only from near that stop.
Claiming a route without driving it.
The truck has to be back at the depot when the route is paid.
Cashing a route in from anywhere on the map.
The reward is read from the server's copy of the route it assigned.
A client naming its own pay or experience.
The job is checked again when the route is paid.
Taking a route, switching jobs and being paid for both.
Loot is rolled on the server, from the stop being worked, with a cooldown and a cap per route.
Farming items.
The cleaning bonus is paid once per stop, at that stop.
Farming experience — and with it the leaderboard prizes.
Only the crew leader starts or ends a route, and invitations are rate-limited per sender and per invited player.
Pulling strangers into a route, or flooding somebody's screen with invitations.
It is also why a route that was not really finished pays nothing: when that happens, Common Errors explains which check it failed.