public OnPlayerUpdate(playerid)
{
new Float:hp;
new Bar:hpbar;
GetPlayerHealth(playerid, hp);
SetProgressBarValue(hpbar, hp);
if(GetPlayerHealth(playerid, hp) < 80 && GetPlayerHealth(playerid, hp) > 60)
{
SetProgressBarColor(hpbar, COLOR_GREEN);
}
else if(GetPlayerHealth(playerid, hp) < 60 && GetPlayerHealth(playerid, hp) > 30)
{
SetProgressBarColor(hpbar, COLOR_ORANGE);
}
else if(GetPlayerHealth(playerid, hp) < 30 && GetPlayerHealth(playerid, hp) > 1)
{
SetProgressBarColor(hpbar, COLOR_RED);
}
UpdateProgressBar(hpbar);
return 1;
}
A GetPlayerHealth nem tér vissza értékkel, hanem a második argumentumban megadott változóba teszi az értéket. (nekem is gondot szokott okozni, elég hülyén van megoldva...)
így jó lesz:
public OnPlayerUpdate(playerid)
{
new Float:hp;
new Bar:hpbar;
GetPlayerHealth(playerid, hp);
SetProgressBarValue(hpbar, hp);
if(hp < 80 && hp > 60)
{
SetProgressBarColor(hpbar, COLOR_GREEN);
}
else if(hp < 60 && hp > 30)
{
SetProgressBarColor(hpbar, COLOR_ORANGE);
}
else if(hp < 30 && hp > 1)
{
SetProgressBarColor(hpbar, COLOR_RED);
}
UpdateProgressBar(hpbar);
return 1;
}
és egy tanács... OnPlayerUpdate-be ne tegyél progressbar-os dolgokat
néhány ember után akkora lesz a lag, hogy csak na. Tegyed át inkább egy timerbe..