![]() |
Показать все 9 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- HUd (https://hlfx.ru/forum/showthread.php?threadid=3472)
HUD
как сделать hud не цифрами а полоской как на скрине?
Ну очевидно взять код фонарика за основу и накопипастить его код в индикаторы здоровья и батареи.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
А если у меня есть текстура полоски жизней и брони как вывести ее на экран
Добавлено 10-06-2012 в 21:57:
?
через openGL вестимо
Лучше триапи, а то вдруг кто нибудь будет играть не в огл режиме?
ONeiLL
ога, а текстуры из спрайтов делать 
nt 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;
// If health is getting low, make it bright red
if (m_iHealth <= 15)
a = 255;
GetPainColor( r, g, b );
ScaleColors(r, g, b, a );
// Only draw health if we have the suit.
if (gHUD.m_iWeaponBits & (1<<(WEAPON_SUIT)))
{
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)-100;
x = CrossWidth /2;
wrect_t spr_sizes;
spr_sizes=gHUD.GetSpriteRect(m_HUD_cross);
wrect_t spr_sizes_r;
spr_sizes_r=gHUD.GetSpriteRect(m_HUD_cross_red);
int spr_width;
int spr_height;
int spr_width_r;
spr_width=spr_sizes.right-spr_sizes.left;
spr_height=spr_sizes.bottom-spr_sizes.top;
spr_width_r=spr_sizes_r.right-spr_sizes_r.left;
//Вычисляем соотношение высоты по здоровью
int cf;
float pr;
int zz;
float xx;
pr = ( ( float ) spr_height/100 ) * ( float ) m_iHealth;
cf = ( int ) pr;
xx = ( float ) spr_width_r;
zz = ( int ) xx;
spr_sizes.bottom-=(spr_height-cf); //СРЕЗ! !!временно уберем++оставим
spr_sizes_r.left-=(spr_width_r);
// spr_sizes.left=(spr_width);
//
SPR_Set(gHUD.GetSprite(m_HUD_cross), 200, 200, 230);
SPR_DrawAdditive(0, x, y, &spr_sizes);
SPR_Set(gHUD.GetSprite(m_HUD_cross_red), 255, 50, 50);
SPR_DrawAdditive(0, x, y, &spr_sizes_r);
__________________
Спасибо тем кто помогает...
И тем кто бред этот читает...
Спасибо Дяде Мише за Xash двиг...
Благодаря ему, чуть больше я постиг...
Ну чайник я, и мало очень знаю С++...
Зато леплю я карты и играю блюз...
Вот так то.
Спасибо!!! буду делась)
| Временная зона GMT. Текущее время 13:13. | Показать все 9 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024