SafeGuard

Detections

Risk instead of bans on one flag

Each detection has a weight and a confidence. The player's risk (0–100) adds these up per category and decays over time. Weak or ambiguous detections (missed heartbeats, a single combat sample) are capped per sample, so a single occurrence never reaches a punishment.

  • Server signals (positions, entities, damage, events, money) are the basis of decisions.
  • Client signals (menu commands, injected resources, spectator mode) count half and never lead to an automatic ban on their own.
  • When staff mark detections as false positive or confirmed, SafeGuard adjusts that type's weight on your server (after 20 verdicts).

Against cheat menus

The most used menus (Eulen, Skript, and Lua menus executed through them) change all the time to avoid being recognised on the player's computer. That is why SafeGuard focuses on what they do on the server, which is the same whatever the menu:

  • teleporting, flying, noclip (also with collision off), super jump, speed, invisibility;
  • godmode (damage that does not lower health), health and armour above the maximum;
  • killing or tazing players with weapons not in hand, shooting through walls, aimbot (fast turns that always end on the target) and silent aim (hits with the aim beside the victim);
  • exploding players from far away, invisible or spammed explosions;
  • dropping huge props, spawning dozens of entities, huge particle effects;
  • pulling players out of cars, freezing or disarming them;
  • firing the payout and item events ("money exploits") of popular scripts;
  • unusual gains of money or items;
  • cars that take no damage under gunfire (vehicle godmode);
  • chat messages or names with HTML/JavaScript that runs on the other players' screens.

Contextual movement and godmode confirmation

Noclip is not confirmed from distance alone. The decision combines displacement and speed with incompatible physical velocity and/or disabled collision, excludes vehicles, falling, ragdoll, attachments and world transitions, and requires consecutive strikes above a confidence threshold. Normal samples reduce confidence. Spawn/join, revive, authorized teleports, interiors and routing-bucket changes receive grace periods.

Godmode is not confirmed from an invincibility flag alone either. It requires server-observed incoming damage, repeated health/armour samples with no decrease, and a minimum accumulated damage amount. Death, revive, grace periods and authorized temporary permissions clear the sequence. Evidence includes the values and context that contributed to the confidence score.

Learning mode

On each server's page there is a switch for learning mode. While it is on, SafeGuard detects, scores and reports everything as usual but punishes nobody automatically: every punishment is recorded as "what the rules would have done".

The report, which stays after you switch it off, shows, for each detection type, how many players it flagged:

  • Noisy: flags 10 % or more of the players. On your server that is almost always normal play (a racing script, a map with jumps). SafeGuard suggests a more tolerant sensitivity that you apply with one click (it becomes a new configuration version, reversible in Rules).
  • Review: a few players. Look at them before automating.
  • Reliable: only isolated players, as real cheating usually is. Safe to let the rules act.

We recommend it for the first week after installing and whenever you add large scripts.

All detections

