Quote:
Originally Posted by BrunoBM23
Por que old_pos vai ter as novas posiзхes antes mesmo do jogador ser teleportado atй lб.
PHP Code:
if(GetPlayerDistanceFromPoint(playerid, old_pos[playerid][0], old_pos[playerid][1], old_pos[playerid][2]) > 40.0)
Entгo faz sentido a distвncia de GetPlayerDistanceFromPoint ser maior que 40. Pois essa funзгo vai verificar a distвncia entre sua posiзгo atual e a nova, que nesse caso, й old_pos (Em que o jogador ainda nгo chegou).
Usar gettime para um pequeno delay geralmente funciona.
PHP Code:
#include <a_samp>
#undef MAX_PLAYERS
#define MAX_PLAYERS 100
#define FILTERSCRIPT
#include <Pawn.RakNet>
static
Float:old_pos[MAX_PLAYERS][3],
teleport_time[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
teleport_time[playerid] = 0;
return 1;
}
public OnPlayerUpdate(playerid){
if(GetPlayerDistanceFromPoint(playerid, old_pos[playerid][0], old_pos[playerid][1], old_pos[playerid][2]) > 40.0 && teleport_time[playerid] < gettime())
{
// Teleport Hack
}
else GetPlayerPos(playerid, old_pos[playerid][0], old_pos[playerid][1], old_pos[playerid][2]);
return 1;
}
public OnOutcomingRPC(playerid, rpcid, BitStream:bs){
if(rpcid == 12) // SetPlayerPos
{
teleport_time[playerid] = gettime() + 3;
BS_ReadValue(bs,
PR_FLOAT, old_pos[playerid][0],
PR_FLOAT, old_pos[playerid][1],
PR_FLOAT, old_pos[playerid][2]);
}
return 1;
}
|
ah sim, mas eu nгo queria usar timer pois os hackers se aproveitam disso, exemplo:
O jogador usa algum comando de teleport como /SF, entгo ele vai ficar imune ao AntiTeleport por alguns segundos jб que a funзгo SetPlayerPos foi usada nele entende?