HLFX.Ru Forum
Показать все 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)


Отправлено NeonGameWorld 10-06-2012 в 17:35:

Half-Life HUD

как сделать hud не цифрами а полоской как на скрине?


Отправлено Дядя Миша 10-06-2012 в 17:51:

Ну очевидно взять код фонарика за основу и накопипастить его код в индикаторы здоровья и батареи.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено NeonGameWorld 10-06-2012 в 17:57:

А если у меня есть текстура полоски жизней и брони как вывести ее на экран

Добавлено 10-06-2012 в 21:57:

?


Отправлено HAWK0044 10-06-2012 в 19:22:

через openGL вестимо


Отправлено ONeiLL 11-06-2012 в 12:39:

Лучше триапи, а то вдруг кто нибудь будет играть не в огл режиме?


Отправлено HAWK0044 11-06-2012 в 18:05:

ONeiLL
ога, а текстуры из спрайтов делать


Отправлено Ku2zoff 11-06-2012 в 20:52:

Цитата:
Дядя Миша писал:
Ну очевидно взять код фонарика за основу и накопипастить его код в индикаторы здоровья и батареи.

Я именно так и сделал когда-то
NeonGameWorld Посмотри как рисуется фонарик (не луч, а именно фонарик). Там два спрайта, пустой и полный. Пустой рисуется всегда, а полный поверх него на определённое кол-во единиц длины, которые зависят от уровня заряда. Надо всего лишь изменить координаты и имена спрайтов, а уровень заряда поменять на уровень здоровья и брони. Копипаста.


Отправлено antikran 11-06-2012 в 21:49:

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 двиг...
Благодаря ему, чуть больше я постиг...
Ну чайник я, и мало очень знаю С++...
Зато леплю я карты и играю блюз...

Вот так то.


Отправлено NeonGameWorld 12-06-2012 в 07:25:

Спасибо!!! буду делась)


Временная зона GMT. Текущее время 13:13.
Показать все 9 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024