[Ajuda] Funзгo somente para o ID 0.
#1

Boa noite, estou com um problema em uma funзгo de adicionamento de valores em progressbar. O problema й que o contador sу estб sendo efetuada para o ID 0, e jб tentei utilizar um loop na callback para ver se daria resultado, porйm, sem sucesso.

Cуdigo:
PHP код:
SetTimer("AttStatus"10000,true);
forward Atualizar();
public 
Atualizar(){
    for(new 
0MAX_PLAYERSi++)
    {
       
formatgFilesizeofgFile ), "Contas/%s.ini"PlayerName));
       
dini_IntSet(gFile[i], "Fome"dini_Int(gFile[i],"Fome") + 2);
       
dini_IntSet(gFile[i], "Sede"dini_Int(gFile[i],"Sede") + 2);
       
dini_IntSet(gFile[i], "Dorme"dini_Int(gFile[i],"Dorme") + 1);
    
       
SetProgressBarValue(Sono[i], dini_Int(gFile[i],"Dorme")), UpdateProgressBar(Sono[i], i);
       
SetProgressBarValue(Comida[i], dini_Int(gFile[i],"Fome")), UpdateProgressBar(Comida[i], i);
       
SetProgressBarValue(Bebida[i], dini_Int(gFile[i],"Sede")), UpdateProgressBar(Bebida[i], i);
    }
    return 
1;

Alguйm poderia me ajudar?
Reply
#2

Verifica o tamanho do MAX_PLAYERS para ver se o valor й 1.

Coloca um if dentro do laзo de repetiзгo pra ele pular quem nгo estб conectado.

pawn Код:
forward Atualizar();
public Atualizar(){

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
       if(!IsPlayerConnected(i))
             continue;
       // resto do comando
    }
    return 1;
}
Reply
#3

Quote:
Originally Posted by Bruno_Cyra
Посмотреть сообщение
Verifica o tamanho do MAX_PLAYERS para ver se o valor й 1.

Coloca um if dentro do laзo de repetiзгo pra ele pular quem nгo estб conectado.

pawn Код:
forward Atualizar();
public Atualizar(){

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
       if(!IsPlayerConnected(i))
             continue;
       // resto do comando
    }
    return 1;
}
Se o Player nгo estiver conectado ( ! ) ele irб chamar as funзхes? Explique-me, por favor.
Reply
#4

Nгo, o continue serve para executar a prуxima passagem do laзo, ou seja, se o player nгo estiver conectado ele irб para o prуximo, se apenas os IDs 0 e 3 estiverem online ele sу executarб para eles.
Reply
#5

Quote:
Originally Posted by Bruno_Cyra
Посмотреть сообщение
Nгo, o continue serve para executar a prуxima passagem do laзo, ou seja, se o player nгo estiver conectado ele irб para o prуximo, se apenas os IDs 0 e 3 estiverem online ele sу executarб para eles.
Certo, obrigado, serб testado.
Reply
#6

Eu meio que nгo entendi o uso do gFile[i]
Reply
#7

Poise, o que o Jonathan falou estб certo, eu nгo tinha percebido.

Код:
forward Atualizar(); 
public Atualizar(){ 

    for(new i = 0; i < MAX_PLAYERS; i++) 
    { 
       format( gFile, sizeof( gFile ), "Contas/%s.ini", PlayerName( i )); 
       dini_IntSet(gFile, "Fome", dini_Int(gFile,"Fome") + 2); 
       dini_IntSet(gFile, "Sede", dini_Int(gFile,"Sede") + 2); 
       dini_IntSet(gFile, "Dorme", dini_Int(gFile,"Dorme") + 1); 
     
       SetProgressBarValue(Sono[i], dini_Int(gFile,"Dorme")), UpdateProgressBar(Sono[i], i); 
       SetProgressBarValue(Comida[i], dini_Int(gFile,"Fome")), UpdateProgressBar(Comida[i], i); 
       SetProgressBarValue(Bebida[i], dini_Int(gFile,"Sede")), UpdateProgressBar(Bebida[i], i); 
    } 
    return 1; 
}
Veja que eu tirei os [i] do gFile, fiz isso porque as funзхes dini abrem o arquivo quando vocк passa o caminho, o caminho й uma string, ou seja, mandando gFile[i] vocк estarб mandando apenas um nъmero inteiro, alias, se for isso mesmo entгo jб й de se admirar que o ID 0 conseguisse ser afetado pela funзгo, pq o certo seria nem ele ser alterado, enfim, altere isso tambйm para enviar strings ao invйs de inteiros para a funзгo dini.

O passo que eu mostrei anteriormente й importante tambйm para evitar que de erro quando vocк tiver IDs sem players online no server.
Reply
#8

@EDIT

Creio que nгo funcionou as modificaзхes, o problema continua. Mesmo adicionando a condiзгo IsPlayerConnected e a alteraзгo do gFile, alguйm pode me ajudar?
Reply
#9

Pq nгo usa SetTimerEx, arrays e poupa os loops? Com certeza seu erro estava no gFile[i]...


Verifique se a funзгo playername estб retornando o valor correto.
Reply
#10

Tu vai colocar salvamento dini em Settime mesmo ?

Eu nгo faria isso mais vocк que sabe kk

Se Fucionar Avisa


pawn Код:
forward Atualizar();
public Atualizar(){

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
       format( gFile, sizeof( gFile ), "Contas/%s.ini", PlayerName( i ));
       dini_IntSet(gFile, "Fome", dini_Int(gFile,"Fome") + 2);
       dini_IntSet(gFile, "Sede", dini_Int(gFile,"Sede") + 2);
       dini_IntSet(gFile, "Dorme", dini_Int(gFile,"Dorme") + 1);
     
       SetProgressBarValue(Sono[i], dini_Int(gFile,"Dorme")), UpdateProgressBar(Sono[i], i);
       SetProgressBarValue(Comida[i], dini_Int(gFile,"Fome")), UpdateProgressBar(Comida[i], i);
       SetProgressBarValue(Bebida[i], dini_Int(gFile,"Sede")), UpdateProgressBar(Bebida[i], i);
    }
    return 1;
}

Ou se for usar SettimeEx

pawn Код:
forward Atualizar(playerid);
public Atualizar(playerid)
{
       format( gFile, sizeof( gFile ), "Contas/%s.ini", PlayerName(playerid));
       dini_IntSet(gFile, "Fome", dini_Int(gFile,"Fome") + 2);
       dini_IntSet(gFile, "Sede", dini_Int(gFile,"Sede") + 2);
       dini_IntSet(gFile, "Dorme", dini_Int(gFile,"Dorme") + 1);
     
       SetProgressBarValue(Sono[playerid], dini_Int(gFile,"Dorme")), UpdateProgressBar(Sono[playerid], playerid);
       SetProgressBarValue(Comida[playerid], dini_Int(gFile,"Fome")), UpdateProgressBar(Comida[playerid], playerid);
       SetProgressBarValue(Bebida[playerid], dini_Int(gFile,"Sede")), UpdateProgressBar(Bebida[playerid], playerid);
       return 1;
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)