Guide · Updated 9 Nov 2026
How to make NPC witnesses report crimes on a RedM server
A RedM witness script makes crime have consequences: when a player commits a crime in town, a nearby NPC sees it, runs and tries to report it, and if that NPC gets away the law is told where it happened. It also gives criminals something to do about it, because a witness who is stopped in time reports nothing. To add one you need a script that spots crimes, picks a witness and sends alerts only to lawmen who are on duty. This guide covers how that works, what to switch on and what to do when no lawman is online.
Why witnesses change crime roleplay
- Crime gets a cost in the moment. The player has seconds to decide whether to chase the witness or ride away.
- Lawmen get real calls. A law job with nothing to respond to is a law job players quit.
- Towns feel watched. Shooting in Saint Denis is a different decision from shooting on an empty trail.
- Nobody has to report themselves. Without witnesses, the law only knows what other players choose to tell it.
Witnesses are one piece of the law setup. How to set up law enforcement on a RedM server covers the rest: duty, badges, evidence and jail.
The free way: reports from players
You can start with a rule and no script. Ask players to report crimes in character, by telegram or by riding to the sheriff, and ask criminals to play along when someone sees them. It costs nothing, and many servers run this way.
The limit is that it depends on another player being there and wanting to tell. On a quiet night a shoot-out on Main Street goes unnoticed. Scripts that only flash an alert on gunshots are a step up, but the criminal has no way to stop the alert, so there is no chase.
How a RedM witness script works
Witnesses (from $7.99/mo) goes through these steps for each crime:
- A crime happens inside a town. The script rolls that crime's chance.
- An NPC within 40 metres becomes a witness. They flinch, point and shout, or put their hands up if the player is armed, then run. Up to 3 witnesses can be fleeing at once.
- The player who was seen gets the witness on their map. The blip goes from green to yellow, orange and red as the witness gets closer to reporting.
- The witness has to get 20 metres further away than where they started and stay clear for 8 seconds.
- If they make it, law gets an alert saying what happened, where and at what in-game time, with a blip, an area circle and a waypoint. If every witness is stopped, nobody hears about it.
NPCs that belong to other scripts, such as shopkeepers and job NPCs, are left alone. Witnesses are always NPCs, but crimes against players count too.
Which crimes should witnesses notice?
Each crime has its own switch and chance in Config.Checks:
| Crime | On by default | Chance |
|---|---|---|
| Shooting, or aiming a gun | Yes | 100% |
| Riding with a hogtied hostage | Yes | 90% |
| Stealing a horse or wagon | Yes | 80% |
| Trampling | No | 100% |
| Lassoing | No | 75% |
| Looting a body | No | 75% |
| Poaching | No | 75% |
| Threatening with a weapon | No | 50% |
| Fist fights and melee | No | 30% |
Start with the defaults. They are the crimes a roleplay server almost always wants the law to hear about. Add the others one at a time, and be careful with melee: a bar brawl is often the scene players wanted, and a lawman arriving every time ends it.
A lasso, camera, binoculars, lantern or fishing rod in the hand does not count as aiming a weapon. If another item sets witnesses off, add it to Config.NonThreateningAimItems; /getmyweaponhash_cl shows the name the script sees.
Setting up alerts for on-duty law
Most problems with a witness script are in these three settings:
Config.PoliceJobList: your law jobs, exact and case-sensitive. It ships with police, sheriff and marshal.Config.PoliceJobRanks: the grades that get alerts, 0 to 5 by default. If your grades start at 1, or go above 5, add them.Config.Duty.Preset: who says a lawman is on duty."auto"finds outsider_policeman, vorp_police, rsg-lawman, qbr-policejob or bcc-law, then falls back to your framework.
The same crime by the same player alerts at most once a minute (Config.AlertCooldown, 60 seconds), so one shoot-out does not bury your law players. Lawmen on duty are immune by default, so a sheriff firing in the line of duty does not start a witness.
To test it, /witnessduty shows the duty script in use and each lawman's state, and /witnesstestalert puts one real alert on your own screen and tells nobody else. Both need their ACE permission or the server console. /witnesscheck, open to everyone, prints every check to F8 for the spot where you are standing.
Where should witnesses watch?
By default only inside 11 towns, from Saint Denis (a 450 metre radius) to Thieves Landing (80 metres). Sisika, Van Horn and Wapiti are blacklisted, and a blacklisted area always wins. That suits most servers: the wilderness stays lawless, and outlaws have somewhere to go.
Set Config.EnforceTownLimits to false to watch everywhere. To add a town, open the Towns list in /poggy, stand in the middle and use Use my position. Blacklist your event areas and anywhere a job script runs a lot of NPCs.
What if no lawman is online? The NPC posse
Off by default, and turned on with Config.LawResponse.Enabled in config/npc.lua. With PlayerLEOPriority on, as it ships, the posse rides out only while no lawman is on duty, so it never takes a call away from a player. Only shooting and horse or wagon theft bring it until you add more.
| Severity | Officers | On horseback | Jail time |
|---|---|---|---|
| Low | 2 to 3 | 25% | 10 min |
| Medium (horse theft) | 3 to 5 | 50% | 20 min |
| High (shooting) | 5 to 6 | 75% | 30 min |
- Officers appear at least 70 metres away, out of the player's sight, and hunt for at most 5 minutes.
- Within about 25 metres they call out and hold the player at gunpoint for a few seconds, which is the chance to surrender.
- They fight only the wanted player, never bystanders.
- Getting more than 100 metres from every officer for about 10 seconds counts as escaping.
Two things catch owners out. The posse cannot spawn with sv_entityLockdown set to strict or relaxed. And an arrest needs a jail: with none set, the player is let go with a warning. You can point it at your jail script's server export, or turn on the built-in Sisika jail, which is off by default so it never fights a jail script you already run.
Installing it
Witnesses (from $7.99/mo) runs on VORP Core, RSG Core and QBCore RedM. It needs Poggy Core (Free) 0.14.0 or newer and PolyZone, and uses no database tables. Add it to server.cfg after both:
ensure poggy_core
ensure PolyZone
ensure poggy_witnesses
Its config files and translations (English, Spanish and French) are open, and every setting can be changed in game under /poggy. Other scripts can raise alerts through its PoliceAlert server export, which suits robberies. If your law players want to look the part as well, Poggy Badges ($19.99) is covered in the sheriff badge guide. Step by step: how to install a RedM script.






