23.11.2018, 14:48
Pessoal, como se faz um teleport hack? Nгo quero cуdigo pronto, sу quero saber a lуgica e como o hack funciona.
@EDIT
Li errado HUEHUEHUE. Vocк pode fazer um timer que fica salvando a posiзгo do jogador, e comparando com a ultima posiзгo salva. Se for muito distante, й hack. Porйm, vc deve fazer uma adaptaзгo na funзгo SetPlayerPos para atualizar a posiзгo antiga do jogador. Essa й uma forma de se fazer. E para calcular a distвncia da posiзгo antiga para a atual do jogador, melhor fazer a comparaзгo em um plano 2D, sem usar a posiзгo Z para evitar que na queda, caso desзa muito rбpido, detecte (isso aconteceria se vc diminuisse o raio de detectaзгo) Resumo: Imagine um circulo em volta do jogador, que se move para a posiзгo dele a cada X tempo. Se ele sair desse circulo, й hacker. |
new Float:AntigaPos[MAX_PLAYERS][2];
public OnGameModeInit() {
SetTimer("AntiTeleporte", 500, true);
return 1;
}
forward AntiTeleporte();
public AntiTeleporte() {
new Float:pos[3];
for(new playerid = 0; playerid < MAX_PLAYERS; ++playerid) {
if(IsPlayerConnected(playerid)) {
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
if(GetPlayerDistanceFromPoint(playerid, AntigaPos[playerid][0], AntigaPos[playerid][1], pos[2]) > /* Tamanho do Hipotйtico Circulo */) {
// Й hacker
}
else {
AntigaPos[playerid][0] = pos[0];
AntigaPos[playerid][1] = pos[1];
}
}
}
return 1;
}
stock SetPlayerPosEx(playerid, Float:x, Float:y, Float:z) {
AntigaPos[playerid][0] = x;
AntigaPos[playerid][1] = y;
return SetPlayerPos(playerid, x, y, z);
}
public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
{
SetPlayerPos(playerid, fX, fY, fZ + 2.0);
return 1;
}