ZeroCheat Server Protection Guide
ZeroCheat is a DayZ anti-cheat and restore suite built around evidence: client sensors, server police, PHP court, R2 learning memory, optional mod adapters, restore tools, and 3D evidence clips.
This guide matches the current feature toggle catalog. The restore focus is base restore, vehicle restore, and unknown-cause death/corpse restore.
1. What You Buy
- ZeroCheat Server and ZeroCheat Client mod package.
- Hosted browser control panel with AntiCheat court, live map, command queue, evidence viewer, and restore center.
- Feature toggles per customer server. Customers tune their own server; ZeroCheat super admin controls licensing, global tools, products, and R2 policy.
- Base restore, vehicle restore, and unknown-cause death/corpse restore.
- Optional adapters for admin mods, group mods, base mods, trader/garage mods, and vehicle lock/key mods.
2. Feature Toggles
Feature Toggles is the source of truth for what a customer can enable on their server. A detector that is not listed here should not create paid-feature risk.
Combat
| Feature | Key | Status | Evidence rule |
|---|---|---|---|
| Infinite ammo | combat.infinite_ammo | Default on | Detects magazine/chamber refill or no-consume ammo patterns. |
| Fast fire | combat.fast_fire | Default on | Detects weapons firing faster than their DayZ/modded weapon fire-rate. |
| No recoil / anti recoil | combat.no_recoil | Optional / watch-first | Watches impossible recoil response and robot-like recoil compensation using recoil-only evidence. |
Movement
| Feature | Key | Status | Evidence rule |
|---|---|---|---|
| Player speed | movement.speed | Default on | Detects foot speed beyond learned walking/sprint/stance baselines. |
| Vehicle speed / boost | movement.vehicle_speed | Default on | Detects car/boat/aircraft boost using vehicle-only evidence and accident filters. |
| Teleport | movement.teleport | Default on | Detects impossible position jumps after admin-tool and lag filters. |
| Undermap | movement.undermap | Default on | Detects player position below terrain with accident filters. |
Camera
| Feature | Key | Status | Evidence rule |
|---|---|---|---|
| Freecam | camera.freecam | Default on | Detects camera separation from player beyond vanilla camera bounds. |
Loot
| Feature | Key | Status | Evidence rule |
|---|---|---|---|
| Remote loot / vacuum loot | loot.remote_loot | Default on | Detects far item pulls with bubble evidence, then rollback/quarantine without deleting loot. |
| Advanced dupe watch | loot.dupe | Optional / watch-first | Detects repeat persistent-item identity conflicts without deleting player/base items. |
Aim
| Feature | Key | Status | Evidence rule |
|---|---|---|---|
| Snap aim / mouse aimbot | aim.snap_aim | Optional / watch-first | Watch-first detector for non-human aim turn speed using aim-only evidence during combat context. |
| Skeleton ESP / player skeleton | aim.skeleton_esp | Optional / watch-first | Detects sustained pre-aim on hidden player bones through hard cover or dense foliage. Independent from snap aim and NoTree. |
| Triggerbot | aim.triggerbot | Optional / watch-first | Watches impossible shot timing when the crosshair enters a target using target/attack-edge evidence only. |
| Silent aim | aim.silent_aim | Optional / watch-first | Detects hits where camera and muzzle geometry are outside the legal target cone. Independent from snap aim. |
Identity
| Feature | Key | Status | Evidence rule |
|---|---|---|---|
| Namespoof / fake name | identity.namespoof | Default on | Tracks SteamID-name history and warns on hidden characters, protected names, or online name impersonation. |
Admin Power
| Feature | Key | Status | Evidence rule |
|---|---|---|---|
| Godmode / no damage | admin_power.godmode | Default on | Detects damage that does not reduce Health/Blood/Shock after server verification. |
| Illegal heal | admin_power.heal | Default on | Detects Health/Blood/Shock recovery that is too fast after recent damage. |
| Spawn / object injection | admin_power.spawn | Default on | Watches items, vehicles, or structures appearing from UNKNOWN engine location near a non-authorized player. |
| Invisible watch | admin_power.invisible | Default on | Watch-only server presence guard for abnormal player visibility/network state. |
Ballistics
| Feature | Key | Status | Evidence rule |
|---|---|---|---|
| Wallbang / hard-wall | ballistics.wallbang | Default on | Confirms hard-wall wallbang when impactChain crosses solid brick/concrete/metal with no glass/window/door opening. This is sold and toggled separately from NoTree. |
| NoTree / Treebang | ballistics.notree_treebang | Default on | Detects shots through meaningful tree/bush/foliage cover using vegetation visibility evidence only. This is sold and toggled separately from Wallbang. |
| Curve bullet / smart bullet | ballistics.curve_bullet | Optional / watch-first | Detects impossible hit geometry where the victim is far outside the straight muzzle ray. Independent from wallbang and NoTree. |
Example API payload:
{
"version": 1,
"toggles": {
"combat.infinite_ammo": true,
"combat.fast_fire": true,
"combat.no_recoil": false,
"movement.speed": true,
"movement.vehicle_speed": true,
"movement.teleport": true,
"movement.undermap": true,
"camera.freecam": true,
"loot.remote_loot": true,
"loot.dupe": false,
"aim.snap_aim": false,
"aim.skeleton_esp": false,
"aim.triggerbot": false,
"aim.silent_aim": false,
"identity.namespoof": true,
"admin_power.godmode": true,
"admin_power.heal": true,
"admin_power.spawn": true,
"admin_power.invisible": true,
"ballistics.wallbang": true,
"ballistics.notree_treebang": true,
"ballistics.curve_bullet": false,
"learning.raw": true,
"learning.cloud_r2": true
},
"serverRuntimeHint": "The DayZ server applies these toggles on the next config poll/reload."
} 3. Install & Optional Mods
ZeroCheat should run on vanilla DayZ. Optional integrations are auto-detected when the server has them installed. Load optional mods before ZeroCheat when your server uses them.
- Upload
@ZeroCheat/ the delivered package to the DayZ server. - Load your normal server mods first, then ZeroCheat.
- Start once so
$profile:ZeroCheatJSON files are generated. - Stop, edit JSON, start again.
- Use
!zcreloadfor supported hot-reload JSON when testing.
| Mod / Source | Status | How ZeroCheat uses it | Link |
|---|---|---|---|
| Vanilla DayZ | Built-in fallback | ZeroCheat keeps working on vanilla servers. Vanilla TerritoryFlag/base objects and normal player/vehicle/item events are still used. | Built-in / package-specific |
| CF | Optional/common framework | Common dependency for many DayZ stacks. ZeroCheat does not market it as a hard requirement unless the delivered server stack uses CF-based optional mods. | Steam |
| VPPAdminTools | Optional admin adapter | Used only when present to understand admin identity/context. ZeroCheat still detects real movement, loot, camera, ammo, and ballistic evidence independently. | Steam |
| Community-Online-Tools (COT) | Optional admin adapter | Used only when present for admin identity/context and to reduce wrong admin-tool classification. | Steam |
| LBmaster Admin | Optional admin adapter | Used only when present as another admin-permission source, alongside VPP/COT. | Built-in / package-specific |
| DayZ Expansion Core | Optional Expansion base | Loaded when a server uses the Expansion ecosystem. It is not required for vanilla-only ZeroCheat operation. | Steam |
| Dabs Framework | Optional Expansion framework | Common framework dependency in Expansion-based stacks. | Steam |
| DayZ Expansion Groups | Optional team adapter | Same-group/team context for aim, skeleton ESP, triggerbot, NoTree, and friendly test exceptions. | Steam |
| LBmaster Groups | Optional team adapter | Another team/group source when a server uses LBmaster group systems instead of Expansion Groups. | Built-in / package-specific |
| RA BaseBuilding | Optional base adapter | Adds HQ/territory ownership context for base loss, restore, and base container evidence. | Steam |
| Vanilla TerritoryFlag / vanilla base | Built-in fallback | Used when the server does not run RA or other base frameworks. | Built-in / package-specific |
| MuchCarKey | Optional vehicle-owner adapter | Vehicle ownership/lock evidence for vehicle restore and stolen/missing vehicle investigation. | Built-in / package-specific |
| CarLock / TraderPlus CarLock | Optional vehicle-owner adapter | Vehicle lock/owner lowID context. When possible, ZeroCheat resolves it back to the online owner Steam64/name. | Built-in / package-specific |
| TraderPlus / TraderX / Expansion Market / Garage | Optional trader adapter | Legal trader, garage, buy/sell, and storage flows can downgrade loot/dupe/vehicle evidence instead of convicting a normal purchase. | Built-in / package-specific |
-mod=@CF;@YourAdminMod;@YourGroupMod;@YourTraderMod;@ZeroCheat
-servermod=@ZeroCheat_Server
If your server does not use an optional mod, do not install it only for ZeroCheat. ZeroCheat falls back to vanilla/context-light logic. 4. WebControl JSON ($profile:ZeroCheat/WebControl/config.json)
Folder Path: $profile:ZeroCheat/WebControl/
File Name: config.json (Generated automatically on first server boot)
Note: API URLs automatically use your current Web Panel domain (https://zero-cheat.com). If you change your domain name or web server IP in the future, these endpoints automatically adapt!
{
"ZC_WebApiUrl": "https://zero-cheat.com/api",
"IdentityToken": "YOUR_PRIVATE_IDENTITY_TOKEN_FROM_WEB_PANEL",
"RegistrationToken": "",
"GameServerId": "YOUR_GAME_SERVER_ID_FROM_WEB_PANEL",
"CommandPollIntervalMs": 2000,
"EventBatchIntervalMs": 1000,
"LivePositionIntervalMs": 1000,
"MaxEventsPerBatch": 50,
"RequestTimeoutSeconds": 10,
"LogVerbose": false,
"DryRun": false,
"LearningLocalEnabled": true,
"LearningWebUploadEnabled": false,
"LearningCapPerSteamId": 5,
"LearningCloudUploadEnabled": true,
"LearningCloudEndpointPath": "/api/learning-batch.php",
"LearningCloudBatchIntervalMs": 60000,
"LearningCloudMaxBatchLines": 1000,
"LearningCloudMaxPendingLines": 20000
} | Field | Recommended | Meaning |
|---|---|---|
ZC_WebApiUrl | https://zero-cheat.com/api | Dynamic Web API Base Endpoint. Automatically resolves to your web panel domain so domain changes require zero manual edits. |
IdentityToken | From Web Dashboard | Secret Bearer token validating communication between your DayZ server and Web Panel. Keep private! |
GameServerId | From Web Dashboard | Unique server ID assigned to this server instance in your Web Dashboard. |
CommandPollIntervalMs | 2000 (ms) | How often (in milliseconds) the DayZ server polls the Web Panel for pending admin commands (Kick, Ban, Teleport, Restore). Default: 2000ms (2s). |
EventBatchIntervalMs | 1000 (ms) | How often (in milliseconds) telemetry events (kills, combat logs, risk flags) are batched and sent to Web Panel. Default: 1000ms (1s). |
LivePositionIntervalMs | 1000 (ms) | How often (in milliseconds) player coordinates are streamed for the Web 2D/3D Live Map. Default: 1000ms (1s). |
MaxEventsPerBatch | 50 | Maximum number of telemetry events sent per HTTP request payload to prevent network spikes. |
RequestTimeoutSeconds | 10 (sec) | HTTP connection timeout when communicating with Web Panel API. |
LearningLocalEnabled | true | Saves local weapon recoil and movement ML baseline samples in $profile:ZeroCheat/Learning/. |
LearningCloudUploadEnabled | true | Uploads aggregated ML recoil baseline batches to Web Panel. |
LearningCloudEndpointPath | /api/learning-batch.php | Relative API endpoint path for ML baseline batches. Auto-resolves dynamically. |
4.1 Remote Admin Commands & Live Inventory Inspection
The Web Control Panel communicates bidirectionally with the DayZ Game Server via HTTP polling (poll.php & result.php). Admins can execute the following remote actions live from the Web Panel or mobile phone:
| Field | Recommended | Meaning |
|---|---|---|
listPlayers | Automated / Manual | Fetches online player list, health stats, Steam64 ID, position, and ping. |
getPlayerInventory | Live Inspection | Fetches full 3D nested inventory tree (clothing, backpack, hands, containers). |
deleteItem | 1-Click Item Wipe | Removes an illegal or cheated item classname directly from a suspect's inventory. |
giveItem | Remote Gear Spawn | Spawns any item classname directly into a player's hands or inventory with custom quantity and condition. |
sendMessage | Web Broadcast | Sends global server broadcasts or private direct messages to online players. |
kickPlayer | Remote Kick | Kicks a player from the server with a custom administrative kick reason. |
banPlayer | Remote Ban | Bans a player permanently (duration = 0) or for a set period in seconds. |
unbanPlayer | Remote Unban | Removes a ban entry for a specific Steam64 ID / Game ID. |
teleportPlayer | Remote Teleport | Teleports a player to target X, Y, Z coordinates or teleports admin avatar. |
executeConsoleCommand | Remote RCON | Executes raw server RCON or console commands remotely. |
startAdminReplay | 3D Replay Teleport | Teleports admin avatar straight to the 3D replay coordinates in-game. |
restoreVIP | VIP Manager | Grants or restores VIP status and kit entitlements. |
getRisk / clearRisk | Risk Score Manager | Queries or resets a suspect's accumulated risk score. |
shutdown | Safe Restart | Triggers a safe game server restart / shutdown. |
5. Core System JSON ($profile:ZeroCheat/Configs/System.json)
Folder Path: $profile:ZeroCheat/Configs/
File Name: System.json (Generated automatically on first server boot)
{
"zc_SystemEnable": true,
"zc_Debug": false,
"zc_CooldownModulesSends": 3.0,
"zc_TeleportPlayerToPrison": false,
"zc_PrisonCoordinate": "50 0 50",
"zc_RollbackIllegalPlayerTeleport": false,
"zc_AimDetectorEnable": true,
"zc_AimIgnoreExpansionParty": true,
"zc_Admins": [],
"zc_AimIgnorePairs": []
} | Field | Recommended | Meaning |
|---|---|---|
zc_SystemEnable | true (DEFAULT: ON) | Master ON/OFF switch for the entire ZeroCheat Server protection engine. |
zc_Debug | false (DEFAULT: OFF) | Binds verbose debug logging to RPT/console logs. Keep false on live production servers. |
zc_CooldownModulesSends | 3.0 (sec) | Cooldown time in seconds between web module alert dispatches to prevent spam. |
zc_TeleportPlayerToPrison | false (DEFAULT: OFF) | Automatically teleports convicted severe hackers to prison coordinates instead of instant kick/ban. |
zc_PrisonCoordinate | "50 0 50" | World X Y Z coordinates for the offender prison cell. |
zc_RollbackIllegalPlayerTeleport | false (DEFAULT: OFF) | Forces immediate physical position rollback when an illegal teleport or movement spike occurs. |
zc_AimDetectorEnable | true (DEFAULT: ON) | Master switch for Aim Snap & Silent Aim trajectory detection. |
zc_AimIgnoreExpansionParty | true (DEFAULT: ON) | Exempts party/clan teammates (Expansion Groups / LBmaster Groups) from aim checks. |
zc_Admins | [] | Deny-List / Forced Normal Player Test List: Steam64 IDs placed here are stripped of Admin immunity and forced to be audited/tested as normal players for security compliance. |
zc_AimIgnorePairs | [] | Manual Steam64A|Steam64B player pairs exempted from aim checks for friendly sparring/testing. |
6. CombatMaster Engine JSON ($profile:ZeroCheat/CombatMaster/config.json)
Folder Path: $profile:ZeroCheat/CombatMaster/
File Name: config.json (Generated automatically on first server boot)
{
"enabled": true,
"checkFastFire": true,
"checkInfiniteAmmo": true,
"checkNoRecoil": false,
"minRecoilThreshold": 0.04,
"infiniteAmmoVerifyDelayMs": 250,
"infiniteAmmoStrikeThreshold": 3,
"minTimeBetweenShotsMs": 55,
"fastFireStrikeThreshold": 3,
"fastFireToleranceMs": 25,
"fastFireSessionGapMs": 5000,
"fastFireMinimumLegalMs": 45,
"reportCooldownMs": 15000,
"fastFireRiskDelta": 15,
"infiniteAmmoRiskDelta": 35,
"noRecoilRiskDelta": 5
} | Field | Recommended | Meaning |
|---|---|---|
enabled | true (DEFAULT: ON) | Master switch for CombatMaster combat engine. |
checkFastFire | true (DEFAULT: ON) | Enforces weapon rate-of-fire limits across 8 weapon groups (Sniper, Shotgun, Pistol, SMG, LMG, Assault, Rifle, Bow). |
checkInfiniteAmmo | true (DEFAULT: ON) | Tracks pre-shot ammo refills and post-shot magazine counts to detect infinite ammo. |
checkNoRecoil | false (DEFAULT: OFF) | Detects robotic No-Recoil macros. Keep false until AI Recoil Learning has collected clean baselines. |
minRecoilThreshold | 0.04 | Minimum recoil delta threshold before flagging No-Recoil. |
fastFireStrikeThreshold | 3 | Accumulated strikes required before reporting a Fast Fire violation. |
infiniteAmmoStrikeThreshold | 3 | Accumulated strikes required before reporting an Infinite Ammo violation. |
minTimeBetweenShotsMs | 55 (ms) | Absolute legal minimum interval between shots in milliseconds. |
fastFireToleranceMs | 25 (ms) | Tolerance window in ms to account for server tick rate variations. |
fastFireSessionGapMs | 5000 (ms) | Resets fast fire strikes if player stops shooting for 5 seconds. |
reportCooldownMs | 15000 (ms) | 15-second cooldown per player between combat alert reports. |
fastFireRiskDelta | 15 | Risk points added to player score per Fast Fire flag. |
infiniteAmmoRiskDelta | 35 | Risk points added to player score per Infinite Ammo flag. |
noRecoilRiskDelta | 5 | Risk points added to player score per No-Recoil flag. |
7. Movement, Speed & Freecam JSON
Folder Path: $profile:ZeroCheat/Configs/
Files: SpeedDetector.json and FreecamDetector.json
// SpeedDetector.json
{
"zc_SpeedDetectorEnable": true,
"zc_SpeedSampleInterval": 0.25,
"zc_SpeedGraceMs": 20000,
"zc_MaxSpeedStand": 50.0,
"zc_MaxSpeedCrouch": 15.0,
"zc_MaxSpeedProne": 8.5,
"zc_MaxTeleportXY": 35.0,
"zc_MaxTeleportZ": 5.0,
"zc_WebhookEnable": true,
"zc_WebhookDiscord": "Your Discord Webhook URL Here"
}
// FreecamDetector.json
{
"zc_FreecamDetectorEnable": true,
"zc_FreecamCheckInVehicle": false,
"zc_FreecamMaxDistance_1PP": 3.0,
"zc_FreecamMaxDistance_3PP": 5.0,
"zc_WebhookEnable": true,
"zc_WebhookDiscord": "Your Discord Webhook URL Here"
} | Field | Recommended | Meaning |
|---|---|---|
zc_SpeedDetectorEnable | true (DEFAULT: ON) | Enforces foot movement speed & teleport limits. |
zc_SpeedSampleInterval | 0.25 (sec) | Sampling interval in seconds for calculating velocity. |
zc_SpeedGraceMs | 20000 (ms) | 20-second grace period after player spawn/teleport before speed checks activate. |
zc_MaxSpeedStand | 50.0 (m/s) | Max legal movement speed when standing. |
zc_MaxSpeedCrouch | 15.0 (m/s) | Max legal movement speed when crouching. |
zc_MaxSpeedProne | 8.5 (m/s) | Max legal movement speed when prone. |
zc_MaxTeleportXY | 35.0 (m/s) | Max horizontal position jump allowed in meters per second. |
zc_MaxTeleportZ | 5.0 (m/s) | Max vertical/elevation position jump allowed in meters per second. |
zc_FreecamDetectorEnable | true (DEFAULT: ON) | Detects camera detachment from player body (Freecam/Ghostcam). |
zc_FreecamCheckInVehicle | false (DEFAULT: OFF) | Check freecam camera separation when player is in a vehicle. |
zc_FreecamMaxDistance_1PP | 3.0 (m) | Max camera distance in 1st person view before alerting. |
zc_FreecamMaxDistance_3PP | 5.0 (m) | Max camera distance in 3rd person view before alerting. |
8. Object & Remote Loot Manipulation JSON ($profile:ZeroCheat/Configs/ManipuleDetector.json)
Folder Path: $profile:ZeroCheat/Configs/
File Name: ManipuleDetector.json (Generated automatically on first server boot)
{
"zc_IsManipuleDetectorEnable": true,
"zc_RollbackObject": true,
"zc_VanillaEnabled": true,
"zc_CheckManipule_Item": true,
"zc_CheckManipule_Car": true,
"zc_CheckManipule_Base": true,
"zc_CheckManipule_House": true,
"zc_RadarEnabled": true,
"zc_LootBubbleScannerEnable": true,
"zc_AdvancedLootEnable": true,
"zc_LootOuterScanRadius": 20.0,
"zc_LootLegalPickupRadius": 5.0,
"zc_MaxVacuumPullDistance": 150.0,
"zc_LivePlayerStealLegalDistance": 5.0,
"zc_CorpseLootLegalDistance": 6.0,
"zc_DeleteVacuumLootItems": true,
"zc_QuarantineVacuumLootSeconds": 300.0,
"zc_RadarWatchList_Item": ["WoodenCrate", "SeaChest", "Barrel_Green", "CarTent", "LargeTent", "UndergroundStash"],
"zc_RadarWatchList_Cars": ["CivilianSedan", "OffroadHatchback", "Truck_01_Covered", "Boat_01_Black"],
"zc_RadarWatchList_Bases": ["Fence", "Watchtower", "TerritoryFlag"]
} | Field | Recommended | Meaning |
|---|---|---|
zc_IsManipuleDetectorEnable | true (DEFAULT: ON) | Master switch for remote loot, vacuum loot, and object manipulation detection. |
zc_RollbackObject | true (DEFAULT: ON) | Automatically returns vacuumed items back to their original physical coordinates. |
zc_CheckManipule_Item | true (DEFAULT: ON) | Checks item vacuuming & illegal loot pulls. |
zc_CheckManipule_Car | true (DEFAULT: ON) | Checks vehicle position manipulation. |
zc_CheckManipule_Base | true (DEFAULT: ON) | Checks base wall & container position manipulation. |
zc_RadarEnabled | true (DEFAULT: ON) | 3D Radar active monitoring for high-value items/bases. |
zc_LootLegalPickupRadius | 5.0 (m) | Max legal pickup distance for items. |
zc_MaxVacuumPullDistance | 150.0 (m) | Severe alert distance for extreme vacuum loot pulls. |
zc_DeleteVacuumLootItems | true (DEFAULT: ON) | Deletes items illegally pulled into suspect inventory. |
zc_QuarantineVacuumLootSeconds | 300.0 (sec) | Quarantines vacuumed items for 5 minutes before deletion. |
9. Admin Power & Abuse Audit JSON ($profile:ZeroCheat/Configs/AdminPowerDetector.json)
Folder Path: $profile:ZeroCheat/Configs/
File Name: AdminPowerDetector.json (Generated automatically on first server boot)
{
"zc_AdminPowerDetectorEnable": true,
"zc_CheckGodmode": true,
"zc_CheckIllegalHeal": true,
"zc_CheckObjectSpawn": true,
"zc_CheckInvisible": true,
"zc_GodmodeStrikeThreshold": 3,
"zc_DamageVerifyDelayMs": 350,
"zc_HealWatchHealthJump": 20.0,
"zc_InvisibleWatchRadius": 80.0
} | Field | Recommended | Meaning |
|---|---|---|
zc_AdminPowerDetectorEnable | true (DEFAULT: ON) | Master switch for admin privilege auditing (VPPAdminTools, COT, LBmaster). |
zc_CheckGodmode | true (DEFAULT: ON) | Audits invulnerability / Godmode during PvP or non-test sessions. |
zc_CheckIllegalHeal | true (DEFAULT: ON) | Audits instant health/blood jumps during combat. |
zc_CheckObjectSpawn | true (DEFAULT: ON) | Audits admin item spawning near players or vehicles. |
zc_CheckInvisible | true (DEFAULT: ON) | Audits admin invisibility status. |
zc_GodmodeStrikeThreshold | 3 | Strike count required before flagging Godmode abuse. |
Field names may vary by build; use the generated ZeroCheat_Config_Guide.RD on the server as the final local reference. The policy is stable: god/heal/spawn/invisible must be judged as their own admin-power evidence, not mixed with speed/aim/loot.
10. Learning / R2 Policy
ZeroCheat should not upload everything forever. SQL is the court desk. R2 is the brain/archive.
| Storage area | Policy |
|---|---|
| SQL keeps | Active case board, compact risk score, current unread alerts, restore indexes/codes, command queue state, clip metadata, and admin audit state. |
| R2 keeps | Compact learning memory, selected raw batches, evidence/BlackBox clips with TTL, item/model thumbnails once per classname, court memory, and exportable archive data. |
| R2 should not keep forever | AFK spam, repeated heartbeat/state resend, every normal tick, duplicated client metrics, lab/debug spam, and old evidence clips after retention expires. |
| Learning rule | If a customer does not buy a detector, the web may hide/disable that feature, but ZeroCheat can still collect safe background learning when allowed so the global brain improves. |
| Commercial rule | Feature licenses should gate feature use and court access. One purchased module should not unlock every R2 learning subject. |
{
"learning": {
"r2_prefix": "dulieuhoc",
"upload_r2": true,
"local_mirror_path": "",
"cloud_batch": {
"max_records_per_request": 5000,
"flush_files_per_request": 20,
"flush_records_per_request": 10000,
"inbox_retention_hours": 24
}
},
"evidence": {
"clip_retention_days": 7,
"upload_only_when_case_exists": true,
"cache_item_thumbnail_once_per_classname": true
}
} 11. Restore
Restore must be strict. A player claim should be checked against evidence: owner, group, item contents, position, direction/orientation, last interaction, loss reason, and whether the case was already restored.
| Restore tool | Rule |
|---|---|
| 1-Click Base Restoration | Restores tracked base containers and their captured nested inventory at the saved position and orientation. Supports the vanilla and optional base-building integrations enabled in the installed server mod stack. |
| Vehicle & Garage Restoration | Recovers tracked vehicles and captured attachments or cargo after an abnormal loss. Ownership is resolved from recent driver and actor Steam64 data before a restore case is created. |
| Rolling Restart Snapshots | Base Restore and Vehicle Restore keep rolling JSON snapshots and save again during a graceful server shutdown. On the next start, ZeroCheat compares the tracked state and creates reviewable restore cases for abnormal losses. |
| Bug / Server Lag Corpse Restoration | Restores captured corpse gear for supported bug and disconnect cases. Compatibility depends on the item classes installed on the server, and valid combat or environment deaths remain excluded. |
| 3D Incident Replay & Evidence Clips (3D Blackbox) | Reconstructs firefights and suspicious events in interactive 3D (1PP & 3PP). Admins can inspect shooter perspective, projectile trajectories, camera angles, remote loot pulls, and wallbang/no-tree penetrations 30 seconds before and 60 seconds after the event. |
| Item Thumbnail Cache & Audit Trail | Automatically caches item thumbnails and detailed action logs on cloud storage for all vanilla and modded items, allowing admins to cross-examine visual proof before approving restoration requests. |
- Base restore should place containers/items back at saved position/orientation when clear. If the spot is occupied, restore next to it and log the offset.
- Vehicle restore should use driver, lock/key, garage/trader, owner, and last known vehicle state. Normal crashes and combat losses are not restore reasons.
- Unknown-cause death restore should exclude suicide, valid PvP kill, zombie kill, drowning, falling, vehicle crash, and normal DayZ danger.
- After restore, mark the entry restored or remove it from the active loss queue to prevent dupe payout.
12. Team / Group Rules
Only features that can confuse teammate behavior should use team/group ignore. Movement, teleport, under-map, freecam, admin-power, and impossible ammo still matter regardless of team.
| Feature group | Team/group effect |
|---|---|
| Aim / Skeleton ESP / Triggerbot | Same team/group can downgrade friendly pre-aim or test behavior. |
| NoTree / Wallbang | Same team/group can be context, but hard-wall/foliage evidence is still stored for audit. |
| Loot / Dupe / Restore | Group/base/vehicle ownership context helps decide whether an item flow is legal. |
| Speed / Teleport / Undermap / Freecam | Team membership does not make impossible movement/camera behavior legal. |
13. Test Checklist
- Start server once and confirm
$profile:ZeroCheat/Logshas a boot marker. - Open Feature Toggles and enable only the feature being tested.
- Test normal behavior first. Confirm no alert.
- Test the suspicious behavior. Confirm one readable case, not spam.
- Open AntiCheat court and confirm Count/grouping, details, action buttons, and 3D Evidence only when a real R2 clip exists.
- Check SQL/R2 growth after testing. Normal client metrics, AFK, duplicate heartbeat, and debug payloads must not grow forever.
14. Production Hardening
- Keep secrets in web config or encrypted/server-side code. Do not expose R2 keys to customers in plain JSON.
- Use feature licenses so a customer buying one detector does not unlock every detector or every R2 learning subject.
- Keep SQL retention enabled. SQL should hold active cases and indexes, not every raw event forever.
- Keep heavy R2 evidence clips on TTL. Seven days is a good default unless a case is manually preserved.
- Do not enable watch-first hard features as heavy punishment until the server has clean learning and admin review workflow.