SA-MP Forums Archive
[Ajuda] Anti-TP ,funciona assim ? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Anti-TP ,funciona assim ? (/showthread.php?tid=541873)



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 *-*