* * * Форумы на Наша-Life THREAD * * * -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- THREAD : [Coding]: HuD [easy] Started at 11-03-2005 19:39 by Fena Visit at https://forum.nashalife.ru/showthread.php?threadid=14143 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 1] Author : Fena Date : 11-03-2005 19:39 Title : [Coding]: HuD [easy] Добрый вечер... давненько я не писал туторов... Сегодня я расскажу, как сделать свой HuD с текстуркой типа: [URL=http://gcnet.ru/~fmmypor/r01a0019.jpg]этого письма (слева) (типа смс :))[/URL] И так приступим... откроем клиентовскую часть... и создадим новый cpp... например hud_mail.cpp Для начала: [code] #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" [/code] Ну, тут вроде всё понятно? ;) Далее описываем класс: [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 ); [/code] Чтобы просто была текстурка нам достаточно всего одного 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 ); } [/code] Собственно [b]vgui::surface()->DrawSetTextureFile( m_nTextureID, "sprites/mail" , true, false);[/b] тут пишем путь к своему спрайту. [b]SetHiddenBits( HIDEHUD_PLAYERDEAD );[/b] Здеся грицца, что надо убрать этот Hud с экрана только тогда, когда игрок умрёт. [b] BaseClass(NULL, "InfoROD")[/b] Тут важная штука... по ней мы будем хранить информацию о HuD. Так с этим всё ок вроде... Далее собсно сам paint(); [code] void CHudInfo::Paint( void ) { vgui::surface()->DrawSetTexture( m_nTextureID ); vgui::surface()->DrawTexturedRect( 0, 0, 50, 30 ); } [/code] Где [b]vgui::surface()->DrawTexturedRect[/b] это размеры спрайта. Всё с кодом конец... можно смело компилить... Далее нам надо создать спрайт... собсно компилим его... vmt файл должен быть такой: [code] "Sprite" { "$spriteorientation" "vp_parallel" "$spriteorigin" "[ 0.50 0.50 ]" "$ignorez" 1 "$baseTexture" "sprites/mail" } [/code] Так тут вроде всё понятно :) Далее нужно добавить информацию о спрайте в 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" } [/code] Всё... теперь всё сохраняем, запускаем игру.. и вуаля... здесь я описал базовое создание... потом можно его анимировать, подключать event и т.п :) 10x [SP]Phoenix aka Fena (fedjarik@gcnet.ru) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 2] Author : VDm Date : 11-03-2005 20:09 У!!! Круто... Респект.. :) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 3] Author : Lolmen Date : 11-03-2005 22:06 А что можно еще такое придумать? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- The messages has been download from Форумы на Наша-Life at https://forum.nashalife.ru at 28.09.2024 06:53:26