The Console Loops With A Rename Error#
[ERROR] You have renamed the script!Cause: the resource folder was renamed. The resource checks its own name on startup.
Solution: rename the folder back to qs-scoreboard. Until you do, the console keeps printing the error and the server thread stays frozen.
It Doesn't Open With The Key#
Cause: ox_lib is not started, or the keybind is already taken by another resource.
Solution: make sure ensure ox_lib comes before the scoreboard. If the key is taken, players can rebind it in FiveM's key settings, or you can switch to a native control:
Config.ModifyKey = true
Config.NewKeyNumber = 38 -- 38 = EEvery Job Shows "Unknown"#
Cause: the job is not listed in Config.DisplayablePlayerJobs.
Solution: add it to that list. Anything not listed falls back to Config.DefaultJobName.
The Progress Panel Is Empty#
Cause: levels are disabled, the job resources are stopped, or the player has no records in their tables.
Solution: check all three:
Config.ShowJobLevels = trueThe job resource is actually started — stopped resources are skipped entirely
The player has a row in that job's table
The XP Bar Shows A Wrong Percentage#
Cause: baseExperience and growthFactor don't match the job script's own curve.
Solution: sync Config.JobsProgress with each job's Config.LevelExperience. The level will be correct either way — only the bar percentage goes wrong.
The On-Duty Count Is Always 0#
Cause: the export doesn't exist, or its resource is stopped.
Solution: check the onDutyExport entry in Config.DisplayedJobs. The call is wrapped in pcall, so a missing export is silently swallowed and returns 0 — it will never throw an error to tell you.
Set it to nil to simply count every online player with that job instead.
Everyone Appears As "Off Duty"#
Cause: playerDutyExport = false for that job, which forces the Off Duty badge.
Solution: set it to nil to use Config.DefaultDuty, or point it at the real export.
Blank Screen Or A Red Overlay With A Stack Trace#
Cause: a JavaScript error in the interface.
Solution: read the overlay — the resource paints uncaught errors and React render failures on screen with their stack trace, since CEF has no accessible devtools.
Heists Never Unlock#
Cause: the police count is not reaching minimumPolice.
Solution: check that your police job is listed in Config.PoliceJobNames, or point Config.CurrentPoliceExport at your own count.
The scoreboard only displays heist availability — it enforces nothing. Your heist scripts still need their own police checks.



