Essa й a melhor forma desse fazer uma loop para os players conectados? -
[BOPE]Seu._.Madruga - 11.02.2016
Creio que a primeira seja a melhor forma de criar um loop para a determinada quantidade de players online de forma que nгo perca tempo com ids invбlidos e a loop girando na quantidade certa. Estou correto ou errado?
PHP код:
for(new i = 0, j = GetPlayerPoolSize(); i <= j; ++i)
{
if(IsPlayerConnected(i)) SendClientMessage(i, -1, "Hello World !");
}
for(new i = 0; i < MAX_PLAYERS; ++i)
{
if(IsPlayerConnected(i)) SendClientMessage(i, -1, "Hello World !");
}
for(new i = 0; i < GetMaxPlayers(); ++i)
{
if(IsPlayerConnected(i)) SendClientMessage(i, -1, "Hello World !");
}
Re: Essa й a melhor forma desse fazer uma loop para os players conectados? -
willttoonn - 11.02.2016
No topo do GM:
pawn Код:
#undef MAX_PLAYERS
#define MAX_PLAYERS (50) // Altere de acordo com a quantidade de slots que vocк liberar.
Use a include foreach.
E os seguinte loop:
pawn Код:
foreach (new i : Player)
{
//Cуdigo aqui
}
Basta configurar alguns if's que fica tranquilo.
Re: Essa й a melhor forma desse fazer uma loop para os players conectados? -
F1N4L - 11.02.2016
Quote:
Originally Posted by willttoonn
No topo do GM:
pawn Код:
#undef MAX_PLAYERS #define MAX_PLAYERS (50) // Altere de acordo com a quantidade de slots que vocк liberar.
|
Eu faзo isso mas n sabia q dava para definir a mesma funзгo q vc desabilitou, eu uso SLOTS em vez de
MAX_PLAYERS
Re: Essa й a melhor forma desse fazer uma loop para os players conectados? -
Coringa_Vilao - 11.02.2016
use a include foreach , pega apenas os players online !
Re: Essa й a melhor forma desse fazer uma loop para os players conectados? -
zSuYaNw - 11.02.2016
Quote:
Originally Posted by willttoonn
No topo do GM:
pawn Код:
#undef MAX_PLAYERS #define MAX_PLAYERS (50) // Altere de acordo com a quantidade de slots que vocк liberar.
Use a include foreach.
E os seguinte loop:
pawn Код:
foreach (new i : Player) { //Cуdigo aqui }
Basta configurar alguns if's que fica tranquilo.
|
Nгo й bem assim que utiliza esta famosa include do ******.
--
Bom, fiz comentando:
PHP код:
for(new i = 0, j = GetPlayerPoolSize(); i <= j; ++i) // pegarб jogadores online somente
for(new i = 0; i < MAX_PLAYERS; ++i) // Percorerб 500 players (geralmente oque estб definido na variбvel MAX_PLAYERS)
for(new i = 0; i < GetMaxPlayers(); ++i) // Pegarб a quantidade de slots tem no servidor.
Re: Essa й a melhor forma desse fazer uma loop para os players conectados? -
Locky_ - 11.02.2016
Quote:
Originally Posted by zSuYaNw
Nгo й bem assim que utiliza esta famosa include do ******.
--
Bom, fiz comentando:
PHP код:
for(new i = 0, j = GetPlayerPoolSize(); i <= j; ++i) // pegarб jogadores online somente
for(new i = 0; i < MAX_PLAYERS; ++i) // Percorerб 500 players (geralmente oque estб definido na variбvel MAX_PLAYERS)
for(new i = 0; i < GetMaxPlayers(); ++i) // Pegarб a quantidade de slots tem no servidor.
|
Sу uma observaзгo.
GetPlayerPoolSize() pegarб o ultimo ID. Isto nгo quer dizer que
nгo haverб ids desconectados.
Re: Essa й a melhor forma desse fazer uma loop para os players conectados? -
zSuYaNw - 11.02.2016
Quote:
Originally Posted by NicK_
Sу uma observaзгo.
GetPlayerPoolSize() pegarб o ultimo ID. Isto nгo quer dizer que nгo haverб ids desconectados.
|
Sim, mas minha observaзгo continua vбlida pois no loop que o mesmo estб dando exemplo, contйm a condiзгo
IsPlayerConnected.
Quote:
Originally Posted by ipsLeon
O GetPlayerPoolSize retorna o maior id do player conectado
|
Isto й, digamos que o temos o servidor com
100 slots, e os seguintes players conectados:
Код:
ID 18
ID 5
ID 2
ID 20
A Funзгo
GetMaxPlayers(), irб percorrer por
100 players, mesmo estando somente
4 online. Agora a funзгo
GetPlayerPoolSize() irб percorrer
20 players somente, pois o jogador que
contйm o ID maior 20. Agora quando usamos a definiзгo "
MAX_PLAYERS" com as mesmas condiзхes acima irб percorrer
500 vezes.
Concluнmos que, cada uma das trкs tem suas usualidades diversificadas ou seja, Depende no que e Pra Quк vocк vai usar um loop.
Bons estudos.
Re: Essa й a melhor forma desse fazer uma loop para os players conectados? -
SuperChock - 11.02.2016
Repetindo: A Melhor forma
dos trкs mйtodos citados no tуpico, sim.
Porйm agora com as funзхes Pools eu nгo vejo mais necessidade no foreach. Sei lб... nunca nem sequer abri o arquivo dele pra estudar, mas por deduзгo уbvia acredito que ele funciona da mesma maneira... cheio de variбveis pra fazer isso. Se eu fosse fazer um gamemode novo hoje usaria as funзхes Pool em vez de foreach!
Re: Essa й a melhor forma desse fazer uma loop para os players conectados? -
zSuYaNw - 12.02.2016
Quote:
Originally Posted by SuperChock
Repetindo: A Melhor forma dos trкs mйtodos citados no tуpico, sim.
Porйm agora com as funзхes Pools eu nгo vejo mais necessidade no foreach. Sei lб... nunca nem sequer abri o arquivo dele pra estudar, mas por deduзгo уbvia acredito que ele funciona da mesma maneira... cheio de variбveis pra fazer isso. Se eu fosse fazer um gamemode novo hoje usaria as funзхes Pool em vez de foreach!
|
Sim, PoolSize.
Re: Essa й a melhor forma desse fazer uma loop para os players conectados? -
rjjj - 12.02.2016
Quote:
Originally Posted by SuperChock
Repetindo: A Melhor forma dos trкs mйtodos citados no tуpico, sim.
Porйm agora com as funзхes Pools eu nгo vejo mais necessidade no foreach. Sei lб... nunca nem sequer abri o arquivo dele pra estudar, mas por deduзгo уbvia acredito que ele funciona da mesma maneira... cheio de variбveis pra fazer isso. Se eu fosse fazer um gamemode novo hoje usaria as funзхes Pool em vez de foreach!
|
Compare as velocidades de execuзгo: no exemplo dado pelo Garfield, um loop com
GetPlayerPoolSize corresponderia a um total de 21 iteraзхes. Jб um loop com
foreach corresponderia a apenas 4 iteraзхes, conforme o nъmero de jogadores conectados.
Espero ter ajudado
.