#include <a_samp>
#undef MAX_PLAYERS
#define MAX_PLAYERS 100
#define FILTERSCRIPT
#include <Pawn.RakNet>
static
Float:old_pos[MAX_PLAYERS][3];
public OnPlayerUpdate(playerid){
if(GetPlayerDistanceFromPoint(playerid, old_pos[playerid][0], old_pos[playerid][1], old_pos[playerid][2]) > 40.0)
{
// 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
{
BS_ReadValue(bs,
PR_FLOAT, old_pos[playerid][0],
PR_FLOAT, old_pos[playerid][1],
PR_FLOAT, old_pos[playerid][2]);
}
return 1;
}
if(GetPlayerDistanceFromPoint(playerid, old_pos[playerid][0], old_pos[playerid][1], old_pos[playerid][2]) > 40.0)
#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;
}
Por que old_pos vai ter as novas posiзхes antes mesmo do jogador ser teleportado atй lб.
PHP Code:
Usar gettime para um pequeno delay geralmente funciona. PHP Code:
|
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? |