Четверг, 28.03.2024, 22:21
Приветствую Вас Guest | RSS
Главная страница | Статьи | Регистрация | Вход
Меню сайта

Случайный рисунок

Категории каталога
Туториалы по маппингу (HL2) [68]
Туториалы по маппингу для Half-Life
Туториалы по текстурированию (HL2) [10]
Туторы по текстурированию для Half-Life
Туториалы по моделированию (HL2) [9]
Туторы по моделированию для Half-Life
Туториалы по программированию (HL2) [53]
Туторы по прагроммированию для Half-life
Другие туториалы (HL1 и HL2) [4]
Туторы которые не вошли в другие категории
Half-Life 2 Beta [1]
Статьи о npc и weapon в бете Half-Life 2, а так же мануалы и FAQ.
Туториалы по маппингу (HL1) [14]
Туторы по маппингу для Half-Life 1
Туториалы по текстурированию (HL1) [1]
Туторы по текстурированию для Half-Life 1
Туториалы по моделированию (HL1) [1]
Туторы по моделированию для Half-Life 1
Туториалы по программированию (HL1) [30]
Туторы по программированию для Half-Life 1

Наш опрос
Оцените мой сайт
Всего ответов: 632

Начало » Статьи » Туториалы по программированию (HL2)

Полоска жизни
Этот тутор покажет как сделать полоску жизней.

Создаём hud_hull.cpp и туда пишем:

#include "cbase.h"

#include "hud.h"

#include "hud_hull.h"

#include "hud_macros.h"

#include "c_sdk_player.h"

#include "iclientmode.h"

#include #include #include using namespace vgui;

#include "tier0/memdbgon.h"

DECLARE_HUDELEMENT( CHudHull );

#define HULL_INIT 80

//------------------------------------------------------------------------

// Purpose: Constructor

//------------------------------------------------------------------------

CHudHull::CHudHull( const char *pElementName ) : CHudElement( pElementName ), BaseClass( NULL, "HudHull" )

{

vgui::Panel *pParent = g_pClientMode->GetViewport();

SetParent( pParent );

SetHiddenBits( HIDEHUD_HEALTH | HIDEHUD_PLAYERDEAD | HIDEHUD_NEEDSUIT );

}

//------------------------------------------------------------------------

// Purpose:

//------------------------------------------------------------------------

void CHudHull::Init( void )

{

m_flHull = HULL_INIT;

m_nHullLow = -1;

SetBgColor(Color(0,0,0,128));

}

//------------------------------------------------------------------------

// Purpose:

//-----------------------------------------------------------------------

void CHudHull::Reset( void )

{

Init();

}


//------------------------------------------------------------------------

// Purpose:

//------------------------------------------------------------------------

void CHudHull::OnThink( void )

{

float newHull = 0;

C_BasePlayer *local = C_BasePlayer::GetLocalPlayer();

if ( !local )

return;

// Never below zero

// newHull = local->GetHull();
newHull = local->GetHealth();

//DevMsg("Sheild at is at: %f\n",newShield);

// Only update the fade if we've changed health

if ( newHull == m_flHull )

{

return;

}

m_flHull = newHull;

}



//------------------------------------------------------------------------

// Purpose: draws the power bar

//------------------------------------------------------------------------

void CHudHull::Paint()

{

// get bar chunks

int chunkCount = m_flBarWidth / (m_flBarChunkWidth + m_flBarChunkGap);

int enabledChunks = (int)((float)chunkCount * (m_flHull / 100.0f) + 0.5f );

// draw the suit power bar

surface()->DrawSetColor( m_HullColor );

int xpos = m_flBarInsetX, ypos = m_flBarInsetY;

{for (int i = 0; i < enabledChunks; i++)

{

surface()->DrawFilledRect( xpos, ypos, xpos + m_flBarChunkWidth, ypos + m_flBarHeight );

xpos += (m_flBarChunkWidth + m_flBarChunkGap);

}}

// draw the exhausted portion of the bar.

surface()->DrawSetColor( Color( m_HullColor[0], m_HullColor[1], m_HullColor[2], m_iHullDisabledAlpha ) );

{for (int i = enabledChunks; i < chunkCount; i++)

{

surface()->DrawFilledRect( xpos, ypos, xpos + m_flBarChunkWidth, ypos + m_flBarHeight );

xpos += (m_flBarChunkWidth + m_flBarChunkGap);

}}

// draw our name

surface()->DrawSetTextFont(m_hTextFont);

surface()->DrawSetTextColor(m_HullColor);

surface()->DrawSetTextPos(text_xpos, text_ypos);

//wchar_t *tempString = vgui::localize()->Find("#Valve_Hud_AUX_POWER");


surface()->DrawPrintText(L"HULL", wcslen(L"HULL"));

}


Теперь создаём hud_hull.h и туда пишем:

#if !defined( HUD_HULL_H )

#define HUD_HULL_H

#ifdef _WIN32

#pragma once

#endif

#include "hudelement.h"

#include "hud_numericdisplay.h"

//-----------------------------------------------------------------------------

// Purpose: Shows the hull bar

//-----------------------------------------------------------------------------

class CHudHull : public CHudElement, public vgui::Panel

{

DECLARE_CLASS_SIMPLE( CHudHull, vgui::Panel );

public:

CHudHull( const char *pElementName );

virtual void Init( void );

virtual void Reset( void );

virtual void OnThink( void );

protected:

virtual void Paint();

private:

CPanelAnimationVar( Color, m_HullColor, "HullColor", "255 0 0 255" );

CPanelAnimationVar( int, m_iHullDisabledAlpha, "HullDisabledAlpha", "50" );

CPanelAnimationVarAliasType( float, m_flBarInsetX, "BarInsetX", "26", "proportional_float" );

CPanelAnimationVarAliasType( float, m_flBarInsetY, "BarInsetY", "3", "proportional_float" );

CPanelAnimationVarAliasType( float, m_flBarWidth, "BarWidth", "84", "proportional_float" );

CPanelAnimationVarAliasType( float, m_flBarHeight, "BarHeight", "4", "proportional_float" );

CPanelAnimationVarAliasType( float, m_flBarChunkWidth, "BarChunkWidth", "2", "proportional_float" );

CPanelAnimationVarAliasType( float, m_flBarChunkGap, "BarChunkGap", "1", "proportional_float" );

CPanelAnimationVar( vgui::HFont, m_hTextFont, "TextFont", "HUDBarText" );

CPanelAnimationVarAliasType( float, text_xpos, "text_xpos", "2", "proportional_float" );

CPanelAnimationVarAliasType( float, text_ypos, "text_ypos", "2", "proportional_float" );

CPanelAnimationVarAliasType( float, text2_xpos, "text2_xpos", "8", "proportional_float" );

CPanelAnimationVarAliasType( float, text2_ypos, "text2_ypos", "40", "proportional_float" );

CPanelAnimationVarAliasType( float, text2_gap, "text2_gap", "10", "proportional_float" );

float m_flHull;

int m_nHullLow;

};

#endif // HUD_SUITPOWER_H

Теперь заходим в HudLayout.res, который находится в папке scripts и туда пишем:

HudHull

{

"fieldName" "HudHull"

"visible" "1"

"enabled" "1"

"xpos" "12"

"ypos" "420"

"wide" "120"

"tall" "10"

"text_xpos" "5"

"text_ypos" "2"

"TextColor" "0 255 0 80"

"PaintBackgroundType" "2"

}


Вот и всё теперь заходим в игру и смотрим!!!


Источник: http://stav-mapping.info/e107_plugins/content/content.php?content.48
Категория: Туториалы по программированию (HL2) | Добавил: DetLeR (14.07.2007) | Автор: WeB-Monster
Просмотров: 2052 | Комментарии: 6 | Рейтинг: 5.0 |

Всего комментариев: 6
6 Я  
0
Страйдер, да можно, впринцепи можно весь этот код использовать, только в местах где код ссылается на здоровье, прописань название брони

5 AKamalov  
1
где находятся все срр?????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????? ?????

4 Strider  
0
А можно сделать такую же полоску, только не жизни, а зарядки кЫстюма

3 Tomkranez  
0
У тебя там ошибка
#include //-----------------------------------------------------------------------------

иза этого у меня не скомпилилось


2 DetLeR  
0
А ты как думал? biggrin

1 Master_4if  
1
Оч полезный тутор wink

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Кто в Онлайн

Друзья сайта

Баннеры

  Сайт CrazyArts   Black   Сообщество сайтов о Half-Life   Самый   Только   Все   hl2 top 100     Rambler's Top100  

игры
игры

  Каталог сайтов Планета Топ 100 - Planet Top 100       ТОП ЛУЧШИХ ИГРОВЫХ САЙТОВ           Detroit Team Site :: Моды от Detroit Team, видео, новости.   Naruto-kun[Звезда Наруто]  


The idea of dising: Homie7