AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 Modification du HUD de HL2

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
drone84
Créateur de Espace - Aide au développement de Half-Life: Wilson Chronicles
Créateur de Espace - Aide au développement de Half-Life: Wilson Chronicles
avatar

Messages : 277
Date d'inscription : 05/10/2007
Age : 27
Localisation : perdu dans Black Mesa. Eaglesg HELP!

MessageSujet: Modification du HUD de HL2   Mar 23 Juin - 17:50

Bienvenue dans le côté obscur de HL2: le HUD. ^^

Ce tutoriel a pour but d'expliquer en détail comment rajouter des images dans le HUD, les positionner, changer la couleur de la texture quand on arrive a x point de vie et modifier la position des indications comme la vie, l'armure, les munitions etc...

Petite EDIT de Eaglesg: Drone part du principe que vous vous y connaissez un peu en C++ et que vous avez bien configuré comme des grands Visual C++ Wink

Ce tutoriel a été écrit a l'aide du tuto sur valve wiki "basic hud modification" et mes découverte donc certaines affirmation peuvent être fausse. Merci de me les signaler de manière agréable et pas m'assassiner car pour l'instant c'est le seul tuto de modification de hud claire et surtout en fr, merci.

Pour commencer il nous faut une texture au format vtf et son vmt associé.
Voici à quoi doit ressembler le vmt, si vous voulez avoir une couche alpha reconnue par le moteur:

Code:
"UnlitGeneric"
{
      "$basetexture" "HUD/texture_vie"
      "$translucent"  "1"
      "$translucency" "1"
      "$ignorez" "1"
}

Je rappelle que les vtf doivent avoir une taille en multiple de 2.

Maintenant il va falloir coder. c'est à mettre du côté client.

Commencez par créer le fichier hud_texture_vie.h et insérez-y ce code

Code:
#include "hudelement.h"
#include

using namespace vgui;

class CHudTextureVie : public CHudElement, public Panel
{
  DECLARE_CLASS_SIMPLE( CHudTextureVie, Panel );

  public:
  CHudTextureVie( const char *pElementName );
  void togglePrint();
  virtual void OnThink();

  protected:
  virtual void Paint();
  int m_nTextureVie;
};

C'est fini pour le .h

Ensuite créez un fichier hud_texture_vie.cpp placez y les include suivant

Code:
#include "hud.h"
#include "cbase.h"
#include "hud_texture_vie.h"
#include "iclientmode.h"
#include "hud_macros.h"
#include "vgui_controls/controls.h"
#include "vgui/ISurface.h"

#include "tier0/memdbgon.h"

using namespace vgui;

DECLARE_HUDELEMENT( CHudTextureVie );

Là, on va indiquer au moteur de hl2
- Où se situe le vmt
- Si la texture est visible ou non
- Quelle est la transparence de la couche alpha
- Vérifier si on a la CPMH (HEV pour les anglais) ou pas

Code:
CHudTextureVie::CHudTextureVie( const char *pElementName ) : CHudElement( pElementName ), BaseClass( NULL, "HudTextureVie" )
{
  Panel *pParent = g_pClientMode->GetViewport();
  SetParent( pParent ); 
 
  SetVisible( false );
  SetAlpha( 255 );

  //AW Create Texture for Looking around
  m_nTextureVie = surface()->CreateNewTextureID();  //crée un id pour la nouvelle texture
  surface()->DrawSetTextureFile( m_nTextureVie, "HUD/TextureVie" , true, true);  // indique le chemain de la texture et si je ne me tronpe pas l'assigne a son ID (m_nTextureVie), ne pressisez pas l'extention

  SetHiddenBits( HIDEHUD_PLAYERDEAD | HIDEHUD_NEEDSUIT );
}

Quelque chose d'intéressant dans la 1ere ligne du code:

Code:
CHudElement( pElementName ), BaseClass( NULL, "HudTextureVie" )

"HudTextureVie" permet de définir au moteur où aller chercher les coordonnées de la texture dans HudLayout.res mais ne vous inquiétez pas je détaillerais cette partie plus tard.


La prochaine fonction va permettre de charger la texture et de l'afficher.

Code:
void CHudTextureVie::Paint()
{
  SetPaintBorderEnabled(false);
    surface()->DrawSetTexture( m_nTextureVie );  // affiche la texture associer a l'ID
  surface()->DrawTexturedRect( 0, 0, 128, 128 );  //positionne la texture quui vient d'etre affichée et indique la dimention de celle ci (les 2 dernier chifre)
}

