26/04/2025 10:46
(Esta mensagem foi modificada pela última vez a: 33 minutos atrás por Dr Editor.)
![[Imagem: Sem-T-tulo-1.png]](https://i.ibb.co/TqNDCm8S/Sem-T-tulo-1.png)
EVO Anti-Cheat 1.0 [OpenMP]
Sobre:
Trata-se de um novo anti-cheat server-side desenvolvido para OpenMP, cujo objetivo é ter segurança e controle absoluto sobre a data (info) do jogador.
Atualmente está em constante desenvolvimento, tendo ainda algumas incoerências em certas situações, porém já possui dezenas de detecções e atualmente está sendo utilizado para testes em um servidor PvP tendo ótimo feedback
por parte da gestão do projeto.
Configuração de detecção:
Por se tratar de um anti-cheat de codigo fonte fechado, possui um arquivo de configuração externo que pode ser recarregado a qualquer momento.
O arquivo de configuração possui atualmente pouco mais de 200 entradas de configuração, onde é possível parametrizar exatamente como deve ser feito a detecção de cada cheat que permita uma configuração externa.
Abaixo consta algumas das entradas de configuração para melhor entendimento:
Código:
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_count=
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=
Segurança:
Qualquer informação no SA:MP pode ser facilmente manipulada, o que bagunça toda uma economia e a gameplay dos demais.
Atualmente, com o uso deste anti-cheat, é possível resgatar informações corretas da data de jogadores que utilizam cheat para manipulá-las como vida, colete, armas, munição, objetos atacados etc, de forma que mesmo manipulando
as informações, não seja possível mantê-las durante o salvamento dos dados, criando assim uma camada extra de validação nas informações e garantindo a proteção dos dados de cada jogador contra qualquer tipo de alteração externa.
Controle de configuração:
- Defina em que momento o anti-cheat deve iniciar para determinado jogador
- Defina em que momento o anti-cheat deve parar para determinado jogador
- Defina em que momento o anti-cheat deve pausar ou retomar a verificação de um cheat específico para determinado jogador
- Altere e recarregue as configurações do anti-cheat a qualquer momento sem necessidade de reiniciar o servidor ou recarregar o filterscript
Compatibilidade de SO:
Todas as dependências do anti-cheat podem ser obtidas tanto para Linux quanto para Windows.
O anti-cheat é um filterscript, então pode ser facilmente implementado como qualquer outro script externo.
Compatibilidade de modo de jogo:
Por se tratar de um anti-cheat robusto e com dezenas de detecções, foi criado uma configuração externa para ajustar as detecções conforme o modo de jogo ou gosto.
Em um servidor roleplay, por exemplo, as detecções podem ser mais sensíveis, enquanto para um PvP é necessário tornar menos sensível detecções relacionadas à armas ou race menos sensível detecções para veículos.
Você configura completamente cada detecção como preferir.
Abordagem de detecção:
O servidor é totalmente independente para decidir o que fazer sobre a detecção.
Para isto, é fornecido uma biblioteca (evo_ac.inc) contendo todas as informações necessárias para aplicar as punições e configurações.
Diferente da maioria dos anti-cheats, este gera uma chamada individual na respectiva callback informando maiores detalhes sobre a detecção.
Algumas callbacks:
Código:
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)
Controle de dano:
Com o controle de dano do Evo Anti-Cheat, mesmo usando cheat, a vida do jogador diminui e caso não diminua (através de bloqueios de RPC) não há problema, pois a vida e colete do jogador é trabalhada de forma unilateral, ou seja, a vida e colete do cliente (jogador) é só mais uma informação visual assim como o dinheiro. Então, por exemplo, se o jogador estiver com vida zerada no servidor, porém na tela dele a vida estiver cheia em decorrência do bloqueio de RPC, será considerado cheat e chamará as funções respectivas ao cheat.
Também é possível configurar o dano em diferentes situações:
- Partes do corpo
- Para danos personalizados em 7 regiões do corpo
- Alcance
- Bloqueia automaticamente disparos realizados fora do alcance definido
- Bloqueio de dano em partes do corpo
- Para bloqueios de dano personalizados em 7 regiões do corpo
- Permissão/bloqueio para dar/receber dano
- Para permitir e/ou bloquear dano dado ou recebido para jogadores
Detecções (até o momento):
- Armour
- 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
- Anti Kick
- Invalid Bullet Crasher
- Invalid Damage Crasher
- Invalid Camera Crasher
- NOP (TogglePlayerSpectating, TogglePlayerControllable, RemovePlayerFromVehicle, SpawnPlayer, SetPlayerPos)
- Attached Objects (Full protection)
Recursos necessários:
- [Plugin] GVar
- [Plugin] Sscanf
- [Include] Foreach
Funções adicionadas até então:
Configuração do anti-cheat:
Código:
stock EAC_InitPlayerAC(playerid) // Inicia o anti-cheat para o jogador
stock EAC_StopPlayerAC(playerid) // Para o anti-cheat para o jogador
stock EAC_IsActivePlayerAC(playerid) // Verifica se o anti-cheat está ativo (iniciado) para o jogador
stock EAC_PausePlayerAC(playerid, bool:pause, cheatid = -1) // Pausa determinada proteção para o jogador
stock EAC_IsPausedPlayerAC(playerid, cheatid) // Retorna se determinada proteção está pausada para o jogador
stock EAC_GetCheatNameAC(cheatid) // Retorna o nome do cheat com base no index
stock EAC_ReloadSettings(const file[]) // Caso altere o arquivo de configuração, é possível recarregar a configuração em tempo real sem reiniciar ou recarregar o filterscript
stock EAC_Auth(const token[]) // Autentica o token do anti-cheat para habilitá-lo
Controle de dano:
Código:
stock EWD_SetPlayerWeaponRange(playerid, weaponid, Float:range) // Altera o alcance de determinada arma para o jogador
stock Float:EWD_GetPlayerWeaponRange(playerid, weaponid) // Retorna o alcance de determinada arma do jogador
stock EWD_SetPlayerWeaponDamage(playerid, weaponid, Float:amount) // Altera o dano de determinada arma para o jogador
stock Float:EWD_GetPlayerWeaponDamage(playerid, weaponid) // Retorna o dano de determinada arma do jogador
stock EWD_SetPlayerBodyHitDamage(playerid, weaponid, bodypart, Float:amount) // Altera o dano de determinada arma e região do corpo para o jogador
stock Float:EWD_GetPlayerBodyHitDamage(playerid, weaponid, bodypart) // Retorna o dano de determinada arma e região do corpo do jogador
stock EWD_BlockPlayerBodyHitDamage(playerid, weaponid, bodypart, Float:amount) // Altera o bloqueio de dano de determinada arma e região do corpo para o jogador
stock Float:EWD_GetPlayerBlockedBodyHitDamage(playerid, weaponid, bodypart) // Retorna o bloqueio de dano de determinada arma e região do corpo do jogador
stock EWD_BlockPlayerArmourHitDamage(playerid, weaponid, bodypart, Float:amount) // Altera o bloqueio de dano de determinada arma, exclusivamente caso utilize colete, para o jogador
stock Float:EWD_GetPlayerBlockedArmourHitDamage(playerid, weaponid, bodypart) // Retorna o bloqueio de dano de determinada arma, exclusivamente caso utilize colete, do jogador
stock EWD_TogglePlayerGiveBulletDamage(playerid, bool:toggle) // Habilita/Desabilita o dano enviado do jogador
stock EWD_IsPlayerGivingBulletDamage(playerid) // Retorna se o dano enviado do jogador está habilitado ou não
stock EWD_TogglePlayerTakeBulletDamage(playerid, bool:toggle) // Habilita/Desabilita o dano recebido do jogador
stock EWD_IsPlayerTakingBulletDamage(playerid) // Retorna se o dano recebido do jogador está habilitado ou não
stock EWD_EnablePlayerFriendlyFire(playerid, bool:enable) // Habilita/Desabilita o dano enviado a jogadores do mesmo time
Funções adicionais:
Código:
stock EAC_SetPlayerGodMode(playerid, bool:active) // Ativa/Desativa modo Deus do jogador
stock EAC_IsPlayerInGodMode(playerid) // Retorna se o jogador está ou não em modo Deus
stock EAC_SetPlayerMoney(playerid, money) // Define o dinheiro do jogador
stock EAC_UpdatePlayerMoney(playerid) // Apenas atualiza na tela o dinheiro do jogador com base na memória do anti-cheat
stock EAC_GetPlayerFreeAttachedObjectSlot(playerid) // Retorna o primeiro slot livre para objetos atacados no corpo do jogador
stock EAC_GetPlayerAttachedObjectModelIndex(playerid, modelid) // Retorna o index do objeto atacado no corpo do jogador com base no modelo do objeto
stock EAC_GetPlayerAttachedObjectModel(playerid, index) // Retorna o modelo do objeto atacado no corpo do jogador com base no index e memória do anti-cheat (e não na data do cliente)
stock EAC_ApplyPlayerAttachedObjects(playerid) // Aplica os objetos atacados no corpo do jogador com base na memória do anti-cheat
stock EAC_GiveAllPlayerWeapons(playerid, delay = 0) // Reseta as armas do jogador e fornece as que estão na memória do anti-cheat, podendo aplicar com delay
stock EAC_GetPlayerWeaponData(playerid, slot, &weapons, &ammo) // Retorna as armas do jogador, com base na memória do anti-cheat (e não na data do cliente)
stock EAC_SetPlayerWeapon(playerid, weaponid, ammo) // Define uma arma especifica para o jogador
stock EAC_IsValidPlayerWeapon(playerid, weaponid) // Retorna se determinada arma do jogador foi concebida com base no servidor (e não data do cliente)
Manutenção do projeto:
Apesar de recente, é um projeto sólido, estável e extremamente otimizado.
Com foco sempre em melhorias e novas implementações
Servidor em que está sendo testado:
Caso tenham interesse em conferir o anti-cheat e sua efetividade, basta acessar o servidor abaixo:
Os Aposented PvP: 104.234.224.87:7777
Maiores informações:
Por hora, me chame via Discord para mais detalhes: .eduardoac
Em breve trarei o Discord do projeto, onde será possível:
- Interagir com um Bot personalizado para automação de chaves e pagamentos
- Reportar bugs
- Enviar feedback
- Call privada comigo para discutir sobre o anti-cheat
- Download
SA:MP Dev Tools
Faça mais, ganhe mais e poupe tempo!
Viper Anti-Cheat
Torne seu servidor mais seguro!
________________________________________
Soluções personalizadas para SA:MP
Discord: .eduardoac | Eduardo AC#3140
Faça mais, ganhe mais e poupe tempo!
Viper Anti-Cheat
Torne seu servidor mais seguro!
________________________________________
Soluções personalizadas para SA:MP
Discord: .eduardoac | Eduardo AC#3140