Dъvida sobre loops -
bruxo00 - 02.04.2016
Bem, estava aqui a fazer umas alteraзхes quando olhei para um loop que tenho aqui:
PHP Code:
for(new i = 0; i < GetOnlinePlayers(); i++)
{
if(!IsPlayerConnected(i)) continue;
GuardarJogador(i);
}
PHP Code:
stock GetOnlinePlayers()
{
new count, g = GetMaxPlayers();
for(new d; d < g; d++) if(IsPlayerConnected(d) && !IsPlayerNPC(d)) count++;
return count;
}
A dъvida й a seguinte: como hб a possibilidade de estarem 20 jogadores no servidor, mas por exemplo haver um deles estar com o ID 50. (podem ter saнdo todos do ID 20 ao ID 40). O loop nгo vai chegar ao jogador com o ID 50, certo? Ou vai?
Re: Dъvida sobre loops -
F1N4L - 02.04.2016
Se estivesse usando MAX_PLAYERS eu teria certeza em responder q sim, mas n sei como funciona com GetMaxPlayers...
Re: Dъvida sobre loops -
Dayvison_ - 02.04.2016
Isto ae sу fez seu loop ficar mais lento, e nгo nгo vai chegar no jogador 50.
@Edit mais lento '-', nгo menor
Re: Dъvida sobre loops -
PT - 02.04.2016
Quote:
Originally Posted by bruxo00
Bem, estava aqui a fazer umas alteraзхes quando olhei para um loop que tenho aqui:
PHP Code:
for(new i = 0; i < GetOnlinePlayers(); i++)
{
if(!IsPlayerConnected(i)) continue;
GuardarJogador(i);
}
PHP Code:
stock GetOnlinePlayers()
{
new count, g = GetMaxPlayers();
for(new d; d < g; d++) if(IsPlayerConnected(d) && !IsPlayerNPC(d)) count++;
return count;
}
A dъvida й a seguinte: como hб a possibilidade de estarem 20 jogadores no servidor, mas por exemplo haver um deles estar com o ID 50. (podem ter saнdo todos do ID 20 ao ID 40). O loop nгo vai chegar ao jogador com o ID 50, certo? Ou vai?
|
Estas a colocar os teus loops lentos desnecessariamente.
Usa foreach/y_iterate!
Re: Dъvida sobre loops -
bruxo00 - 03.04.2016
Quote:
Originally Posted by PT
Estas a colocar os teus loops lentos desnecessariamente.
Usa foreach/y_iterate!
|
Qual й o verdadeiro ganho em trocar de um loop "normal" para o foreach?
Re: Dъvida sobre loops -
PT - 03.04.2016
Vais fazer loops com valores de quem apenas estб on-line. E dб para fazer muito mais coisas
Re: Dъvida sobre loops -
Artista - 03.04.2016
Quote:
Originally Posted by bruxo00
PHP Code:
for(new i = 0; i < GetOnlinePlayers(); i++)
{
if(!IsPlayerConnected(i)) continue;
GuardarJogador(i);
}
PHP Code:
stock GetOnlinePlayers()
{
new count, g = GetMaxPlayers();
for(new d; d < g; d++) if(IsPlayerConnected(d) && !IsPlayerNPC(d)) count++;
return count;
}
|
Esse loop ficarб muito lento, atй se vocк fizer...
PHP Code:
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
GuardarJogador(i);
}
... ficarб melhor do que isso.
E bem, tambйm recomendo o uso do foreach. Imagine que vocк tenha 3 jogadores online no servidor, com os ids: 0, 14, 53
Em vez de precisar fazer um loop comeзando do 0 ao 53, isto й, 54 voltas, o foreach farб um loop com apenas 3 voltas e terб o mesmo resultado porйm muito mais rбpido. Isto porque ele armazena os ids que estгo online tornando a checagem bem rбpida.
Re: Dъvida sobre loops -
Coreia - 04.04.2016
Nгo, GetMaxPlayers o nome da prуpria funзгo jб diz "Getar o nъmero mбximo de jogadores no servidor. "
JOGADOR nгo ID.
Re: Dъvida sobre loops -
widhost - 04.04.2016
Quote:
Originally Posted by bruxo00
Bem, estava aqui a fazer umas alteraзхes quando olhei para um loop que tenho aqui:
PHP Code:
for(new i = 0; i < GetOnlinePlayers(); i++)
{
if(!IsPlayerConnected(i)) continue;
GuardarJogador(i);
}
PHP Code:
stock GetOnlinePlayers()
{
new count, g = GetMaxPlayers();
for(new d; d < g; d++) if(IsPlayerConnected(d) && !IsPlayerNPC(d)) count++;
return count;
}
A dъvida й a seguinte: como hб a possibilidade de estarem 20 jogadores no servidor, mas por exemplo haver um deles estar com o ID 50. (podem ter saнdo todos do ID 20 ao ID 40). O loop nгo vai chegar ao jogador com o ID 50, certo? Ou vai?
|
Vai sim, O ID do player nгo tem nada a ver com este loop, ID й apenas a identificaзгo dele naquele momento,
Pode existir ID: 9, 4, 5, 19, 200, 45 e 40
Esse loop nгo vai rodar 200 vezes, ele vai rodar o nъmero de jogadores no momento do loop.
No caso, 7 players, de 0 а 6.
Vocк deve perceber que O ID do jogador nгo tem relaзгo com a quantidade de jogadores.
Re: Dъvida sobre loops -
Bruno13 - 04.04.2016
Vocк nгo estб sabendo qual a utilidade da funзгo que tens...basta vocк ler e interpretar o que a funзгo executa e seu retorno, logo, verбs que ela lhe fornece o nъmero total de players online. Nгo deve ser usado em loops, e sim, apenas uma informaзгo de quantos players estгo conectados.
E para loops, se nгo fores utilizar alguma lib que conte com um loop mais eficiente, pelo menos utilize o mбximo que as funзхes nativa lhe permitem...
PHP Code:
static i, playerPoolSize;
playerPoolSize = GetPlayerPoolSize();
for(i = 0; i <= playerPoolSize; i++)
{
if(!IsPlayerConnected(i)) continue;
GuardarJogador(i);
}