les coordonnées de la texture sont celles par défaut et seront modifiables mais pas encore les dimensions (j'ai pas encore tester ça fait que 3 jours que je code entre mes révisions de bac... C'est plus tôt l'inverse... ^^)

Code:
surface()->DrawTexturedRect( xspacing , yspacing, xsize, ysize );

Dès que j'ai des infos dessus je complèterais.

Code:
static ConVar show_beta("show_beta", "0", 0, "toggles beta icon in upper right corner");
Cette ligne se place après le dernier include comme ceci:



Code:
#include "tier0/memdbgon.h"

using namespace vgui;

DECLARE_HUDELEMENT( CHudTextureVie );
static ConVar hud_texturevie("hud_texturevie", "0", 0, "toggles beta icon in upper right corner");

Elle permet de définir une commande dans la console de hl2 (clique droit sur l'icône du mod => option de lancement => -dev -console puis ok, -dev permet de désactiver la vidéo d'intro et les maps en background et -console (très dur...) affiche la console)

Tapez dans la console hud_texturevie 1 et en lançant une map. Vous pourrez voire votre texture mais pas du tout à l'endroit attendue , hud_texturevie 0 effacer la texture (mais allez au bout du tuto).

Pour finir avec le codding ajoutez ces 2 dernières fonctions:

Code:
void CHudTextureVie::togglePrint()
{
  if (!hud_texturevie.GetBool())
      this->SetVisible(false);
  else
      this->SetVisible(true);
}
et
Code:
void CHudTextureVie::OnThink()
{
  togglePrint();

  BaseClass::OnThink();
}

CHudTextureVie::togglePrint() permet d'afficher la texture si hud_texturevie 1 a été rentré sinon on affiche pas la texture
CHudTextureVie::OnThink(. Je ne sais pas a quoi elle sert mais elle y est donc je l'ai mise.

Voila la partie codding est finie il reste plus qu'à compiler.

Passons au fichier de configuration, ce qui est un apport non négligeable par rapport a HL1

Allez dans le dossier scripts/HudLayout.res, ouvrez le là vous devriez voir un code de cette forme:


Code:
 HudTextureVie
  {
      "fieldName" "HudTextureVie"
      "xpos" "r86"
      "ypos" "6"
      "wide" "80"
      "tall" "34"
      "visible" "0"
      "enabled" "1"
     
      "PaintBackgroundType"  "2"
  }

Rajoutez-le juste après health, enregistrez et exécutez votre mod et là, si tout a fonctionné, vous devriez voir une texture en haut a droite de votre écran. Si un quadrillage rose et noir apparait au lieu de la texture, ne vous affolez pas, c'est juste que le moteur ne trouve pas la texture. Cela ne vient en aucun cas d'une erreur de code. Revérifiez tout vos chemins.
La première partie de ce tuto est finie.

La deuxième partie va expliquer comment déplacer la vie, l'armure, et les munitions.
Tout se passe dans
recource\ClientShem.res
script\HudLayout.res
script\Hudanimation.txt

ClientShem.res contient toutes les couleur du hud et les tailles des cratères.

HudLayout.res contient toutes les coordonnée de position des élément du hud.

Hudanimation.txt quant a lui, il permet de paramétrer comment réagi, par exemple la vie quand on se fais mal, la couleur passe au rouge a 19 de vie, et bien c'est dans ce fichier que c'est paramétré ce changement de couleur est un event et est appeler par le code quand la vie est inférieur a 20
par contre si on veut faire que la vie passe de vert a jaune a 40 de vie il faudra coder l'event et dans hudanimation il faudra crée une nouvelle portion de code (facile il suffira de copier le changement de couleur pour 19 de vie)
Cette partie n'est pas terminée car je n'ai pas mes fichiers modifiés sous la main et pas d'image pour agrémenter cette partie. La première partie sera aussi complétée avec des images.

Bon test pour les plus courageux qui on envie de tester dès maintenant ce tuto bourré de fautes d'orthographe (EDIT: Plus maintenant, Eaglesg le super-correcteur est passé Laughing) (et oui si je passe pas mon bac de LV2 c'est pas pour rien ^^ merci la dyslexie)

_________________
INTEL E8400 3GHz@4,2GHz et fsb 1333@1800Mhz/ASUS Formula Rampagr/Crossfire HD4870(ati)/4*1Go de G.Skill PC8500 1.066Ghz/Sata2 WD 400Go,WD 320Go, HITACHI 1To/Watercooling cpu et gpu/boitier home-made
"-Luc, je suis ton père"
"-Prouve le! Passe moi les clefs d'ta 106"
"-Luc, tu marche... sur mes tuyaux"



Dernière édition par drone84 le Mer 8 Juil - 16:07, édité 7 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.blackmesa.123.fr/espace.html
drone84
Créateur de Espace - Aide au développement de Half-Life: Wilson Chronicles
Créateur de Espace - Aide au développement de Half-Life: Wilson Chronicles
avatar

Messages : 277
Date d'inscription : 05/10/2007
Age : 27
Localisation : perdu dans Black Mesa. Eaglesg HELP!

MessageSujet: Re: Modification du HUD de HL2   Mar 23 Juin - 18:03

Ce post me servira pour répondre aux questions les plus posées et ainsi éviter de reposer 500 000 fois les mêmes questions...

problème:
-quand on lance le jeux et que l'on récupéré la CPMH l'ecran est tout nour avec des tache bleu (ce sont les image du hud mais sans la couche alpha)

=> allez dans option -> vidéo -> avancé il suffi de changer "détaille des textures" faire ok et ensuite le remettre comme il étais.

_________________
INTEL E8400 3GHz@4,2GHz et fsb 1333@1800Mhz/ASUS Formula Rampagr/Crossfire HD4870(ati)/4*1Go de G.Skill PC8500 1.066Ghz/Sata2 WD 400Go,WD 320Go, HITACHI 1To/Watercooling cpu et gpu/boitier home-made
"-Luc, je suis ton père"
"-Prouve le! Passe moi les clefs d'ta 106"
"-Luc, tu marche... sur mes tuyaux"

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.blackmesa.123.fr/espace.html
 
Modification du HUD de HL2
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Modification de la procédure de Booster Draft à partir de Mirrodin Besieged
» Demande de modification d'avatar
» [IMPORTANT] Modification 4.3 du rendement en BG
» Modification Panel
» Modification de la master system II (RGB + alim)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
The Eaglesg Studio - Forum :: Modification Half-Life :: Créer son mod-
Sauter vers: