[HUD]PB HEALTH HUD
Привет всем вот решил написать подобие хелсы из пб (без чувака
, т.к нет его спратов ) вобщем приступим!
Работа только на клиенте , открываем healh.cpp
находим CHudHealth::VidInit в теле функции есть переменная m_HUD_cross , меняем её значение на:
Далее спускаемся ниже до функции Draw , там в теле ищем:
приводим всё это к такому виду:
далее:
идем в hud_redraw.cpp и ищем там:
нашли? ок. спускаемся до конца функции , послее неё допишем еще одну:
написалии?едем дальше.
декларируем эту функцию в hud.h после строки
вставляем:
так... Далее в этом же файле после:
вставляем:
теперь идём в hud.cpp , там находим:
строкой ниже пишем:
вот и всё. осталось дописать в hud.txt (sprites папка)
вот это:
спрайт 320hud2 можно взять в папке valve/sprites
и еще:
этот спрайт ниже!
З.Ы тутор очень нужен новичкам! так как я сам пытался искать туторы работы с худом, но ничего не нашел , решил изучать сам.
З.ЫЫ скоро ждите тутор по динамическому(как в кс) и коллиматорному прицелу!
ой! переместите тему плиз в туторы
Привет всем вот решил написать подобие хелсы из пб (без чувака
Работа только на клиенте , открываем healh.cpp
находим CHudHealth::VidInit в теле функции есть переменная m_HUD_cross , меняем её значение на:
Код:
m_HUD_cross = gHUD.GetSpriteIndex( "new_heal" );
Код:
// Only draw health if we have the suit.
if (gHUD.m_iWeaponBits & (1<<(WEAPON_SUIT)))
Код:
// Only draw health if we have the suit.
if (gHUD.m_iWeaponBits & (1<<(WEAPON_SUIT)))
{
int scrx;
int scry;
scrx = ScreenHeight/4;
scry = ScreenWidth/6;
if (ScreenHeight >= 940)
scrx = ScreenHeight/6;
if (ScreenWidth >= 1279)
scry = ScreenWidth/8;
y = ScreenHeight - scrx;
x = ScreenWidth - scry;
SPR_Set(gHUD.GetSprite(m_HUD_cross), 255, 255, 255);
SPR_Draw(0,x,y,&gHUD.GetSpriteRect(m_HUD_cross));
x = ScreenWidth - scry + 24;
y = ScreenHeight - scrx + 96;
gHUD.DrawHudMiniNumber(x, y, m_iHealth);
}
идем в hud_redraw.cpp и ищем там:
Код:
int CHud :: DrawHudNumber
Код:
int CHud :: DrawHudMiniNumber( int x, int y, int iNumber)
{
int r,g,b;
r=0;
g=255;
b=120;
int iWidth = GetSpriteRect(m_HUD_number_cs_mini_0).right - GetSpriteRect(m_HUD_number_cs_mini_0).left;
int k;
if (iNumber > 0)
{
// SPR_Draw 100's
if (iNumber >= 100)
{
k = iNumber/100;
SPR_Set(GetSprite(m_HUD_number_cs_mini_0 + k), r, g, b );
SPR_DrawAdditive( 0, x, y, &GetSpriteRect(m_HUD_number_cs_mini_0 + k));
x += iWidth;
}
// SPR_Draw 10's
if (iNumber >= 10)
{
k = (iNumber % 100)/10;
SPR_Set(GetSprite(m_HUD_number_cs_mini_0 + k), r, g, b );
SPR_DrawAdditive( 0, x, y, &GetSpriteRect(m_HUD_number_cs_mini_0 + k));
x += iWidth;
}
// SPR_Draw ones
k = iNumber % 10;
SPR_Set(GetSprite(m_HUD_number_cs_mini_0 + k), r, g, b );
SPR_DrawAdditive(0, x, y, &GetSpriteRect(m_HUD_number_cs_mini_0 + k));
x += iWidth;
}
return x;
}
декларируем эту функцию в hud.h после строки
Код:
int DrawHudNumber(int x, int y, int iFlags, int iNumber, int r, int g, int b );
Код:
int DrawHudMiniNumber(int x, int y, int iNumber);
Код:
int m_HUD_number_0;
Код:
int m_HUD_number_cs_mini_0;
Код:
m_HUD_number_0 = GetSpriteIndex( "number_0" );
Код:
m_HUD_number_cs_mini_0 = GetSpriteIndex( "cs_number_mini_0" );
вот и всё. осталось дописать в hud.txt (sprites папка)
вот это:
Код:
cs_number_mini_0 640 320hud2 0 0 12 16
cs_number_mini_1 640 320hud2 12 0 12 16
cs_number_mini_2 640 320hud2 24 0 12 16
cs_number_mini_3 640 320hud2 36 0 12 16
cs_number_mini_4 640 320hud2 48 0 12 16
cs_number_mini_5 640 320hud2 60 0 12 16
cs_number_mini_6 640 320hud2 72 0 12 16
cs_number_mini_7 640 320hud2 84 0 12 16
cs_number_mini_8 640 320hud2 96 0 12 16
cs_number_mini_9 640 320hud2 108 0 12 16
и еще:
Код:
new_heal 640 heal_hud 0 0 64 128
З.Ы тутор очень нужен новичкам! так как я сам пытался искать туторы работы с худом, но ничего не нашел , решил изучать сам.
З.ЫЫ скоро ждите тутор по динамическому(как в кс) и коллиматорному прицелу!
ой! переместите тему плиз в туторы
Вкладення
-
1.2 КБ Перегляди: 240
-
128.1 КБ Перегляди: 723
Останнє редагування:
,
)