Воскресенье, 05.05.2024, 05:49
Приветствую Вас 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

Наш опрос
Приводить ли сайт в чувство?
Всего ответов: 736

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

HUD просто и понятно

Сегодня я расскажу, как сделать свой HUD с текстуркой. И так приступим, откроем клиентскую часть и создадим новый cpp например hud_mail.cpp
Для начала:

#include "cbase.h"
#include "hudelement.h"
#include "hud_macros.h"
#include "iclientmode.h"
#include "view.h" 
#include 
#include 
#include 
#include 
#include 
#include "tier0/memdbgon.h" 

Ну, тут вроде всё понятно?
Далее описываем класс:

class CHudInfo : public CHudElement, public vgui::Panel
{
DECLARE_CLASS_SIMPLE( CHudInfo, vgui::Panel );

public:
CHudInfo( const char *pElementName );

virtual void Paint();


private:
int m_nTextureID;
}; 
DECLARE_HUDELEMENT( CHudInfo );

Чтобы просто была текстурка нам достаточно всего одной функции paint();

Далее:

CHudInfo::CHudInfo( const char *pElementName ) : CHudElement( pElementName ), BaseClass(NULL, "InfoROD")
{

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

m_nTextureID = vgui::surface()->CreateNewTextureID();

vgui::surface()->DrawSetTextureFile( m_nTextureID, "sprites/mail" , true, false);

SetHiddenBits( HIDEHUD_PLAYERDEAD );
} 


Собственно vgui::surface()->DrawSetTextureFile( m_nTextureID, "sprites/mail" , true, false); тут пишем путь к своему спрайту. SetHiddenBits( HIDEHUD_PLAYERDEAD ); Здесь говорится, что нужно убрать этот HUD с экрана только тогда, когда игрок умрёт. BaseClass(NULL, "InfoROD") Тут важная штука... по ней мы будем хранить информацию о HuD. Так с этим всё ок вроде...
Далее сама функция paint()

void CHudInfo::Paint( void )
{

vgui::surface()->DrawSetTexture( m_nTextureID );
vgui::surface()->DrawTexturedRect( 0, 0, 50, 30 );

} 

Где vgui::surface()->DrawTexturedRect это размеры спрайта. Всё с кодом закончили, теперь можно смело компилировать. Далее нам нужно создать спрайт. Vmt файл для текстуры спрайта должен быть такой:

"Sprite"
{
"$spriteorientation" "vp_parallel"
"$spriteorigin" "[ 0.50 0.50 ]"
"$ignorez" 1
"$baseTexture" "sprites/mail"
}
Так тут вроде всё понятно. Далее нужно добавить информацию о спрайте в файл HudLayout.res. Итак открываем его (scripts\HudLayout.res) и добавляем:
 
Как выглядит спрайт в игре (конверт на экране слева)
 

 
InfoROD
{
"fieldName" "HudInfo"
"visible" "1"
"enabled" "1"  // активирован или нет
"xpos" "16"    // положение по x
"ypos" "200"   // положение по y
"wide" "50"
"tall" "30"

"PaintBackgroundType" "0"
}

Всё. Теперь всё сохраняем и запускаем игру и вуаля...
Здесь я описал базовое создание, потом можно его анимировать, подключать event и т.п 10x



Источник: http://wiki.hl2.ru/index.php?title=HUD_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE_%D0%B8_%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%BD%
Категория: Туториалы по программированию (HL2) | Добавил: DetLeR (27.06.2007) | Автор: Fena (aka [SP]Phoenix)
Просмотров: 3213 | Комментарии: 3 | Рейтинг: 5.0 |

Всего комментариев: 3
3 Виталий  
2
Конечно простите меня за нубство, но где серверная и клиентские части???

2 Snakeus  
1
Вообще-то в инклудах должно быть так:
#include "cbase.h"
#include "hudelement.h"
#include "hud_macros.h"
#include "iclientmode.h"
#include "view.h"
#include <vgui_controls/Panel.h>
#include <vgui_controls/Frame.h>
#include <vgui/IScheme.h>
#include <vgui/ISurface.h>
#include <vgui/ILocalize.h>
#include "tier0/memdbgon.h"

1 Master_4if  
0
Замечательный переведёный тутор biggrin

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

Кто в Онлайн

Друзья сайта

Баннеры

  Сайт 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