Quote:
Originally Posted by Dayvison_
Tenho dois mйtodos, porem o primeiro nгo tenho certeza se ira funcionar.
- NВO SEI SE VAI FUNCIONAR, NECESSITA TESTE, APENAS UMA TEORIA, PODE ATRAPALHAR O JOGADOR.
Passos:- 1 . Armazena a posiзгo do jogador.
- 2 . Congele o jogador(Em minha teoria ele nгo ficaria congelado ja que, esta de rt).
- 2 . Obtenha a posiзгo do mesmo apуs x segundos.
- 4 . Compare as duas posiзхes, caso estejam diferentes o player esta de rt, ou utilizando algum cheat.
SE ISTO FUNCIONAR: caso deseje kickar o jogador, certifique-se de que o mesmo esta se movendo.
- PODE ATRAPALHAR O JOGADOR.
Passos:- 1 . Mostre um dialogo ao jogador "Vocк estб com rt?", "Nгo".
- 2 . Caso o jogador aperte o botгo, ele nгo estб de rt jб que o mesmo nгo irб ver o dialogo caso esteja.
|
Isso й inutil. se for pra usar isso eu uso /tapa (Setar posiзгo do player) e checar manualmente.
mas vlw pelo comentбrio, eu quero algo automбtico.
Como ngm me ajudou acho que vou usar isso aqui mesmo, mas nгo sei se vai funcionar 100 %
Code:
public OnPlayerUpdate(playerid)
{
if(!IsPlayerNPC(playerid))
{
new
szString[144],
Float:Pocket,
Nome[24];
GetPlayerPacketloss(playerid,Pocket);
if(Pocket >= 10.0)
{
PacketAltoAvisos[playerid] ++;
if(PacketAltoAvisos[playerid] >= 30)
{
GetPlayerName(playerid, Nome, 24);
format(szString, sizeof(szString), "[Aviso]: %s(id:%d) Possнvelmente estб de RT - Packet Loss:%0.1f", Nome, playerid, Pocket);
SendClientMessageToAll(-1, szString);
}
}
else PacketAltoAvisos[playerid] = 0;
}
return 1;
}
stock GetPlayerPacketloss(playerid,&Float:packetloss)
{
/* Returns the packetloss percentage of the given playerid - Made by Fusez */
if(!IsPlayerConnected(playerid)) return 0;
new nstats[400+1], nstats_loss[20], start, end;
GetPlayerNetworkStats(playerid, nstats, sizeof(nstats));
start = strfind(nstats,"packetloss",true);
end = strfind(nstats,"%",true,start);
strmid(nstats_loss, nstats, start+12, end, sizeof(nstats_loss));
packetloss = floatstr(nstats_loss);
return 1;
}