Aqui está um exemplo de um plugin Pawn que detecta jogadores que matam através das paredes ou usando mod Sobeit:
Este plugin usa uma variável global chamada max_wallhack_distance para definir a distância máxima permitida entre o jogador e seu alvo. Se essa distância for ultrapassada, o plugin envia uma mensagem de erro para o jogador e o expulsa do jogo.
Essa verificação sobre o mod sobeit, pode ser feita através do uso de Hooks, ou seja, funções que são executadas antes de determinadas funções nativas, e podemos usar essa funcao para verificar se o jogador esta usando algum mod.
Esse é apenas um exemplo básico, há muitos outros tipos de cheats que podem ser detectados, e esses exemplos também podem ser aprimorados. Ele deve ser usado como base para criação de um sistema de anti-cheat completo.
Código:
#include <a_samp>
#include <YSI_Coding\ysi_hooks>
new max_wallhack_distance = 2.5;
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/wallhack", true) == 0)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
new Float:distance = Distance3D(x, y, z, GetPlayerPos(playerid, x, y, z));
if(distance > max_wallhack_distance)
{
SendClientMessage(playerid, 0xFF0000FF, "Wallhack detectado!");
Kick(playerid);
return 1;
}
}
return 0;
}
Este plugin usa uma variável global chamada max_wallhack_distance para definir a distância máxima permitida entre o jogador e seu alvo. Se essa distância for ultrapassada, o plugin envia uma mensagem de erro para o jogador e o expulsa do jogo.
Essa verificação sobre o mod sobeit, pode ser feita através do uso de Hooks, ou seja, funções que são executadas antes de determinadas funções nativas, e podemos usar essa funcao para verificar se o jogador esta usando algum mod.
Código:
forward OnPlayerShoot(playerid);
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/shoot", true) == 0)
{
new mod_sobeit;
GetPlayerMod(playerid, mod_sobeit);
if(mod_sobeit)
{
SendClientMessage(playerid, 0xFF0000FF, "Mod sobeit detectado!");
Kick(playerid);
return 1;
}
}
return 0;
}
Esse é apenas um exemplo básico, há muitos outros tipos de cheats que podem ser detectados, e esses exemplos também podem ser aprimorados. Ele deve ser usado como base para criação de um sistema de anti-cheat completo.