Source Modification Centre - LOGO
Gość: ( Logowanie | Rejestracja )

 
MENU
 
ZASOBY
 
 
LEGENDA
 
REKLAMA
tani zdjęcia ślub Gorzów Wielkopolski

tani hotele Gorzów Wielkopolski

Suknie ślubne gorzów wlkp


fotografia studniówkowa Gdynia

wypożyczalnia samochodów

Encyklopedia wiedzy o grach Valve

kabriolet bmw gorzów wlkp

tania strona internetowa

NASZ BUTTON
SMC
 
NA FORUM
 
 
TUTORIALE - CODING [ Dodaj ]
Tworzenie nowego elementu HUD'a
[ 2005-08-03 17:56:08  Dodał:  TeWu   Wyświetleń: 3140   Komentarzy: 2  ]
Ten tutorial pokaże wam jak dodać nowy element HUD'a.

ZACZYNAMY
Odpalamy Microsoft Visual Studio i otwieramy solucję (FILE->OPEN SOLUTION...) GAME_SDK.SLN znajdującą się w katalogu SRC naszego modu (np. C:\MYMOD\SRC\GAME_SDK.SLN).

TWORZENIE PLIKU .H
Tworzymy plik [Nazwa].H (np. HUD_AMMO_TLO.H) w katalogu SRC\CL_DLL\HL2_HUD naszego modu (np. C:\MYMOD\SRC\CL_DLL\HL2_HUD). Następnie wklejamy do niego:

#include "hudelement.h"
#include

class C[Nazwa] : public CHudElement, public vgui::Panel
{
 
   DECLARE_CLASS_SIMPLE( C[Nazwa], vgui::Panel );
 
   public:
     C[Nazwa]( const char *pElementName );
 
   protected:
     virtual void Paint();
     int m_nTextureID;
 
  };

Potem zastępujemy wszystkie(3) [Nazwa] nazwą naszego pliku (bez rozszerzenia)(np. "C[Nazwa]" zmieniamy na "CHud_ammo_tlo"). Ważne jest by nie kasować dużej litery C na początku : CHud_ammo_tlo.

TWORZENIE PLIKU .CPP
Tworzymy plik [Nazwa].CPP (np. HUD_AMMO_TLO.CPP) w katalogu SRC\CL_DLL\HL2_HUD naszego modu (np. C:\MYMOD\SRC\CL_DLL\HL2_HUD). Plik .cpp musi mieć taką samą nazwę jak plik.h  Następnie wklejamy do niego:

#include "hud.h"
#include "cbase.h"
#include "[Nazwa].h"
#include "iclientmode.h"
#include "hud_macros.h"
#include "vgui_controls/controls.h"
#include "vgui/ISurface.h" 
#include "tier0/memdbgon.h"
#include

C[Nazwa]::C[Nazwa]( const char *pElementName ) : CHudElement( pElementName ), BaseClass( NULL, "[Nazwa]" )
{
   vgui::Panel *pParent = g_pClientMode->GetViewport();
   SetParent( pParent );

   SetBgColor(Color(0,255,0,0));  // Kolor tla
   SetPaintBackgroundEnabled( false );  // Tlo ma być nie widoczne
   
   SetHiddenBits( HIDEHUD_PLAYERDEAD | HIDEHUD_NEEDSUIT | HIDEHUD_FLASHLIGHT );  // Kiedy element ma być NIE widoczny
};

DECLARE_HUDELEMENT( C[Nazwa] );

void C[Nazwa]::Paint()
{


}

