Aquele famoso tempo parado, quando o GM, o HOST ou o PLAYER da uma lagadinha...
Nunca tive que lidar com isso até o SAMP ANDROID, a galera tem muitos problemas de conexão, seja por 4G ou WIFI OSCILANDO...
Agora sem o forum antigo não tenho material (exemplos de uso reais) pra ver como a galera lida com isso, mas lembro de ver na wiki umas funções de conexão
Vocês de alguma forma conseguem resincronizar os players que lagam?
O máximo que eu consegui foi kickar os players de tempo parado, mas isso tá me fazendo perder boa parte dos players de celular
OnPlayerUpdate
Alguém me da uma luz? Uma ideia melhor pra melhorar? Um jeito melhor de lidar com isso?
Nunca tive que lidar com isso até o SAMP ANDROID, a galera tem muitos problemas de conexão, seja por 4G ou WIFI OSCILANDO...
Agora sem o forum antigo não tenho material (exemplos de uso reais) pra ver como a galera lida com isso, mas lembro de ver na wiki umas funções de conexão
Vocês de alguma forma conseguem resincronizar os players que lagam?
O máximo que eu consegui foi kickar os players de tempo parado, mas isso tá me fazendo perder boa parte dos players de celular
Código:
new PacketAltoAvisos[MAX_PLAYERS];
OnPlayerUpdate
Código:
new Float:Pocket;
GetPlayerPacketloss(playerid,Pocket);
if(Pocket >= 10.0)
{
PacketAltoAvisos[playerid] ++;
if(PacketAltoAvisos[playerid] >= 30)
{
new PlayerIP[20];
GetPlayerIp(playerid, PlayerIP, sizeof PlayerIP);
if(idiom[playerid] == 1) SendClientMessage(playerid, -1, "Você foi desconectado por 3 min estar dessincronizado (Relogio Travado) para evitar problemas. Ajuste sua conexão!");
else if(idiom[playerid] == 2) SendClientMessage(playerid, -1, "You have been disconnected for 3 min because you are out of sync (Clock Locked) to avoid problems. Adjust your connection!");
else if(idiom[playerid] == 3) SendClientMessage(playerid, -1, "Se ha desconectado por 3 min porque no está sincronizado (Reloj Bloqueado) para evitar problemas. ¡Ajusta tu conexión!");
BlockIpAddress(PlayerIP, 3 * 60 * 1000);
}
}
Código:
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;
}
Alguém me da uma luz? Uma ideia melhor pra melhorar? Um jeito melhor de lidar com isso?