CategoryDetectionCodeWeight
IntegrityMissed heartbeatsintegrity.heartbeat_missed4
IntegrityHeartbeat sequence gapintegrity.heartbeat_gap3
IntegrityReplayed heartbeatintegrity.heartbeat_replay15
IntegrityChallenge-response failedintegrity.challenge_failed15
IntegritySession token mismatchintegrity.token_mismatch8
IntegrityAnticheat client absentintegrity.client_absent10
IntegrityClient re-initialisedintegrity.repeated_hello8
IntegrityTelemetry floodintegrity.telemetry_flood15
IntegrityMalformed telemetryintegrity.malformed_telemetry10
IntegrityClient/server position mismatchintegrity.position_mismatch10
MovementTeleportmovement.teleport10
MovementSpeed hack (on foot)movement.speed12
MovementNoclipmovement.noclip15
MovementFlymovement.fly15
MovementSuper jumpmovement.super_jump10
MovementVehicle speedmovement.vehicle_speed10
MovementInvisiblemovement.invisible25
MovementHealth modifiermovement.health_modifier35
MovementArmor modifiermovement.armor_modifier35
MovementBlocked ped modelmovement.ped_change30
MovementSpectate / freecammovement.spectate15
MovementDriver seat taken from a distancemovement.vehicle_hijack35
MovementGodmodemovement.godmode30
MovementVehicle that takes no damagemovement.vehicle_godmode30
WeaponsBlacklisted weaponweapon.blacklisted45
WeaponsWeapon given to another pedweapon.give_other40
WeaponsDamage modifierweapon.damage_modifier25
WeaponsRapid fireweapon.rapid_fire20
WeaponsWeapon not in the inventoryweapon.not_in_inventory40
CombatImpossible hit anglecombat.impossible_angle20
CombatAim snapcombat.aim_snap15
CombatAbnormal headshot ratiocombat.headshot_ratio20
CombatHit without line of sightcombat.no_line_of_sight20
CombatHit beyond weapon rangecombat.out_of_range30
CombatMany players hit at oncecombat.multi_target40
CombatDamage with a weapon not in handcombat.weapon_mismatch35
CombatToo many kills per minutecombat.kill_rate20
CombatSilent aim (hits with the aim beside the target)combat.silent_aim30
CombatAimbot (repeated snaps onto the target)combat.aimbot35
CombatTaser from too far or in a loopcombat.taser_abuse30
CombatMelee hit from too far (kill player)combat.melee_range35
EntitiesBlacklisted entity modelentity.blacklisted_model35
EntitiesEntity spamentity.spam30
EntitiesMass spawnentity.mass_spawn45
EntitiesCar rainentity.vehicle_rain45
EntitiesBlacklisted explosionentity.explosion_blacklisted40
EntitiesInvisible / silent explosionentity.explosion_invisible40
EntitiesExplosion spamentity.explosion_spam35
EntitiesRemote explosionentity.explosion_remote35
EntitiesGame event abuseentity.game_event_abuse25
EntitiesGame events aimed at other playersentity.player_tampering35
EntitiesObjects attached to other playersentity.attach_to_player35
EventsHoneypot eventevent.honeypot80
EventsForbidden eventevent.forbidden50
EventsExploit attempt on a script this server does not runevent.exploit_probe40
EventsSweep of exploit events on scripts this server does not runevent.exploit_sweep100
EventsEvent schema violationevent.schema_violation15
EventsEvent rate limitevent.rate_limit10
EventsEvent without permissionevent.permission20
EventsEvent too far awayevent.distance15
EventsEvent spamevent.spam20
EventsHTML or script in chatevent.markup_injection45
EventsBurst of many different eventsevent.fanout40
EconomyMoney spikeeconomy.money_spike25
EconomyEconomy limit exceededeconomy.limit_exceeded30
EconomyDuplicationeconomy.duplication40
ExecutorBlacklisted commandexecutor.blacklisted_command45
ExecutorUnknown resourceexecutor.unknown_resource35
ExecutorSuspicious globalexecutor.suspicious_global20
ExecutorAnticheat resource stoppedexecutor.resource_stopped20
IntegrityGodmode flag on the player (client)integrity.local_godmode15
IntegrityThermal or night vision on footintegrity.vision_mode8
IntegrityEvery player on the map (ESP blips)integrity.player_blips10
MovementCamera far from the player (freecam)movement.freecam15
MovementVehicle power boostmovement.vehicle_boost20

Weekly report

Every week the owners and admins get a summary by e-mail: detections, bans (automatic and manual), appeals waiting for a decision and the most suspicious players. Discord channels with the Weekly report event get it too. Turn it off in Settings.

False positives

If a detection fires for no reason:

  1. Mark it as false positive on the detection's page.
  2. If it keeps happening, lower its sensitivity in Rules → Detections.
  3. For scripts that teleport players (garages, houses, jail), use the allowTeleport export (see Scripts and integrations).
  4. Tell us on Discord with the detection code: it helps us tune the limits for everyone.