Documentation
Pixel Anticheat Docs
Everything you need to install, configure, and operate Pixel Anticheat on your FiveM server.
Getting Started
Requirements
Pixel Anticheat requires: • FiveM server (FXServer) — build 6683 or newer • A valid anticheat license (obtainable from the dashboard after purchasing a plan) • (Optional but strongly recommended) screenshot-basic resource — enables screenshot evidence & OCR detection No external database resource is required. Pixel Anticheat manages its own internal data and does not depend on oxmysql or any other database bridge.
Installation — step by step
1. Purchase a plan and redeem your activation code from the dashboard → Redeem page.
2. Go to dashboard → Download and download the latest pxac release (.zip).
3. Extract the pxac folder into your server's resources/[scripts]/ directory.
4. (Optional) Place screenshot-basic into resources/[scripts]/ as well.
5. Open your server.cfg and add the following lines:
ensure screenshot-basic # optional but strongly recommended
ensure pxac
6. Open pxac/data/config.lua and paste your license key:
Config.license = "PXAC-XXXX-XXXX-XXXX"
7. Start or restart your server.Verifying startup
After the server boots, open the FXServer console and look for: [ PXAC ] License validated. Pixel Anticheat is active. Common startup issues: • "License invalid" — double-check the key in config.lua; ensure there are no extra spaces. • "License expired" — renew your plan from the dashboard. • "Cannot reach validation server" — the FXServer needs outbound HTTPS access. • pxac crashes on start — verify you are on FXServer build 6683 or newer.
Updating to a new version
1. In Admin → Releases, upload the new .zip through the dashboard. 2. Navigate to dashboard → Download and download the new zip. 3. Stop your server. 4. Replace the old pxac folder with the new one (keep your config.lua, do not overwrite it). 5. Restart the server — no SQL imports needed.
Configuration
Core settings
All configuration lives in pxac/data/config.lua. You can also edit it live from the dashboard → Config page. Key fields: Config.license -- Your license key (required) Config.safe -- Master on/off switch (true = anticheat active) Config.player_protection -- Enable all player-detection modules at once
Module toggles
Every detection module has an active flag. Set it to false to disable that module completely:
Config.ocr = { active = true, ... }
Config.crasher_protection = { active = true, ... }
Config.weapons.blacklisted = { active = true, ... }
Config.bypass_resources = { active = true, ... }
Disabling a module at the top level is safer than commenting the entire block out — it preserves your settings.Punishment levels
Every offense in config.lua has a detection field that controls what happens when a player triggers it:
0 (or "log") — Log to console & Discord webhook only. No action taken.
1 (or "kick") — Kick the player with a reason message.
2 (or "ban") — Permanent ban. Player's identifiers are stored in the ban table.
"temp_ban_Xh" — Temporary ban for X hours (e.g. "temp_ban_24h").
Example:
Config.weapons.blacklisted = {
active = true,
detection = 2, -- permanent ban
}Connection filters
Config.connecting controls who is allowed to join your server: require_discord = false -- Block players without a Discord identifier require_steam = false -- Block players without a Steam identifier block_vpn = false -- Block connections from VPN / proxy IP ranges block_local_ips = false -- Block LAN IPs (192.168.x.x, 127.x.x.x) max_connections_per_ip = 5 -- Max connection attempts per IP per 5 minutes max_connections_per_hwid = 3 -- Max connection attempts per hardware ID per 10 minutes Set block_vpn = true to significantly reduce cheater entry via VPN IP rotation.
Discord webhooks
Configure individual Discord webhook URLs for each event type. Leave a field as "" to disable that notification. Config.webhooks.ban -- Fired on every ban action Config.webhooks.kick -- Fired on every kick action Config.webhooks.connect -- Player connect / disconnect events Config.webhooks.warning -- Detection logged (log-only offenses) Config.webhooks.backdoor -- Backdoor scan alerts Config.screenshot.discord_webhook -- Screenshot & OCR evidence images Screenshots are sent as file attachments directly from the server — no external service or storage is needed.
Whitelist & trusted identifiers
You can whitelist specific player identifiers so they are never sanctioned (e.g. developers):
Config.connecting.whitelist = {
"steam:110000112345678",
"license:abcdef1234567890",
}
Whitelisted players still appear in logs but receive no kick or ban.Detection Modules
Weapons — blacklist & modifiers
• Blacklisted weapon hash blocking — define weapon names/hashes in Config.weapons.blacklisted.list • Give-weapon event interception — server-side hook catches attempts to give banned weapons • Framework inventory validation — cross-checks with vRP/ESX player inventory when available • Weapon damage modifier detection — flags suspiciously high outgoing damage multipliers • Aimbot pattern detection — monitors lock-on range and rapid target-switching frequency
Vehicles & entities
• Blacklisted vehicle model blocking — configured in Config.vehicles.blacklisted.list • Blacklisted license plate strings — catches common cheat-menu injected plate tags • Speed hack detection — server-side velocity check against configurable max speed thresholds • Invisible vehicle detection — flags vehicles with opacity < threshold • Entity spawn rate limiting — prevents flooding the server with rapid entity creation
Player exploits
• God mode / invincibility detection — server-side health delta monitoring • Shield exploit detection — abnormal armour regeneration patterns • Invisible player detection — periodic alpha/visible-state validation • Tiny skin (exploit mesh) detection — model scale check • Super jump detection — vertical velocity spike monitoring • Spectate exploit detection — checks for unauthorized spectate natives
Vision & environmental exploits
• Night vision blocking — detects and disables unauthorized night-vision activation • Thermal vision blocking — same for thermal goggles • Weather / time sync manipulation — server enforces authoritative weather/time, client overrides are reverted
Screenshot & OCR
Screenshots are taken using screenshot-basic (or FiveM's built-in RequestScreenshot as fallback) and sent directly to your configured Config.screenshot.discord_webhook as file attachments.
OCR (Optical Character Recognition) runs inside the player's NUI using Tesseract.js. It periodically scans screenshots for known cheat software names and UI strings.
Configuration:
Config.ocr = {
active = true,
detection = 2, -- punishment on detection (0 = log, 1 = kick, 2 = ban)
start_delay = 60000, -- ms before first scan (default: 60 seconds after join)
interval = 300000, -- ms between scans (default: 5 minutes)
}
When a cheat UI is found:
1. A screenshot is captured as evidence and sent to the webhook.
2. The player is sanctioned per the detection level.Anti-crasher
Monitors network state bag sizes on every replication tick. If any bag value exceeds the configured byte threshold it is classified as a crash attempt.
Config.crasher_protection = {
active = true,
detection = 2,
max_bytes = 4096, -- state bag value size limit in bytes
}
Players who trigger this are permanently banned (or punished per detection level).Anti-dumper
At startup the server generates a per-session XOR key and sends a signed challenge to every connecting client. Each client must respond with the correct hashed answer derived from the resource contents.
A mismatched or missing response indicates the resource files have been tampered with (dumped) and the player receives an automatic sanction.
Config.anti_dump = {
active = true,
detection = 2,
}Event protection
Intercepts all client → server network events and blocks known exploit triggers (clearPedTasks, task network clones, cheat-menu native names, etc.).
Config.event_protection = {
active = true,
detection = 2, -- 0 = log, 1 = kick, 2 = ban
whitelist = {}, -- event names that should always be allowed through
}
If you get false positives from a legitimate resource, add its event name to the whitelist array.Advanced protection modules
Additional protection layers built into Pixel Anticheat: • **Anti Silent Aim** — Compares raycast direction from weapon barrel vs camera direction. If they diverge, firing is blocked. Prevents silent aim without false positives. • **Infinite Health Detection** — Monitors player health and sanctions anyone whose current HP exceeds their ped model's maximum + 10. • **Anti Fire Protection** — Automatically extinguishes fires placed on the player by cheaters through damage events. • **Anti Freeze Protection** — Detects when a player is remotely frozen by a cheater and immediately unfreezes them. • **Vehicle Exploit Protection** — Three sub-modules: - Anti Kill Engine: Re-enables the vehicle engine if it was remotely disabled - Anti Kill Wheels: Repairs tyres burst by remote cheater exploits - Anti Flying Vehicle: Prevents non-aircraft vehicles from gaining abnormal vertical velocity • **Anti Void** — Saves the last known safe position and teleports the player back if they fall through the ground (z < -100).
Bypass resources
Some cheat menus inject themselves as FiveM resources to evade detection. This module compares the resource list reported by each client against a trusted whitelist. Any unlisted resource triggers the configured punishment.
Config.bypass_resources = {
active = true,
detection = 2,
list = {
"pxac",
"vrp",
"screenshot-basic",
-- add ALL legitimate resource names here
},
}
Tip: run "pxac scan_resources" in the server console to get a ready-made list of all currently loaded resources you can paste directly into the whitelist.Backdoor scanner
Scans all loaded resource .lua files on server start (and on demand) for known backdoor patterns: remote code execution, suspicious HTTP requests, loadstring/eval chains, and obfuscated byte-array execution. Results are sent to Config.webhooks.backdoor. The scanner does not modify any files — use the pxac backdoorfix command (see Console Commands) to auto-patch a detected file.
Console Commands
Server console commands
All pxac commands must be run from the FXServer console (not from in-game chat). They require no additional permissions setup.
pxachelp
List all available pxac commands with a short description.
pxac antidump
Manually trigger an anti-dump challenge on all currently connected players.
pxac scanbackdoors
Re-run the backdoor scanner on all loaded resource files.
pxac backdoorfix <resource_name>
Attempt to auto-patch a detected backdoor in the specified resource.
Example: pxac backdoorfix my_broken_resource
pxac eventprotect
Reload and re-apply event protection hooks without restarting the full resource.
pxac scan_resources
Print a list of all currently loaded resource names formatted for Config.bypass_resources.list.
pxac unban <identifier>
Remove a ban for the given identifier (e.g. license:abc123).
Example: pxac unban steam:110000112345678In-game admin commands (chat)
Certain commands are available inside the game to players with the admin role: /pxac players — List connected players with their identifiers. /pxac ban <id> — Manually ban a player by their server ID. /pxac kick <id> — Manually kick a player by their server ID. /pxac info <id> — Show identifier info for a connected player. Game chat commands require the player's account to have the admin role set in the dashboard → Users.
Dashboard
Connecting the anticheat to the dashboard
The FiveM resource connects to the web dashboard via Socket.IO for live data streaming.
In config.lua, set your dashboard URL:
Config.web_panel = {
url = "https://your-domain.com",
enabled = true,
}
The resource authenticates using your license key and streams player data and logs in real time. No additional API key is needed beyond your license.Home — overview & live stats
The Home page shows at a glance: • Number of active players on your server • Recent detections and bans (last 24 hours) • Live server connection status • Quick links to the most used sections
Players & logs
The Players page lists every currently connected player with their identifiers, ping, and active plan status. The Logs page shows a timestamped feed of all detections, kicks, bans, and other anticheat events. You can filter logs by type (ban / kick / warning / connect) and by player identifier or name.
Bans management
All bans are listed in the Bans page. Each entry includes: • Player name and identifiers • Reason / detection type • Ban date and expiry (for temp bans) • Which admin/detection triggered it From this page you can manually unban a player by clicking the unban button next to their entry.
Config page
Every setting from config.lua can be edited directly in the browser from the dashboard → Config page. Changes are written back to disk immediately. • Use the Export button to download a JSON backup of your current config. • Use Import to restore from a previously exported JSON file. • Click Save after making changes — then restart the pxac resource for changes to take effect.
Staff access & roles
Roles available: user — Regular dashboard user (sees their own license/plan info only) staff — Can view players, logs, and bans; cannot change config or manage releases admin — Full access to all dashboard pages including Admin panel Admins can set user roles from Admin → Users by searching the user and changing their role from the dropdown.
IP Rotation requests
Players can submit an IP change request from dashboard → IP Requests when their IP address changes (e.g. after moving or ISP change). Admins review pending requests in Admin → IP Requests: • Approve — updates the player's authorized IP immediately • Deny — rejects the request; player keeps their current IP One pending request per account at a time. Unreviewed requests expire after 30 days.
Upload a release
Go to Admin → Releases. Drag and drop your .zip onto the upload zone. Before uploading you can select .lua files inside the ZIP to obfuscate them (recommended for production). The processed ZIP is stored server-side and set as the active download automatically. Players who visit dashboard → Download will always get the latest active release.
Activation key management
Admins can generate redeem codes in Admin → Codes: • Choose a plan (Monthly / Quarterly / Semi-Annual / Yearly) • Set how many codes to generate (1–50) • Optionally set a "Valid for X days" override — codes will grant exactly that many days of access regardless of the plan's default duration. Leave empty to use the plan's default. Generated codes are displayed as cards and can be copied to clipboard. Used codes show who redeemed them.
FAQ & Troubleshooting
License is not being validated
Ensure there are no leading/trailing spaces in your Config.license key. The FXServer needs outbound HTTPS access to reach the validation endpoint. Check your firewall rules if the server is on a restricted host.
Screenshots are not appearing in Discord
Set Config.screenshot.discord_webhook to a valid Discord webhook URL (create one in your Discord channel settings → Integrations). Ensure screenshot-basic is started before pxac in server.cfg. Look for "Screenshot Discord webhook error" in the FXServer console.
OCR is not detecting anything
Confirm Config.ocr.active = true and Config.ocr.interval is set (default 300000 ms = 5 minutes). OCR waits Config.ocr.start_delay ms after player join before the first scan. Open the F8 console in-game and check for Tesseract.js errors. Ensure screenshot-basic is running.
False positive bans
Lower threshold values or set detection = 0 (log only) for the offending module while you investigate. Whitelist the affected player's identifier in Config.connecting.whitelist temporarily. Check the Logs page for the exact detection that triggered.
Dashboard shows "Disconnected"
Verify the URL in Config.web_panel.url exactly matches your deployed website URL (no trailing slash, correct protocol). The FXServer needs outbound WebSocket (WSS) access on port 443. Check your VPS/hosting firewall.
Players kicked for bypass_resources
Run "pxac scan_resources" in the server console to get a list of all loaded resources. Add any missing ones to Config.bypass_resources.list in config.lua, then restart pxac.
Players kicked for event protection
Add the triggering event name to Config.event_protection.whitelist, or temporarily set detection = 0 to identify all false-positive events before deciding which to whitelist.
Redeem code says "already used"
Each code can only be used once. If you believe it was used in error, an admin can verify the "used_by" field in Admin → Codes. Contact support if the code was stolen.
How do I give someone an admin role?
Go to Admin → Users, search for the user by email or username, and change their role dropdown to "admin". They need to re-login for the change to take effect.
pxac resource crashes on start
Check the FXServer console for the Lua error trace. Most common causes: outdated FXServer build (minimum 6683), syntax error in config.lua (extra comma, missing bracket), or a resource the config references that is not started.
Can I use Pixel Anticheat with ESX or QBCore?
Yes. Pixel Anticheat works with vRP, ESX, QBCore, and standalone servers. Some modules (like inventory validation) automatically detect the active framework and adapt. No extra configuration is needed.
How many servers can I run on one license?
Each license is valid for one FiveM server. If you operate multiple servers, you need a separate license (and plan) for each one. Contact support for multi-server discounts.
Does the anticheat affect server performance?
Pixel Anticheat is optimized for minimal footprint. All heavy operations (OCR, backdoor scanning) run asynchronously and are throttled by configurable intervals. Under normal operation the anticheat adds less than 1 ms per server tick.
How do I transfer my license to a new server?
Submit an IP change request from dashboard → IP Requests. An admin will review and approve the new IP. Your license key stays the same — only the authorized IP is updated.
Need help?
Open a support ticket on our Discord or check the global bans page for ban queries.
