Skip to content

Enshrouded 1.0 is out! 🎉 Get 25% OFF your next Enshrouded Server today!

Garry's ModMods & Plugins

Hide Jobs in the DarkRP F4 Menu

Hide a DarkRP job from players who should not see it with customCheck or admin, hide a whole F4 heading, or disable a default job.

Updated 3 min read

DarkRP's F4 menu lists every job a player could take. Hiding a job from players who should not see it is done in the job's own definition, or by switching the job off altogether. This guide covers the options DarkRP itself provides. Checked against DarkRP 2.7.0 (GitHub source, July 2026), October 2026.

You need the full darkrpmodification addon for these edits, because jobs live in its jobs.lua. If it is not on the server yet, follow Install DarkRP modifications on GMod first. All files below are under garrysmod/addons/darkrpmodification/lua/, and you edit them in the File Manager.

Hide a job from players who cannot take it

Add a condition to the job in darkrp_customthings/jobs.lua. A job's customCheck is a function that gets the player and returns true or false. When it returns false, the player cannot take the job, and DarkRP's F4 menu does not show it to them by default. The same goes for a job that needs a different job first (NeedToChangeFrom) and for admin gating. This example keeps a job for the donator usergroup and admins:

TEAM_VIPGUARD = DarkRP.createJob("VIP Guard", {
    color = Color(255, 215, 0, 255),
    model = "models/player/Group03/Female_01.mdl",
    description = [[You guard the VIPs.]],
    weapons = {"weapon_fists"},
    command = "vipguard",
    max = 2,
    salary = 90,
    admin = 0,
    vote = false,
    hasLicense = false,

    customCheck = function(ply) return ply:GetUserGroup() == "donator" or ply:IsAdmin() end,
    CustomCheckFailMsg = "This job is for donators.",
})

The message in CustomCheckFailMsg appears when someone tries and fails to get the job. Usergroups come from your admin mod, so set them up with ULX and ULib admin commands for Garry's Mod first.

For a job only admins should see, you do not need a function: set admin = 1 for admins and above, or admin = 2 for superadmins only.

Hide a whole heading

A category is a heading in the F4 menu. In darkrp_customthings/categories.lua, a category can carry a canSee function, and the file's own comment describes it as deciding whether the player can see the category and everything in it:

DarkRP.createCategory{
    name = "Staff Jobs",
    categorises = "jobs",
    startExpanded = true,
    color = Color(0, 107, 0, 255),
    canSee = function(ply) return ply:IsAdmin() end,
    sortOrder = 100,
}

Point the jobs at it with category = "Staff Jobs". The category has to exist, or DarkRP reports an error.

Remove a default job completely

To drop one of DarkRP's built-in jobs, open darkrp_config/disabled_defaults.lua and set its entry in the jobs list to true, for example ["hobo"] = true. Its own comment warns that if you disable a job and remake it, things that rely on the job stop working, such as shipments and door groups.

Hidden or greyed out

Two settings in darkrp_config/settings.lua shape the F4 menu:

  • GM.Config.hideTeamUnbuyable is true by default. It is what hides items for a different job, or ones whose customCheck says no. If you set it to false, those jobs are greyed out instead of hidden.
  • GM.Config.hideNonBuyable is false by default. Leave it that way for this purpose: in DarkRP 2.7.0 setting it to true hides every job button in the F4 menu, including the ones a player can take.

A job that is full (its max is reached) is greyed out, not hidden, unless hideNonBuyable is true.

Apply the change

Save the file and restart the server from the dashboard, because DarkRP reads its files as it starts.

Tip

If your server uses an addon that replaces DarkRP's F4 menu, that addon draws its own job list. Check its documentation for hiding jobs.

Ready to launch your Garry's Mod server?

Aussie hardware, NVMe disks and DDoS protection, with the version and mod loader yours to change whenever you like.

See Garry's Mod plans