Добрый вечер... давненько я не писал туторов... Сегодня я расскажу, как сделать свой HuD с текстуркой типа:
этого письма (слева) (типа смс ) И так приступим... откроем клиентовскую часть... и создадим новый cpp... например hud_mail.cpp
Для начала:
code:
#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"
Ну, тут вроде всё понятно?
Далее описываем класс:
code:
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();
Далее:
code:
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();
code:
void CHudInfo::Paint( void )
{
vgui::surface()->DrawSetTexture( m_nTextureID );
vgui::surface()->DrawTexturedRect( 0, 0, 50, 30 );
}
Где
vgui::surface()->DrawTexturedRect это размеры спрайта. Всё с кодом конец... можно смело компилить...
Далее нам надо создать спрайт... собсно компилим его... vmt файл должен быть такой:
code:
"Sprite"
{
"$spriteorientation" "vp_parallel"
"$spriteorigin" "[ 0.50 0.50 ]"
"$ignorez" 1
"$baseTexture" "sprites/mail"
}
Так тут вроде всё понятно
Далее нужно добавить информацию о спрайте в HudLayout.res. И так открываем его (scripts\HudLayout.res) и добавим:
code:
InfoROD
{
"fieldName" "HudInfo"
"visible" "1"
"enabled" "1" //активирован или нет
"xpos" "16" // положение по x
"ypos" "200" // положение по y
"wide" "50"
"tall" "30"
"PaintBackgroundType" "0"
}
Всё... теперь всё сохраняем, запускаем игру.. и вуаля... здесь я описал базовое создание... потом можно его анимировать, подключать event и т.п
10x
[SP]Phoenix aka Fena (fedjarik@gcnet.ru)