- Dependencies
- Recoil Tracker (Required)

This plugin helps you spot players with suspicious recoil control by monitoring their weapon spray accuracy. Using Recoil Tracker, each shot is recorded and evaluated based on how closely it matches the expected spray angle. When accuracy gets too high or patterns deviate too little, players are flagged. Admins can review detailed shot breakdowns via a built-in UI with shot-by-shot playback, body hit zones, and full spray metrics. Supports configurable thresholds, per-weapon blacklisting, and optional Discord alerts.
Not Proof of Cheating
Anti No Recoil shows you players who may be controlling recoil too well, but that doesn't mean they're cheating. Some players are just very good. The plugin provides data and context to help you investigate, not to make accusations. Always review manually and take player skill into account before taking action.Recoil Tracker Required
Anti No Recoil uses recoil patterns generated by the Recoil Tracker plugin to evaluate how accurate a player's spray is. These patterns are not built-in, you must manually generate and save recoil data for each weapon you want to track.If a weapon doesn't have a pattern saved in Recoil Tracker, this plugin will not evaluate or flag that weapon's spray patterns.
Generating Recoil Patterns
- Equip the weapon you want to record (no infinite ammo or recoil control).
- Crouch, aim, and shoot a full magazine without moving your mouse.
- Use the Recoil Tracker command:
/rt.record start
- Start recording./rt.record save
- Save the pattern after shooting.
oxide/data/Recoils
and used automatically by Anti No Recoil when comparing player recoil behavior.Permissions
antinorecoil.admin
- Allows access to review commands and UI.antinorecoil.ignore
- Exempts the player from being tracked or flagged.
Commands
anr.review <playerNameOrId>
- Starts a review session for a specific player.anr.track add <playerNameOrId>
- Adds a player to the whitelist if tracking is restricted.anr.track remove <playerNameOrId>
- Removes a player from the whitelist.anr.track list
- Shows the list of currently tracked players.
Configuration
JSON:
{
"Version": "1.0.0",
"Shots Required Before Recoil Analysis": 10,
"Accuracy Percentage Required To Flag As Suspicious (0 - 100)": 95.0,
"Allowed Deviation From Expected Recoil Pattern": 5.0,
"Ignore Hits Closer Than This Distance": 30.0,
"Count NPC Hits": false,
"Track Only Whitelisted Players": false,
"Weapon Blacklist (short‑names)": [
"pistol.python",
"pistol.semiauto",
"pistol.revolver",
"pistol.nailgun"
],
"Maximum Suspicious Records Stored Per Player": 10,
"Wipe Data On New Save": true,
"Auto Open Review Ui On New Violation": false,
"Discord Webhook Url (Leave blank to disable)": ""
}
Shots Required Before Recoil Analysis
- Minimum number of shots before evaluating accuracy and pattern.Accuracy Percentage Required To Flag As Suspicious
- Accuracy threshold that must be reached to consider a spray suspicious.Allowed Deviation From Expected Recoil Pattern
- How far a shot can deviate from the expected pattern before it's no longer considered a match.Ignore Hits Closer Than This Distance
- Minimum distance for a shot to be counted (helps reduce false flags from close-range fights).Count NPC Hits
- Whether hits on npcs should be considered valid when evaluating suspicious behavior.Track Only Whitelisted Players
- Only players explicitly added to the tracking list will be monitored.Weapon Blacklist
- List of weapon short names that will be excluded from tracking.Maximum Suspicious Records Stored Per Player
- How many violation records to store per player before older ones are deleted.Wipe Data On New Save
- If true, clears all stored violation data on new map save.Auto Open Review Ui On New Violation
- Automatically opens the review UI for admins when a new suspicious spray is recorded.Discord Webhook Url
- Discord Webhook to send alerts to; leave blank to disable integration.
Stored Data
JSON:
{
"Tracked Players": [
76561198000000000,
76561198000000001
]
}
Tracked Players
- List of Steam IDs currently whitelisted for tracking (used only ifTrack Only Whitelisted Players
is enabled).
AntiNoRecoil/76561198000000000.json
.
JSON:
{
"Player Id": 76561198000000000,
"Recoil Records": [
{
"Recorded At": "2024-06-01T14:33:22Z",
"Weapon Short Name": "rifle.ak",
"Shots Fired": 30,
"Shots Hit": 29,
"Accuracy Percent": 96.7,
"Grid": "J14",
"Shots": [
{
"Shot Index": 0,
"Actual Value": -0.3,
"Expected Value": -0.2,
"Was Hit": true,
"Hit Area": "Chest",
"Damage Dealt": 35.0,
"Hit Target Name": "EnemyPlayer",
"Hit Target Id": 76561198099999999,
"Distance": 41.5
}
]
}
]
}
Player Id
- The Steam ID of the player being tracked.Recoil Records
- List of individual violation entries detected for that player
Recoil Record
contains:Recorded At
- Timestamp (UTC) of when the suspicious spray was recorded.Weapon Short Name
- Internal short name of the weapon used (e.g. rifle.ak).Shots Fired
- Total number of shots in the spray.Shots Hit
- Number of shots that hit a target.Accuracy Percent
– Percentage of shots that landed during this spray.Grid
- Approximate grid location where the spray occurred.Shots
- Full shot-by-shot breakdown for the entire spray.
Shot
inside Shots
includes:Shot Index
- Order of the shot in the spray.Actual Value
- The actual recorded recoil value for the shot.Expected Value
- The expected recoil value based on weapon pattern.Was Hit
- Whether the shot hit something.Hit Area
- Body part hit (e.g. Head, Chest, etc.)Damage Dealt
- How much damage this shot caused.Hit Target Name
- Player name of the target hit (if applicable).Hit Target Id
- Steam ID of the target hit.Distance
- Distance in meters between shooter and target.