Yesterday, 01:43 PM
![[Image: Sem-titulo-2.png]](https://i.ibb.co/Kc0XnPRR/Sem-titulo-2.png)
EVO Anti-Cheat 1.3
About:
This is a new server-side anti-cheat developed for OpenMP, whose goal is to have security and absolute control over the player's data (info).
It is currently in constant development, still having some inconsistencies in certain situations, but it already has dozens of detections and is currently being used for testing on a PvP server, having great feedback from the project management.
Detection configuration:
As this is a closed-source anti-cheat, it has an external configuration file that can be reloaded at any time.
The configuration file currently has just over 200 configuration entries, where it is possible to parameterize exactly how each cheat that allows an external configuration should be detected.
Below are some of the configuration entries for better understanding:
Code:
cbug_speed_limit=
cbug_alert_count=
auto_cbug_speed_limit=
auto_cbug_alert_count=
armour_delay_check=
armour_alert_count=
health_delay_check=
health_alert_count=
driveby_delay_check=
fakekill_kill_flood_sequence_time=
fakekill_death_flood_sequence_time=
fakekill_kill_flood_alert_coun t=
fakekill_death_flood_alert_count=
fastrun_distance=
fastrun_distance_alert_count=
incoming_connection_alert_count=
incoming_connection_sequence_delay=
interior_delay_check=
interior_alert_count=
virtual_world_delay_check=
virtual_world_alert_count=
special_action_delay_check=
money_delay_check=
Security:
Any information in SA:MP can be easily manipulated, which can mess up the entire economy and the gameplay of others.
Currently, with the use of this anti-cheat, it is possible to recover correct information from the data of players who use cheats to manipulate them, such as health, armour, skin, weapons, ammo, attacked objects, etc., so that even when manipulating the information, it is not possible to maintain it during the data saving, thus creating an extra layer of validation in the information and ensuring the protection of each player's data against any type of external change.
Configuration control:
- Set when the anti-cheat should start for a specific player
- Set when the anti-cheat should stop for a specific player
- Set when the anti-cheat should pause or resume checking a specific cheat for a specific player
- Change and reload the anti-cheat settings at any time without having to restart the server or reload the filterscript
OS Compatibility:
All anti-cheat dependencies can be obtained for both Linux and Windows.
The anti-cheat is a filterscript, so it can be easily implemented like any other external script.
Game Mode Compatibility:
Since it is a robust anti-cheat with dozens of detections, an external configuration was created to adjust the detections according to the game mode or taste.
In a roleplay server, for example, the detections can be more sensitive, while for a PvP it is necessary to make weapon-related detections less sensitive or race-related detections less sensitive.
You can completely configure each detection as you prefer.
Detection approach:
The server is completely independent in deciding what to do about the detection.
For this, a library (evo_ac.inc) is provided containing all the information needed to apply the punishments and configurations.
Unlike most anti-cheats, this one generates an individual call in the respective callback informing more details about the detection.
Some callbacks:
Code:
AC_OnInvalidCameraCrasher(playerid, cam_mode)
AC_OnPlayerAmmo(playerid, old_ammo, new_ammo, weaponid)
AC_OnPlayerArmour(playerid, Float:old_armour, Float:new_armour)
AC_OnPlayerCBug(playerid, speed)
AC_OnPlayerAutoCBug(playerid, speed)
AC_OnPlayerCheckpoint(playerid)
AC_OnPlayerDamageFlood(playerid, damagedid, weaponid, damage_count)
Damage control:
With Evo Anti-Cheat's damage control, even using cheat, the player's life decreases and if it doesn't decrease (through RPC blocks) there is no problem, because the player's life and vest are The player's health is handled unilaterally, that is, the client's (player's) health and vest are just another visual piece of information, just like money. So, for example, if the player's health is zero on the server, but on his screen his health is full due to RPC blocking, it will be considered cheating and will call the functions corresponding to the cheat.
It is also possible to configure the damage in different situations:
- Body parts
- For custom damage in 7 areas of the body
- Range
- Automatically blocks shots fired outside the defined range
- Damage blocking in body parts
- For custom damage blocking in 7 areas of the body
- Permission/block to give/receive damage
- To allow and/or block damage given or received to players
Detections (so far):
- Armor
- C-Bug
- Auto C-Bug
- Car Fly
- Dialog Spoof
- Drive-By
- Fake Kill/Death (flood)
- Fast Run
- GodMode
- Health
- Connection Flood
- Interior
- Special Action (All)
- Money
- Multi Connection
- No Fall Damage
- Ping
- Player Checkpoint
- Player Position (Fly, Airbreak, Teleport)
- Race Checkpoint
- Skin
- Vehicle Fast Enter/Exit
- Vehicle Health
- Vehicle Mod (Invalid, Cheat)
- Vehicle Speed
- Virtual World
- Weapon (Forbbiden, Invalid, Cheat)
- Ammo (Infinite, Invalid, Cheat)
- Rapid Fire
- Free Cam
- Player Velocity (troll)
- Vehicle Velocity (troll)
- Fake AFK
- Fake Lag
- Invisible
- Damage (Invalid, Flood)
- Silent Aim
- Pro Aim
- Quick Vehicle Change (shot, pull, teleport)
- Anti Kick
- Invalid Bullet Crasher
- Invalid Damage Crasher
- Invalid Camera Crasher
- NOP (TogglePlayerSpectating, TogglePlayerControllable, RemovePlayerFromVehicle, SpawnPlayer, SetPlayerPos)
- Attached Objects (Full protection)
- RCon [new]
- Force Spawn [new]
- Fast Respawn [new]
- Flood Cheats [new]
Resources required:
- [Plugin] GVar
Functions added so far:
Anti-cheat configuration:
Code:
stock EAC_InitPlayerAC(playerid) // Starts the anti-cheat for the player
stock EAC_StopPlayerAC(playerid) // Stops the anti-cheat for the player
stock EAC_IsActivePlayerAC(playerid) // Checks if the anti-cheat is active (started) for the player
stock EAC_PausePlayerAC(playerid, bool:pause, cheatid = -1) // Pauses a given protection for the player
stock EAC_IsPausedPlayerAC(playerid, cheatid) // Returns if a given protection is paused for the player
stock EAC_GetCheatNameAC(cheatid) // Returns the name of the cheat with base no index
stock EAC_ReloadSettings(const file[]) // If you change the configuration file, you can reload the configuration in real time without restarting or reloading the filterscript
stock EAC_Auth(const token[]) // Authenticate the anti-cheat token to enable it
Damage control:
Code:
stock EWD_SetPlayerWeaponRange(playerid, weaponid, Float:range) // Change the range of a given weapon for the player
stock Float:EWD_GetPlayerWeaponRange(playerid, weaponid) // Returns the range of a given weapon for the player
stock EWD_SetPlayerWeaponDamage(playerid, weaponid, Float:amount) // Change the damage of a given weapon for the player
stock Float:EWD_GetPlayerWeaponDamage(playerid, weaponid) // Returns the damage of a given weapon of the player
stock EWD_SetPlayerBodyHitDamage(playerid, weaponid, bodypart, Float:amount) // Changes the damage of a given weapon and body part for the player
stock Float:EWD_GetPlayerBodyHitDamage(playerid, weaponid, bodypart) // Returns the damage of a given weapon and body part for the player
stock EWD_BlockPlayerBodyHitDamage(playerid, weaponid, bodypart, Float:amount) // Changes the damage block of a given weapon and body part for the player
stock Float:EWD_GetPlayerBlockedBodyHitDamage(playerid, weaponid, bodypart) // Returns the damage block of a given weapon and body part for the player
stock EWD_BlockPlayerArmourHitDamage(playerid, weaponid, bodypart, Float:amount) // Changes the damage block of a given weapon, exclusively if wearing a vest, for the player
stock Float:EWD_GetPlayerBlockedArmourHitDamage(playerid, weaponid, bodypart) // Returns the damage block of a given weapon, exclusively if using a vest, of the player
stock EWD_TogglePlayerGiveBulletDamage(playerid, bool:toggle) // Enables/Disables the damage sent from the player
stock EWD_IsPlayerGivingBulletDamage(playerid) // Returns whether the damage sent from the player is enabled or not
stock EWD_TogglePlayerTakeBulletDamage(playerid, bool:toggle) // Enables/Disables the damage received from the player
stock EWD_IsPlayerTakingBulletDamage(playerid) // Returns whether the damage received from the player is enabled or not
stock EWD_EnablePlayerFriendlyFire(playerid, bool:enable) // Enables/Disables the damage sent to players on the same team
Additional functions:
Code:
stock EAC_SetPlayerGodMode(playerid, bool:active) // Enables/Disables player's God mode
stock EAC_IsPlayerInGodMode(playerid) // Returns whether the player is in God mode or not
stock EAC_SetPlayerMoney(playerid, money) // Sets the player's money
stock EAC_UpdatePlayerMoney(playerid) // Only updates the player's money on the screen based on the anti-cheat memory
stock EAC_GetPlayerFreeAttachedObjectSlot(playerid) // Returns the first free slot for attacked objects on the player's body
stock EAC_GetPlayerAttachedObjectModelIndex(playerid, modelid) // Returns the index of the attacked object on the player's body based on the object's model
stock EAC_GetPlayerAttachedObjectModel(playerid, index) // Returns the model of the attacked object on the player's body player based on the anti-cheat's index and memory (and not on the client's date)
stock EAC_ApplyPlayerAttachedObjects(playerid) // Applies the attacked objects to the player's body based on the anti-cheat's memory
stock EAC_GiveAllPlayerWeapons(playerid, delay = 0) // Resets the player's weapons and provides those in the anti-cheat's memory, with the option to apply with a delay
stock EAC_GetPlayerWeaponData(playerid, slot, &weapons, &ammo) // Returns the player's weapons, based on the anti-cheat's memory (and not on the client's date)
stock EAC_SetPlayerWeapon(playerid, weaponid, ammo) // Sets a specific weapon for the player
stock EAC_IsValidPlayerWeapon(playerid, weaponid) // Returns whether a given player's weapon was designed based on the server (and not on the client's date) client)
Project maintenance:
Despite being recent, it is a solid, stable and extremely optimized project. Always focused on improvements and new implementations
Server where it is being tested:
If you are interested in checking the anti-cheat and its effectiveness, just access the server below:
Os Aposented PvP: 104.234.224.87:7777
More information:
Discord: https://discord.gg/cuFaYC9UMQ
Now you can:
- Interact with a custom Bot for key and payment automation
- Report bugs
- Send feedback
- Private call with me to discuss anti-cheat
- Download
Translated from portalsamp.