[Ajuda] Progress Bar
#1

Bom, estou tentando criar ProgressBar com a Include do Southclaw, porйm estou tendo problema na hora de atualizar ela, jб que estou tentando fazer ela pra usar com o valor dado no GetPlayerHealth, alguйm tem alguma base pra da uma ajuda ? D:
Reply
#2

Tф sem o Pawno aqui, mas usei isso uma vez tambйm para a mesma finalidade de vida e colete, lembro que eu coloquei no OnPlayerUpdate, vocк ta fazendo como?

Obs: O ideal й postar o cуdigo.
Reply
#3

Quote:
Originally Posted by nasser
Посмотреть сообщение
Tф sem o Pawno aqui, mas usei isso uma vez tambйm para a mesma finalidade de vida e colete, lembro que eu coloquei no OnPlayerUpdate, vocк ta fazendo como?

Obs: O ideal й postar o cуdigo.
Acho que usar uma progressbar para mostrar a vida do jogador no OnPlayerUpdate й desperdнcio de processamento.
Faзa mais ou menos assim:
Код:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) {

  if(hitid != INVALID_PLAYER_ID) {
    if(playerOnline[hitid] == true) {
      switch(weaponid) {
        case WEAPON_DEAGLE: {
          new Float:vida;
          GetPlayerHealth(hitid, vida);
          vida -= DEAGLE_DAMAGE;
          SetPlayerHealth(hitid, vida);
          //  Aqui tu faz o update da progressbar ou referencia uma funзгo que o faзa
        }
      }
    }
  }
  return 1;
}
Reply
#4

Quote:
Originally Posted by Ermanhaut
Посмотреть сообщение
Acho que usar uma progressbar para mostrar a vida do jogador no OnPlayerUpdate й desperdнcio de processamento.
Faзa mais ou menos assim:
Код:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ) {

  if(hitid != INVALID_PLAYER_ID) {
    if(playerOnline[hitid] == true) {
      switch(weaponid) {
        case WEAPON_DEAGLE: {
          new Float:vida;
          GetPlayerHealth(hitid, vida);
          vida -= DEAGLE_DAMAGE;
          SetPlayerHealth(hitid, vida);
          //  Aqui tu faz o update da progressbar ou referencia uma funзгo que o faзa
        }
      }
    }
  }
  return 1;
}
Bem veja sу o que diz no Wiki do OnPlayerWeaponShot:

"This callback is called when a player fires a shot from a weapon. Only bullet weapons are supported. Only passenger drive-by is supported (not driver drive-by, and not sea sparrow / hunter shots)."

Entгo jб da para concluir que colocando ai somente irб mostrar a vida atual do jogador quando ele receber um dano disparado por uma arma, mas e se o jogador tiver a vida setada por um admin, ou usar o comando /vida?

R: Nгo irб atualizar a vida atual do jogador.

E tambйm se vocк pesquisar um pouco sobre o OnPlayerUpdate verб que ele й bem mais otimizado e preciso, por exemplo se vocк estб pensando em usar um timer, nгo recomendaria isso.
Reply
#5

Quote:
Originally Posted by nasser
Посмотреть сообщение
Bem veja sу o que diz no Wiki do OnPlayerWeaponShot:

"This callback is called when a player fires a shot from a weapon. Only bullet weapons are supported. Only passenger drive-by is supported (not driver drive-by, and not sea sparrow / hunter shots)."

Entгo jб da para concluir que colocando ai somente irб mostrar a vida atual do jogador quando ele receber um dano disparado por uma arma, mas e se o jogador tiver a vida setada por um admin, ou usar o comando /vida?

R: Nгo irб atualizar a vida atual do jogador.

E tambйm se vocк pesquisar um pouco sobre o OnPlayerUpdate verб que ele й bem mais otimizado e preciso, por exemplo se vocк estб pensando em usar um timer, nгo recomendaria isso.
Pensando dessa forma, atй que faz sentido estar em OnPlayerUpdate. Da menos trabalho e com certeza й mais preciso, mas como eu disse, ainda й desperdнcio de processamento pois o player nгo tem sua vida alterada 30~60 vezes por segundo.
Eu ainda acho que escrever uma funзгo que faзa o update da Textdraw e usar ela em qualquer ocasiгo que o player tenha sua vida alterada й a forma mais "correta".
Reply
#6

Eu estava usando funзгo OnPlayerTakeDamage, pra alterar o Value da ProgressBar, porem sempre continuava o mesmo.


PHP код:
public OnPlayerTakeDamage(playeridissueridFloat:amountweaponidbodypart)
{
    new 
Float:jVida;
    
GetPlayerHealth(playeridjVida);
    
SetPlayerProgressBarMaxValue(playeridVida[playerid], 100);
    
SetPlayerProgressBarValue(playeridVida[playerid], jVida);
    return 
1;

Testei atй usando um Timer, porйm resultado foi o mesmo.
Reply
#7

A funзгo ocorre normalmente, porйm a Barra do ProgressBar fica sempre 100%, nгo diminui, quando a vida й perdida.
Reply
#8

OnPlayerTakeDamage: GetPlayerHealth and GetPlayerArmour will return the old amounts of the player before this callback.

Ou seja, usar GetPlayerHealth aqui pega o valor de vida anterior ao dano.
Vocк deve usar em OnPlayerUpdate, como o @nasser disse ou siga o que eu falei.

@EDIT

Escreva isto uma funзгo e coloque em OnPlayerUpdate:

Код:
    new Float:jVida; 
    GetPlayerHealth(playerid, jVida); 
    SetPlayerProgressBarMaxValue(playerid, Vida[playerid], 100); 
    SetPlayerProgressBarValue(playerid, Vida[playerid], jVida);
Reply
#9

Sim, porem mesmo usando um timer de 100ms continuava mesma coisa, somente fazia a barra ficar 100% e quando tomava dano mesma coisa.

Obs : Timer estava no OnPlayerSpawn.
Reply
#10

Mostre o cуdigo..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)