Progress Bar -
zNaKa - 10.06.2018
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:
Re: Progress Bar -
nasser - 10.06.2018
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.
Re: Progress Bar -
Ermanhaut - 10.06.2018
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;
}
Re: Progress Bar -
nasser - 10.06.2018
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.
Re: Progress Bar -
Ermanhaut - 10.06.2018
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
".
Re: Progress Bar -
zNaKa - 10.06.2018
Eu estava usando funзгo OnPlayerTakeDamage, pra alterar o Value da ProgressBar, porem sempre continuava o mesmo.
PHP код:
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
new Float:jVida;
GetPlayerHealth(playerid, jVida);
SetPlayerProgressBarMaxValue(playerid, Vida[playerid], 100);
SetPlayerProgressBarValue(playerid, Vida[playerid], jVida);
return 1;
}
Testei atй usando um Timer, porйm resultado foi o mesmo.
Re: Progress Bar -
zNaKa - 10.06.2018
A funзгo ocorre normalmente, porйm a Barra do ProgressBar fica sempre 100%, nгo diminui, quando a vida й perdida.
Re: Progress Bar -
Ermanhaut - 10.06.2018
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);
Re: Progress Bar -
zNaKa - 10.06.2018
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.
Re: Progress Bar -
Ermanhaut - 10.06.2018
Mostre o cуdigo..