What goes wrong most often, what it actually means, and what to do about it. Most of these are configuration, not faults — every refusal in Garbage Job comes from a check the server makes on purpose, and the message or console line says which one. Turn on Config.Debug = true to have the script explain each step in the server console and in F8.
Installation and Startup#
"You have renamed the script!" and the server stops responding
The resource folder must be named exactly qs-garbagejob. A renamed copy halts the server on purpose. Rename the folder back, update its ensure line in server.cfg and restart.
"Could not verify the database schema"
The tables could not be created or checked; the MySQL error follows the message. Make sure oxmysql starts before the job and connects, and that the database user may CREATE and ALTER tables. Avoid XAMPP and similar development stacks on a live server. You can also import [sql]/qs-garbagejob.sql by hand with HeidiSQL.
"Could not register the ESX job rows"
The job's own tables are fine — only the jobs / job_grades rows could not be written, usually because those tables are missing or shaped differently on your ESX. Run the two job statements at the top of [sql]/qs-garbagejob.sql, adjusted to your columns.
The foreman never appears
The NPC is spawned through the framework bridge, so the framework was not detected: it starts after Garbage Job, or it is not es_extended, qb-core or qbx_core. Move its ensure above the job. If the F8 console says Ped model '…' never loaded, the model in Config.StartJob.ped.model is misspelled.
There is no Garbage Center blip
The blip is only drawn for players who may work — those with a job in Config.GarbageCollectorJob, or everybody with Config.RequireJob = false — and only with Config.EnableBlip = true. It appears the moment a player is given the job.
"qs-inventory not started, skipping garbagejob quest creation."
Harmless. It is printed when a player loads in on a server without qs-inventory, and only means the optional quest was not handed out.
Starting a Route#
"You don't have the garbage collector job"
The player's job is not in Config.GarbageCollectorJob. On QBCore and Qbox, check that garbage_collector exists in your shared/jobs.lua; if your server uses another job name, add that name to the list. In a crew, every member needs the job. Config.RequireJob = false removes the check.
"Parking lot is full"
Every bay in Config.VehicleSpawnCoords has a vehicle within four and a half metres — a player's car, or another crew's truck. Clear the yard, or add more bays on a server where several crews work at once.
A crew member does not have the required level
Every member is checked against the route's levelRequired, not only the leader. Pick a route the lowest-level member can take, or remove them from the crew. The message is NOT_ENOUGH_LEVEL_MEMBERS in the translation file.
"You are not the leader of the group"
Only the player who assembled the crew can start a route for it. A member who wants to work alone leaves the crew first.
"You are already on a mission"
The player — or one of the crew — still holds a route. Abandon it from the panel's footer, then start the new one. A route that ended any other way (paid, removed, disconnected) is cleared on its own.
The truck appears and disappears straight away
The truck has to exist before the crew can be given it, so it is parked first and the server decides second. When the server refuses the start — a level, a job, somebody already on a route — the truck is taken away again so the bay is free, and the notification says why.
During a Route#
No prompt at the container
The prompt shows within three metres of the stop's coordinates, so stand right at the container. With Config.Target = true there is no key prompt — use the target option, and check that Config.TargetScript names the target resource you actually run. On a route you wrote yourself, a stop placed in the street rather than on the bin puts the prompt in the street.
No keys for the truck
Your keys resource was not detected — it starts after the job, or it is not one of the supported ones. Move its ensure up, or put its calls in client/vehiclekeys/none.lua as shown in Integrations.
The truck has no fuel
Set Config.Fuel = true and point Config.FuelExport at your fuel resource. It must have a SetFuel export.
The outfit does not change, or the player's clothes do not come back
On ESX the outfit needs esx_skin and skinchanger; on QBCore and Qbox it uses the qb-clothing events. A clothing resource that does not answer them needs the calls in client/clothing.lua adapted — or set Config.Clothing = false.
The cleaning minigame is too hard
Lower threshold or patches, or raise duration, in Config.CleanDumpster. Pressing ESC gives up the attempt; the container stays dirty until it is cleaned.
The route ended on its own
A route is dropped when the player loses the job, when the crew's leader abandons it or removes them, when the leader hands the truck back, or when the player disconnects. A restart of the resource ends every route that is running.
Payouts#
"You did not finish the route, so there is nothing to collect"
The server pays only when it has seen every stop finished and the truck back within thirty metres of Config.DeliverTruckCoords. In a crew, the usual cause is the leader handing the truck back before this member had finished their own stops — each member works every stop. With Config.Debug on, the server console says whether the route was unfinished or the player was not at the depot.
The pay is lower than the route says
With Config.MissionPayout = 'split' the route's money and experience are divided between the crew. With qs-job-management running, the money is paid through it rather than into the player's cash.
"Rejected payout for source … no active route"
The truck was handed in for a route the server had already ended — abandoned, removed from the crew, or lost to a restart of the resource. Nothing was paid because nothing was running.
"Rejected payout for source … no longer holds the job"
The player changed job before handing the truck back. A route is only paid to somebody who still holds the job.
Crews#
"The player is too far away"
The invited player must be within Config.InviteDistance metres — 20 by default — measured by the server when the invitation is sent.
"Wait a few seconds before inviting that player again"
Invitations are limited to one every three seconds per sender and one every fifteen seconds per invited player, and a player cannot be sent a second invitation while the first is still unanswered — it lapses after a minute.
A member joined but did not get the route
They have to accept the invitation before the leader starts, and they must not be on a route of their own. If the leader closed the panel before starting, the crew was released — invite them again.
"The group is full"
A crew holds four players at most, leader included, or fewer if Config.MaxPartyMembers is lower.
"The group has been eliminated"
The leader left, abandoned or disconnected, or this player was removed from the crew.
Crew tiles show initials instead of a face
A portrait can only be taken of a player standing near you. Members out of range show their initials — nothing is wrong.
Loot, Levels and the Leaderboard#
"You found something, but your inventory is full" — every time
Look in the server console for Config.DropItems lists '…', which is not an item in your inventory. The item does not exist in your inventory: register it, or change the entry to an item you have.
Nobody ever finds anything
The chances are percentages per bag, and the defaults are low on purpose — 5, 3 and 1. Raise chance in Config.DropItems.
The leaderboard is empty, or a player is missing
The rankings refresh every Config.UpdateLeaderboard minutes, and a tab only lists players with experience in that period. Names are read from the users table on ESX and from players.charinfo on QBCore — a row whose character no longer exists is left out.
A daily or season prize did not arrive
Prizes go to the top three by experience — not by earnings — at 00:00 of the server's clock, which may not be the players' time zone. A winner who was offline is paid the next time they load in.
The Housing Tour is missing
It needs qs-housing running with at least one dump spot, and Config.HousingTask.enabled = true. Look for housing route built with … stops in the server console, and make sure its taskOrder is not used by another route.
Console Messages#
Message | Means |
|---|---|
| The folder is not named |
| The tables could not be created or checked — usually oxmysql or database permissions. |
| The ESX job could not be written. Add it by hand. |
| An older install was upgraded. Normal. |
| First start on ESX. Normal. |
| A loot entry names an item your inventory does not have. |
| A payout was asked for with no route assigned. |
| The player changed job before handing the truck back. |
| A route was started that the server's config does not have — usually two routes sharing a |
| The foreman's model name is wrong. |
|
|
| The client was handed a route it does not know — typically the Housing Tour before it reached that player. Rejoining fixes it. |
| The Housing Tour is ready. Normal. |
| The daily board was paid and reset. The season one prints the same with Season. Normal. |
|
|
Still stuck? Turn on
Config.Debug = true, reproduce the problem, and open a ticket with the server console, a screenshot of the F8 console, your framework and its version, and the resources you run for target, inventory and vehicle keys.



