[Ajuda]Problema com loop. -
iansinho - 01.02.2012
Bem, eu estou fazendo um sistema em qual eu tenho que diminuir uma variбvel sempre que a callback "Payday" for chamada, e que quando esta variбvel bater 0, enviar uma mensagem para o jogador.
Aqui um exemplo:
Код:
//cуdigos da public
for(new i = 0; i <= MAX_PLAYERS; ++i)
{
for(new car = 1; car < sizeof(CarInfo); car++)
{
if(VariavelExemplo1[i] == 999) continue;
if(VariavelExemplo2[i] == 999) continue;
if(Variavel[car] == 0) continue;
Variavel[car]--;
if(Variavel] == 0)
{
//Caso bata 0, enviar uma mensagem
}
SalvarDados(i); //salvardados
}
}
//fim da public
O que estб acontecendo: quando a callback й chamada (APENAS 1 VEZ), independentemente do valor da "Variavel", ela vai pra 0.
Exemplo: variбvel = 5000.
Quando a callback й chamada, em vez de ir para 4999 ela vai para 0.
O que estб acontecendo e como eu posso retirar este problema?
Re: [Ajuda]Problema com loop. -
Lucas_Alemao - 01.02.2012
olha cara postando esse codigo ninguem pode ver bug, posta o pedaзo original do codigo po
Re: [Ajuda]Problema com loop. -
iansinho - 01.02.2012
Й esse o cуdigo original, apenas troquei o NOME das variбveis e mais nada.
O que vem antes e depois da public nгo tem nada haver.
Re: [Ajuda]Problema com loop. -
[Pawno] - 02.02.2012
Entendi nada ;/ explique melhor.
Re: [Ajuda]Problema com loop. -
iansinho - 02.02.2012
Oh my gosh...
Este cуdigo acima deveria retirar uma unidade do valor da "Variavel[car]", mas em vez dele retirar apenas 1, ele retira todo o valor а 0.
Como o exemplo:
Se o valor da "Variavel[car]" estiver 55 (qualquer numero maior que 0), assim que a Callback que possui este codigo for chamada, o valor dela estarб 0, e nгo 54 (deveria ser 55 - 1). Agora quero saber porque isso acontece.
Entendeu?
Re: [Ajuda]Problema com loop. -
Ricop522 - 02.02.2012
pawn Код:
for(new i = 0; i <= MAX_PLAYERS; ++i)
{
for(new car = 1, b = sizeof(CarInfo); car != b; ++car)
{
if(VariavelExemplo1[i] == 999 || VariavelExemplo2[i] == 999 || Variavel[car] == 0) break;
Variavel[car]--;
if(Variavel[car] == 0)
{
//Caso bata 0, enviar uma mensagem
}
SalvarDados(i);
}
}
Se vocк quer repetiзхes atй a variavel ficar a 0 use while, o for vai funcionar uma vez a public ser chamada.
Se nгo funcionar, vocк serб obrigado a postar a public, isso vai ajudar..
pawn Код:
new c = Variavel[car];
while(c != 0) {
c--;
}
Re: [Ajuda]Problema com loop. -
Lucas_Alemao - 02.02.2012
mas tu tento usar o codigo que o ricop posto?
Re: [Ajuda]Problema com loop. -
DreeH - 02.02.2012
pawn Код:
for(new i = 0; i != MAX_PLAYERS; ++i)
{
if(VariavelExemplo1[i] == 999 || VariavelExemplo2[i] == 999) continue;
new car = sizeof(CarInfo);
do
{
Variavel[car]--;
if(Variavel[car] == 0)
{
//Caso bata 0, enviar uma mensagem
}
SalvarDados(i); //salvardados
}
while(car != 0);
}
Re: [Ajuda]Problema com loop. - rjjj - 02.02.2012
Este loop (em azul) do seu cуdigo

:
Код:
//cуdigos da public
for(new i = 0; i <= MAX_PLAYERS; ++i)
{
for(new car = 1; car < sizeof(CarInfo); car++)
{
if(VariavelExemplo1[i] == 999) continue;
if(VariavelExemplo2[i] == 999) continue;
if(Variavel[car] == 0) continue;
Variavel[car]--;
if(Variavel] == 0)
{
//Caso bata 0, enviar uma mensagem
}
SalvarDados(i); //salvardados
}
}
//fim da public
Й que й responsбvel por diminuir em 1 unidade o valor de cada parte da array
Variavel 
.
Mas observe que ele estб dentro de outro loop, por isso os decrйscimos estгo ocorrendo vбrias vezes mesmo quando a callback й chamada apenas 1 vez

.
Vocк pode restringir a execuзгo do loop interno por meio de uma variбvel booleana, mas nгo sei bem o que vocк quer que o cуdigo faзa.
Espero ter ajudado

.
Re: [Ajuda]Problema com loop. -
Ricop522 - 02.02.2012
Entгo tenta isso
pawn Код:
for(new i = 0; i <= MAX_PLAYERS; ++i)
{
new v = VariavelExemplo1[i], v2 = VariavelExemplo2[i];
SalvarDados(i); //salvardados
}
for(new car = 1; car < sizeof(CarInfo); car++)
{
if(v != 999 || v2 != 999) {
if(Variavel[car] == 0) continue;
Variavel[car]--;
if(Variavel] == 0)
{
//Caso bata 0, enviar uma mensagem
}
}
}