Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
20.04.2004, 21:07
Pharao2k



Hiho Leutz, ich hab die health.cpp von der client dll so verändert, dass die Health punkte in Blöcken angezeigt werden, nur leider stürzt halflife immer ab sobald beim laden einer map diese "consolen-hintergrundgrafik" sich nach oben schiebt. dies hier ist die Draw-Methode die ich verändert habe, alles andere ist noch unverändert. Wisst ihr was falsch ist?

int CHudHealth::Draw(float flTime)
{
int r, g, b;
int a = 0, x, y;
int HealthWidth;

if ( (gHUD.m_iHideHUDDisplay & HIDEHUD_HEALTH) || gEngfuncs.IsSpectateOnly() )
return 1;

if ( !m_hSprite )
m_hSprite = LoadSprite(PAIN_NAME);

// Has health changed? Flash the health #
if (m_fFade)
{
m_fFade -= (gHUD.m_flTimeDelta * 20);
if (m_fFade <= 0)
{
a = MIN_ALPHA;
m_fFade = 0;
}

// Fade the health number back to dim

a = MIN_ALPHA + (m_fFade/FADE_TIME) * 128;

}
else
a = MIN_ALPHA;

int iCubeCounter = 0;
if((m_iHealth >= 0) || (m_iHealth <= 19))
{iCubeCounter = 1; a = 255;}
if((m_iHealth >= 20) || (m_iHealth <= 29))
iCubeCounter = 2;
if((m_iHealth >= 30) || (m_iHealth <= 39))
iCubeCounter = 3;
if((m_iHealth >= 40) || (m_iHealth <= 49))
iCubeCounter = 4;
if((m_iHealth >= 50) || (m_iHealth <= 59))
iCubeCounter = 5;
if((m_iHealth >= 60) || (m_iHealth <= 69))
iCubeCounter = 6;
if((m_iHealth >= 70) || (m_iHealth <= 79))
iCubeCounter = 7;
if((m_iHealth >= 80) || (m_iHealth <= 89))
iCubeCounter = 8;
if((m_iHealth >= 90) || (m_iHealth <= 99))
iCubeCounter = 9;
if(m_iHealth >= 100)
iCubeCounter = 10;

GetPainColor( r, g, b );
ScaleColors(r, g, b, a );

// Only draw health if we have the suit.
if (gHUD.m_iWeaponBits & (1<<(WEAPON_SUIT)))
{
for (int itempx = 1 ; itempx < iCubeCounter ; itempx++ )
{
x = 50 + (20 * itempx) + (5 * itempx);
y = ScreenHeight - 50;
FillRGBA(x,y,50,50,67, 125, 255, 141);
}

/*HealthWidth = gHUD.GetSpriteRect(gHUD.m_HUD_number_0).right - gHUD.GetSpriteRect(gHUD.m_HUD_number_0).left;
int CrossWidth = gHUD.GetSpriteRect(m_HUD_cross).right - gHUD.GetSpriteRect(m_HUD_cross).left;

y = ScreenHeight - gHUD.m_iFontHeight - gHUD.m_iFontHeight / 2;
x = CrossWidth /2;

SPR_Set(gHUD.GetSprite(m_HUD_cross), r, g, b);
SPR_DrawAdditive(0, x, y, &gHUD.GetSpriteRect(m_HUD_cross));

x = CrossWidth + HealthWidth / 2;

x = gHUD.DrawHudNumber(x, y, DHN_3DIGITS | DHN_DRAWZERO, m_iHealth, r, g, b);

x += HealthWidth/2;

int iHeight = gHUD.m_iFontHeight;
int iWidth = HealthWidth/10;
FillRGBA(x, y, iWidth, iHeight, 255, 160, 0, a);*/
}

DrawDamage(flTime);
return DrawPain(flTime);
}

--

zum Seitenanfang zum Seitenende Profil || Suche
001
20.04.2004, 21:41
Onkel Dittmeyer



Also Erstmal was um die Sache übersichtlicher zu machen.
Deinen Code für die Säule kann man sehr verkürzen:
Quellcode:if (gHUD.m_iWeaponBits & (1<<(WEAPON_SUIT)))
{
    y = ScreenHeight - 50;
    for (int i = 1 ; i <= m_iHealth / 10; i++)
    {
         x = 50 + i * 55; //10 blöcke à 50px mit 5px Abstand
         FillRGBA(x, y, 50, 50, 67, 125, 255, 141);
    }
}
Das funktioniert bei mir wunderbar... ich kann mir ehrlich gesagt auch nicht vorstellen, dass es daher kommt.
Probiers einfach mal aus...

--


Dieser Beitrag wurde am 20.04.2004 um 21:42 von Onkel Dittmeyer bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
21.04.2004, 14:56
Pharao2k



nun funzt es super, vielen dank

--

zum Seitenanfang zum Seitenende Profil || Suche