Zastępujemy wszystkie(6) [Nazwa] nazwą naszego pliku (bez rozszerzenia)(np. "C[Nazwa]" zmieniamy na "CHud_ammo_tlo".

HUDLAYOUT.RES
Teraz musimy dodać pliki do projektu, aby to zrobić musimy otworzyć sobie widok SOLUTION EXPLORER. Solution Explorer wygląda tak:

Source Modification Centre

Aby go otworzyć naciskamy CTRL+ALT+L , lub z menu VIEW wybieramy opcję SOLUTION EXPLORER.
Teraz wybieramy projekt clienta (client) i przechodzimy w nim do katalogu SOURCE FILES. Na tym katalogu klikamy prawym klawiszem, z menu wybieramy ADD->ADD EXISTING ITEM i dodajemy nasz plik .cpp. To samo musimy zrobić z plikem .h tylko że jego dodajemy do katalogu  HEADER FILES.
Teraz musimy dodać nasz element do pliku HUDLAYOUT.RES. Więc otwieramy ten plik, znajduje się on w steam'owym katalogu naszego moda w katalogu SCRIPTS (czyli np. C:\GRY\STEAM\STEAMAPPS\SOURCEMODS\TEWU\SCRIPTS\HUDLAYOUT.RES jeżeli nasz mod nazywa się "TeWu"). Teraz po:

"Resource/HudLayout.res"
{

piszemy :

[Nazwa]
{
    "fieldName" "[Nazwa]"
    "xpos" "16"
    "ypos" "365"
    "wide" "110"
    "tall" "110"
    "visible" "0"
    "enabled" "1"
    "PaintBackgroundType" "2"
}

Zastępujemy [Nazwa] nazwą naszego pliku (bez rozszerzenia)(np. [Nazwa] zamieniamy na Hud_ammo_tlo). W tym pliku możemy zmienić ustawienia naszego elementu. Zamykamy plik i wracamy do Microsoft Visual Studio. Teraz Możemy wybrać, jaki typ elementu chcemy stworzyć: teskt, prostokąt czy obrazek.

TWORZENIE PROSTOKĄTA
Aby stworzyć prostokąt w pliku [Nazwa].CPP po:

void C[Nazwa]::Paint()
{

piszemy:

vgui::surface()->DrawSetColor(  255, 0, 0, 255 ); //RGBA
vgui::surface()->DrawFilledRect( 0, 0, 20, 20 ); //x0,y0,x1,y1

W nawiasie po DrawSetColor ustawiamy kolor prostokąta.
W nawiasie po DrawFilledRect ustawiamy pozycje i wielkość prostokąta.

A tak powinien wyglądać prostokąt jako element HUD'a

Source Modification Centre


TWORZENIE TEKSTU
Aby stworzyć teskt w pliku [Nazwa].CPP po:

void C[Nazwa]::Paint()
{

piszemy:

wchar_t *pText = L"Hello world!";// wide char text

// get the right font handle for this scheme
vgui::IScheme *pScheme = vgui::scheme()->GetIScheme(GetScheme());
vgui::HFont hFont = pScheme->GetFont( "DefaultSmall" );

vgui::surface()->DrawSetTextFont( hFont ); // set the font
vgui::surface()->DrawSetTextColor( 255, 0, 0, 255 ); // full red
vgui::surface()->DrawSetTextPos( 10, 10 ); // x,y position
vgui::surface()->DrawPrintText( pText, wcslen(pText) ); // print text

Po pScheme->GetFont ustawiamy czcionkę (Jeżeli nie ustawimy żadnej, zostanie użyta taka, która jest bardzo podobna (jeżeli nie taka sama) do tej która jest użyta do napisu "HEALTH" w nie zmodyfikowanym HL'u 2)
Po DrawSetTextColor ustawiamy kolor textu.
Po DrawSetTextPos ustawiamy pozycje textu.

A tak powinien wyglądać text, jako element HUD'a

Source Modification Centre


TWORZENIE OBRAZKA
Aby stworzyć obrazek, w pliku [Nazwa].CPP po:

SetBgColor(Color(0,255,0,0));
SetPaintBackgroundEnabled( false );

piszemy:

m_nTextureID = vgui::surface()->CreateNewTextureID();
vgui::surface()->DrawSetTextureFile( m_nTextureID, "vgui/mylogo" , true, false);

Zamieniamy "vgui/mylogo" na ścieżkę do naszego pliku z obrazkiem. Nasz obrazek musi mieć rozszerzenie .vtf (rozszerzenie tekstur HL2). Ścieżka rozpoczyna się od katalogu MATERIALS w steam'owym katalogu naszego moda (np. C:\GRY\STEAM\STEAMAPPS\SOURCEMODS\TEWU\MATERIALS jeżeli mod nazywa się "TeWu"). Teraz po

void C[Nazwa]::Paint()
{

piszemy:

vgui::surface()->DrawSetColor(  255, 0, 0, 255 ); //RGBA
vgui::surface()->DrawSetTexture( m_nTextureID );
vgui::surface()->DrawTexturedRect( 0, 0, 100, 100 );

Po DrawTexturedRect ustawiamy pozycje i rozmiar naszej textury.
Tworzone obrazki dobrze się sprawdzają jako tło liczników zdrowia, amunicji itp.

Taki efekt można uzyskać używając textur jako HUD'a (czerwony element, pomarańczowy krzyżyk oraz czarna obwódka wokół krzyżyka)

Source Modification Centre


Autor: TeWu
Komentarze ( 2 ) / Dodaj komentarz
 
KOMENTARZE  
[ 2009-02-11 00:39:02  Dodał:  pietrekder  ]
 
SUPER tutek, świetnie objaśnione i wytłumaczone.
Właśnie się bawię w tworzenie nowego HUD'a Emot
 
[ 2009-02-11 01:56:35  Dodał:  TeWu  ]
 
O kurde.. jak miło Emot Emot Po 4 latach wreszcie komuś się spodobał mój pierwszy tutek Emot
PZDR i Powodzenia..
 
INFO
 
NAJNOWSZE
 
SHOUTBOX
MoonBlaze: ciasto is a lie
zwieracz: Przyłącz się do mnie, mam ciasto
Jodla: <kontemplujac stwierdza iz obecna rzeczywistosc jest do bani>
MoonBlaze: sm_ban @Dabu 1
Dabu: Ta strona umarła, zapraszam lepiej na heacrab.pl :D [/koniec reklamy]
Jodla: open beta nowego gmoda a tu 0 info na stronie ...może czas to zmienic zwłaszcza iż screeny z GM13 wygladaja apetycznie
Dabu: web 3.0
Elektryk: Link
Tracha: Ruski gracz!
zwieracz: Za moich czasów, to się bawilismy przy takiej gierce, gdzie zając łapaj kury za jaja. A moze to był wilk.
 
ANKIETA

[ Czas generowania strony: 0.057 secs. ]

Copyright (c) 2002-2005 by Mefi & .raven
Wszelkie prawa zastrzeżone

Fotograf studniówka
Salon sukien ślubnych gorzów



38.107.179.22238.107.179.222

Polecamy:

rozrywkaPrzepisy kulinarnekredytserwiswww.transport.uldum.bielawa.plpozycjonowanie cennik GotLink.pl Okleiny i Tarcica Usher music noclegi odziez Darmowe konta rapidshare.com