Anti-cheat no open.mp: detectando os cheats mais comuns
No SA-MP e no open.mp, o cliente do jogador pode ser modificado. Um anti-cheat no servidor compara o que o cliente diz com o que é possível e com o que o servidor sabe.
Princípio: o servidor é a fonte da verdade
- O dinheiro "de verdade" é o que está na variável do servidor, não o que o HUD mostra;
- As armas permitidas são as que o servidor deu;
- A vida máxima é a que o servidor definiu.
Cheats comuns e como detectar
Dinheiro
Não use GetPlayerMoney como valor oficial. Mantenha Jogador[playerid][jDinheiro] e sincronize o HUD a partir dele. Diferenças indicam tentativa de cheat.
Armas
Registre as armas que o servidor deu. Se o jogador aparecer com uma arma que não recebeu (GetPlayerWeaponData), remova e alerte a staff.
Vida e colete
Controle os valores no servidor. Valores acima do máximo definido ou "imortalidade" são sinais claros.
Teleporte
Compare a posição atual com a anterior e o tempo passado. Distâncias impossíveis indicam teleporte, exceto quando o próprio servidor teleportou (marque isso com uma flag).
Speed hack
Calcule a velocidade (GetPlayerVelocity ou GetVehicleVelocity) e compare com o máximo do veículo ou da corrida a pé.
Fly e airbreak
Jogador a pé em altura sem estar num objeto, com animação incompatível ou velocidade vertical estranha.
Jetpack
Estado especial de ação (SPECIAL_ACTION_USEJETPACK) sem que o servidor tenha dado.
Evite falsos positivos
- Lag pode parecer teleporte. Use tolerâncias e várias detecções seguidas antes de agir;
- Marque ações legítimas do servidor (teleporte, dar arma) antes de executá-las;
- Comece com alertas para a staff, não com ban automático. Automatize só o que tiver certeza.
Onde checar
Use um timer com intervalo razoável ou os callbacks certos (mudança de arma, estado). Evite checagens pesadas em OnPlayerUpdate.
Anti-cheats prontos
Há anti-cheats de código aberto na comunidade. Estude o código, teste bem e veja a compatibilidade com o open.mp antes de usar.
Registre tudo
Cada alerta com jogador, tipo, valores e horário. Isso ajuda a staff a decidir e a calibrar o sistema.
Hospede seu servidor com a VittHost
Nos planos OPENMP-BR da VittHost, seu anti-cheat roda em servidores no Brasil com ping baixo (menos lag, menos falsos positivos). Painel Pterodactyl, proteção DDoS, MySQL incluso, compatibilidade total com scripts SA-MP e teste grátis de 3 dias.