Assim й o melhor de Todos,inclusive compete com Foreach:
pawn Код:
#define MAX_LP_FoReX (500)
#define FoReX(%0,%1) for(new %1 = 0, %0 = 0; Players[%1] != -1; (%0) = Players[%1], ++%1)
new Players[MAX_LP_FoReX];
new CountArray=0;
new criados=-1;
stock AddPlayer(pids)
{
criados++;
Players[ criados ]=pids;
Players[ criados+1 ]=-1;
return true;
}
stock MoveInt(index)
{
for(new i=index;i<sizeof(Players);i++) {
if(Players[ i ] != 0) {
Players[ i ] = Players[i+1];
}
}
return true;
}
stock ClearPlayers()
{
for(new i=-1;i<sizeof(Players);i++){
Players[i]=0;
}
return true;
}
stock DelPlayer(pids)
{
criados--;
for(new i = 0; i < sizeof Players; ++i) {
if(Players[ i ] == pids) {
Players[ i ] = Players[ i+1 ];
if(Players[ i+1 ] != 0) MoveInt(i);
}
}
return true;
}
Mude
MAX_LP_FoReX para o Nъmero de Players do server.
Ele й um Foreach /\ й uma simples lista encadeada,que na qual percorre internamente na array.
Explicando
Como todo Foreach ele percorre os itens internos de uma Array,assim ele nгo se farб como loop de executar 500x e sim simplesmente executarб 1x internamente na Array,assim tornando cуdigo mais simples de interpretar e ler.
Resumidamente ele faz uma operaзгo interna na array.
Assim nгo ocorre o OBOE
Leia melhor aqui
http://en.wikipedia.org/wiki/Foreach
#Resultados
1: Resultado
[08:46:13] FoReX 0
[08:46:13] Loop Normal 39
[08:46:13] Foreach 0
2: Resultado:
[08:28:38] FoReX 1049683
[08:28:38] Foreach 1049709
Sгo muitos pequenos a diferenзa,falei com ****** a um tempгo atrбs,ele disse que os dois sгo equivalentes.
Cуdigo
Criado por DraKiNs
Agradecimentos a Toribio e ******
Nota:
Use com cuidado,й versгo Beta.
pawn Код:
FoReX(i,d)
{
SetPlayerHealth(i,1000.0);
}
Enquanto sua dъvida:
GetMaxPlayer causarб muitas verificaзхes,tornando cуdigo mais lento.
Use FoReX ou Foreach,ou FoReAchPlayer