Anti-TP ,funciona assim ? -
Saidmrn - 15.10.2014
Olб pessoal,to tentando fazer um anti teleport,mas nгo sei se minha ideia funciona ou nгo.
Desconsiderando que o player possa entrar em interiores.
Em Ongamemodeinit:
Код:
SetTimer("antitp",3000,1);
Код:
public antitp(playerid)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x,y,z);
if(!IsPlayerInRangeOfPoint(playerid, 20.0, x,y,z))
SendClientMessage(playerid,-1,"tp detectado");
return 1;
}
Se a posiзгo alcance for maior que 20pontos da ultima posiзгo dele,mandar a msg de tp detectado.
So que ele nao manda a mensagem,mesmo que eu vб fora do alcance em menos de 3s
Re: Anti-TP ,funciona assim ? -
connork - 15.10.2014
Vocк terб que armazenar a ultima posiзгo e comparar com a atual, e lembrando que vai haver falhas se vocк nгo definir alguma variбvel juntamente quando utilizado SetPlayerPos e checando no antiTP se a mesma estб positiva.
A lуgica й simples.
Re: Anti-TP ,funciona assim ? -
n0minal - 15.10.2014
Nгo vai dar certo esse anti-tp aн nгo, primeiro porque vocк precisa usar um settimerex e nгo settimer, segundo й que precisa ser na onplayerconnect e nгo na ongamemodeinit, e terceiro й que vocк precisa armazenar as coordenadas pra depois de um tempo checar, e do jeito que vocк fez vai dar muito bug...
Re: Anti-TP ,funciona assim ? -
Saidmrn - 15.10.2014
Quote:
Originally Posted by n0minal
Nгo vai dar certo esse anti-tp aн nгo, primeiro porque vocк precisa usar um settimerex e nгo settimer, segundo й que precisa ser na onplayerconnect e nгo na ongamemodeinit, e terceiro й que vocк precisa armazenar as coordenadas pra depois de um tempo checar, e do jeito que vocк fez vai dar muito bug...
|
Entгo tб certo assim ?
pawn Код:
new posxtp[MAX_PLAYERS];
new posytp[MAX_PLAYERS];
new posztp[MAX_PLAYERS];
pawn Код:
SetTimerEx("antitp",2000,true,"d",playerid);
pawn Код:
public antitp(playerid)
{
GetPlayerPos(playerid,posxtp[playerid],posytp[playerid],posztp[playerid]);
if(!IsPlayerInRangeOfPoint(playerid, 20.0, posxtp[playerid],posytp[playerid],posztp[playerid]))
SendClientMessage(playerid,-1,"tp detectado");
return 1;
}
Coloquei assim e ele fica mandando a mensagem vбrias vezes,mesmo estando parado.
Re: Anti-TP ,funciona assim ? -
Artista - 15.10.2014
Isso nгo vai funcionar desse jeito...
Experimente ligar o timer na OnPlayerSpawn e armazene a posiзгo do player nas variбveis apуs a verificaзгo.
Lembrando que vc deve criar uma stock que armazene acima de tudo a posiзгo atual do player e fazer a funзгo do teleporte.
Ex:
pawn Код:
stock SetPlayerPosEx(playerid, Float:x, Float:y, Float:z)
{
//...
e substituir seus SetPlayerPos por SetPlayerPosEx
PS: Acabei de fazer e funcionou. Se tiver dъvidas, basta perguntar =)
Re: Anti-TP ,funciona assim ? -
Saidmrn - 15.10.2014
Quote:
Originally Posted by Artista
Isso nгo vai funcionar desse jeito...
Experimente ligar o timer na OnPlayerSpawn e armazene a posiзгo do player nas variбveis apуs a verificaзгo.
Lembrando que vc deve criar uma stock que armazene acima de tudo a posiзгo atual do player e fazer a funзгo do teleporte.
Ex:
pawn Код:
stock SetPlayerPosEx(playerid, Float:x, Float:y, Float:z) { //...
e substituir seus SetPlayerPos por SetPlayerPosEx
PS: Acabei de fazer e funcionou. Se tiver dъvidas, basta perguntar =)
|
Obrigado pela atenзгo.Ontem eu fiz desta maneira :
Onplayerconnect:
pawn Код:
SetTimerEx("antitp",5000,true,"d",playerid);
saiuinterior[playerid] = 0;
pawn Код:
public antitp(playerid)
{
if(GetPlayerInterior(playerid) != 0)
{
saiuinterior[playerid] = 1;
}else{
saiuinterior[playerid] = 0;
}
GetPlayerPos(playerid,posxantes,posyantes,poszantes);
SetTimerEx("antitp2",3000,true,"d",playerid);
return 1;
}
public antitp2(playerid)
{
if(!IsPlayerInRangeOfPoint(playerid, 80.0,posxantes,posyantes,poszantes ))
{
if(GetPlayerInterior(playerid) == 0 && saiuinterior[playerid] == 0)
{
new string[200];
SendClientMessage(playerid,-1,"tp detectado");
return 1;
}
}
}
e aparentou funcionar bem
Re: Anti-TP ,funciona assim ? -
Artista - 15.10.2014
Sobre a parte do interior, vocк pode usar a public
OnPlayerInteriorChange para fazer uma checagem de mudanзa de interior com mais precisгo

Lembrando que qualquer coisa, estamos juntos nessa (odeio cheaters '-')
Re: Anti-TP ,funciona assim ? -
Saidmrn - 15.10.2014
Quote:
Originally Posted by Artista
Sobre a parte do interior, vocк pode usar a public OnPlayerInteriorChange para fazer uma checagem de mudanзa de interior com mais precisгo 
Lembrando que qualquer coisa, estamos juntos nessa (odeio cheaters '-')
|
Cara,valeu por me falar dessa funзгo,eu pesquisei pra ver se tinha como checar a mudanзa de interior e nгo tinha achado nada =D
+1 REP
Re: Anti-TP ,funciona assim ? -
Saidmrn - 15.10.2014
Aproveitando o tуpico,como posso fazer para nгo apitar quando o player spawnar?
Re: Anti-TP ,funciona assim ? -
Artista - 15.10.2014
Й como eu disse acima, recomendo que vocк ative o timer no OnPlayerSpawn.
Pois quando vocк estб na parte de selecionar a skin a sua posiзгo estб sendo salva pelo timer. Aн quando aperta no botгo spawn vocк "usa um teleport hack".
Entгo recomendo que ligue o timer depois que o player ser spawnado. Se vocк usa algum sistema de spawn aleatуrio, pra garantir coloque a ativaзгo do timer depois do SetPlayerPos do seu sistema
Ah, e muito obrigado pelo REP *-*