Guide · Updated 14 Sep 2026

How to set up jobs on a RedM server: names, grades, duty and the scripts that use them

Jobs are the most-edited setting on a RedM server and the most common cause of "the script does nothing". A deputy who is not receiving witness reports, a doctor who cannot open the clinic stash, a badge that will not attach: nine times out of ten it is a job name spelt one way in the character and another way in a config. This guide explains how VORP jobs actually work, how to name them so every script agrees, and which scripts add the pieces the framework does not have.

How a VORP job works

A character has three fields: job, the internal name a script compares against; jobgrade, a number; and joblabel, the text players see. They live on the character row in the database and in memory while the player is online. Setting a job through the framework changes both. There is no central list of valid jobs: a job exists because a character has it and a config mentions it.

That last point is the whole problem. Nothing stops one script expecting sheriff while another expects Sheriff and your admin command sets sheriffdept. Most scripts compare the name exactly.

Naming rules that avoid every ticket

  1. Lowercase, no spaces, no department suffix. sheriff, marshal, doctor, rancher. Use the label for the pretty version.
  2. Grades start at 0 and go up. Recruit 0, deputy 1, senior deputy 2, sheriff 3. Scripts that check a minimum grade assume higher means more senior.
  3. One job per role, not one per rank. The rank is the grade. A separate sheriff_captain job means every script's job list needs one more entry.
  4. Write the list down once and paste it into every config that wants jobs. When a script's config says LawJobs = { 'sheriff', 'marshal' }, it means those exact strings.

Which scripts care, and what they need

ScriptWhat it readsWhere you set it
Witnesses (from $6.99/mo)Police and sheriff job names, rank filters, on-duty statusIts config: the jobs that receive reports and the minimum rank
Poggy Badges ($20)Job and grade, mapped to a badge image and propBadge sets in its config: a Deputy and a Sheriff on the same job carry different badges
Poggy Util (Free)Law jobs for the duty count; medical jobs come from poggy_coreConfig.DutyCount.LawJobs in poggy_util; MedicalJobs in poggy_core
Poggy Storage (Free)Job and minimum grade for shared stashesPer storage, so the evidence locker opens for sheriff grade 1 and up
Poggy Transform ($9.99)Optional job lock per transformableIts config: leave open, or gate an entry behind a job

Every Poggy script reads jobs through Poggy Core (Free), and which jobs count as law or medical is set once in poggy_core/config.lua rather than in code. Change it there and every script that asks "is this player law" gets the same answer, on VORP Core, RSG Core and QBCore RedM alike.

The same on RSG Core and QBCore RedM

RSG Core keeps a shared jobs table, RSGShared.Jobs, with a label and named grades for every job, and duty is part of the job itself. poggy_core reads that table, so a Poggy script asking for a player's job gets the same shape as on VORP, with the grade label filled in. Two things to know: setting a job that is not in the table is refused rather than invented, and RSG's stock law jobs are named by town (vallaw, rholaw, blklaw, strlaw, stdenlaw), so add them to LawJobs in poggy_core/config.lua or the duty count and witness alerts will not count them. QBCore RedM works the same way: a shared jobs table with named grades and duty on the job, read through poggy_core's QBR adapter, so the same config applies and the job names you write in LawJobs and MedicalJobs are the only thing to check.

On duty and off duty

vorp_core has no idea whether a deputy is on duty. That comes from vorp_police and vorp_medic, which set state bags and expose exports when a player clocks in. A script that filters alerts by duty needs one of those running; otherwise duty is unknown, and a well-behaved script treats unknown as off duty rather than alerting everyone with the job. Witnesses routes reports to on-duty law with rank filters for exactly this reason. If your deputies get no alerts, check they are clocked in before you check the config. On RSG Core duty is a field on the job, so the answer is always yes or no and the same scripts work without an extra resource.

More than one job per character

Stock VORP is one job per character, which on a small server means the deputy cannot also run the ranch. Poggy Multijob (Free) lets a character hold up to five jobs with one active at a time, switched with /multijob or /mj 2. It sets the active job through poggy_core, persisted to the framework's own job columns, so every other script sees it as normal on VORP Core, RSG Core or QBCore RedM. The admin panel is the reason to install it even on a one-job server: every player with jobs, online and offline, editable in place, with ready-made presets grouped by department that you apply in one click. Set the presets in its config to the exact names from your list above and hand out jobs without ever typing a name again.

Making rank visible

A job nobody can see is a line in a database. Poggy Badges ($20) pins a 3D badge prop to law, marshal and medical characters, mapped from job and grade, with a live editor to place it on the outfit and a pocket-watch animation to flash it at nearby players. Twenty-one badge images ship, and you can drop in your own. Job and grade come through poggy_core, so it works the same on VORP Core, RSG Core and QBCore RedM.

A starting job list

sheriff   0 Recruit, 1 Deputy, 2 Senior Deputy, 3 Sheriff
marshal   0 Deputy Marshal, 1 Marshal
doctor    0 Nurse, 1 Doctor, 2 Chief Physician
rancher   0 Hand, 1 Foreman, 2 Owner
unemployed 0

Paste the names into poggy_core's law and medical lists, Witnesses' alert jobs, Util's duty count, your Storage presets and Multijob's job presets, and every script on the server agrees on who is who.

Questions this guide answers

Where are jobs stored on a VORP server?

On the character row in the database: job, jobgrade and joblabel columns. Setting a job through the framework changes it in memory and on that row. There is no separate jobs table, so the job names your scripts expect are whatever you write in their configs.

Why does my law script not see my deputies?

Almost always a name mismatch. The script expects "sheriff" and your characters have "Sheriff" or "sheriffdept". Job names are compared exactly in most scripts, so pick one spelling and use it everywhere.

How does on-duty work on VORP?

vorp_core has no duty concept. Duty comes from vorp_police and vorp_medic through state bags and exports, so a script that filters by on-duty needs one of those running. Without them a script cannot tell, and the honest ones treat that as off duty. On RSG Core duty is part of the job itself, so it always has an answer.

Can a character have two jobs at once?

Not in stock VORP. Poggy Multijob adds up to five jobs per character with one active at a time, switched from a menu or with a command, saved to the database.

Scripts mentioned in this guide

Whole store →
Poggy Multijob — Free RedM Multijob Script
Free RedM Multijob Script

Poggy Multijob

Lets players hold up to five jobs and switch between them from a menu or with one command, with an admin panel for online and offline players.

PriceFree
Poggy Badges — RedM Badge Script
RedM Badge Script

Poggy Badges

Job-locked 3D badge props with a live position editor, saved presets, 21 badge images and a pocket-watch show animation for law and medical roles.

Price$20
Witnesses — RedM Witness System
RedM Witness System

Witnesses

NPC witnesses see crimes, flee the scene and report them to on-duty law, with blips and alerts routed to your police or sheriff jobs.

From$6.99

Best RedM Scripts for a New Server

Economy, law, activities, roleplay tools and admin utilities. What to run, what it costs, and where the free options are.

Read the guide →

VORP vs RSG Core vs QBCore for RedM

Script availability, structure and inventory for each framework, and what "runs on VORP, RSG and QBCore" actually means.

Read the guide →

How to Install a RedM Script

Download, resources folder, SQL, start order, config and the escrow licence check. Then the five common errors.

Read the guide →

Free RedM Scripts Worth Installing

Seven free scripts, what each one does, what it needs, and what it does not do.

Read the guide →

How to Update RedM Scripts Without Breaking Your Config

The manual routine that keeps your config safe, and the automatic route that removes the routine.

Read the guide →

RedM Server Economy: How to Balance Money, Jobs and Shops

Sources, sinks, player shops, auctions, jobs and a stipend. The model, the starting numbers and the scripts.

Read the guide →

How to Back Up a RedM Server

The database, resources, configs, licence files and txData. How to automate it, and how to test the restore.

Read the guide →

Cfx Escrow Explained for RedM Server Owners

Which files are encrypted, what you can still change, the licence file, and the error everyone hits once.

Read the guide →

RedM Server Performance: How to Reduce Lag

Measure first, then the usual causes: hot client loops, dead entities, unindexed queries and NPC systems tuned too high.

Read the guide →

Using Poggy Core in Your Own RedM Scripts

The free framework layer under your own resources: install, first script, menus, storage, jobs, standalone mode, diagnostics.

Read the guide →
Return to Store