Pt-br/Team Icons: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Created page with "{{lang|title=Ícones de time}} Este tutorial tem como objetivo fazer com que o Hud Element exiba uma imagem dependendo do time em que você está. Por exemplo, se o jogador es...")
 
(→‎The Result: For some reason this did not saved when i clicked save changes..)
Line 156: Line 156:
É claro que você pode colocar sua imagem em qualquer lugar que desejar e no tamanho que desejar, editando ''xpos,ypos,wide,tall'' de acordo com suas configurações/necessidades.
É claro que você pode colocar sua imagem em qualquer lugar que desejar e no tamanho que desejar, editando ''xpos,ypos,wide,tall'' de acordo com suas configurações/necessidades.


==The Result==
==O resultado==


Agora você deve ter um bom elemento hud que exibe um ícone em seu HUD de qual time você está.
Agora você deve ter um bom elemento hud que exibe um ícone em seu HUD de qual time você está.

Revision as of 13:13, 20 January 2024

English (en)Deutsch (de)Polski (pl)Português do Brasil (pt-br)Русский (ru)Translate (Translate)

Este tutorial tem como objetivo fazer com que o Hud Element exiba uma imagem dependendo do time em que você está. Por exemplo, se o jogador estiver em um time, exiba 'esta imagem', mas se o jogador estiver no outro time, exiba 'esta imagem'. Aqui está o que você tera:

Hud icon example.png

Pré requisitos

Para que este tutorial funcione, você precisará ter 2 imagens vtf com configurações de vmt definidas. Exemplo de vmt está abaixo se você precisar:

"UnlitGeneric"
{
	"$basetexture" "vgui/hud/teamicons/iraqiran"
        "$translucent" "1"
        "$ignorez" "1" 
}

Elementos da HUD

Crie dois arquivos no projeto do lado do client e coloque o nome que quiser, mas nesse tutorial eu colocarei Rteamicon.cpp & Rteamicon.h. Agora abra Rteamicon.cpp e comece a colocar o headers

// ======= *********-|RECOIL|-********* =======//
// Programador: John Stuart                                                    
// ============================================//

#include "hud.h"
#include "cbase.h"
#include "Rteamicon.h"
#include "iclientmode.h"
#include "hud_macros.h"
#include "c_team.h"
#include "vgui_controls/controls.h"
#include "vgui/ISurface.h"
#include "hl2mp_gamerules.h"
#include "tier0/memdbgon.h"

using namespace vgui;

DECLARE_HUDELEMENT( CRTeamIcon );

Agora que temos os arquivos de cabeçalho, precisamos criar o construtor. Logo abaixo de using namespace vgui; cole isto:

//-----------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------
CRTeamIcon::CRTeamIcon( const char *pElementName ) : CHudElement( pElementName ), BaseClass( NULL, "CRTeamIcon" )
{
   Panel *pParent = g_pClientMode->GetViewport();
   SetParent( pParent );   
   
   SetVisible( true );
   SetEnabled( true );

// Isso define m_nIraqIcon como "vgui/hud/teamicons/iraqiran" que chama o vtf.
   m_nIraqIcon = vgui::surface()->CreateNewTextureID();
   vgui::surface()->DrawSetTextureFile( m_nIraqIcon, "vgui/hud/teamicons/iraqiran" , true, false);

   // O mesmo do que o de cima mas com reino unido..
   m_nBritishIcon = vgui::surface()->CreateNewTextureID();
   vgui::surface()->DrawSetTextureFile( m_nBritishIcon, "vgui/hud/teamicons/ukusa" , true, false);

   SetHiddenBits( HIDEHUD_PLAYERDEAD | HIDEHUD_NEEDSUIT );
}

Agora que o construtor está criado, podemos prosseguir e criar a função principal para que isso funcione, para este exemplo usaremos "Paint Background"' porque se você for usar normal '"Paint" você terá um fundo preto transparente.

//------------------------------------------------ -----------
// Objetivo: Se pPlayer (eu) estiver no time Combine, exibir o ícone do Iraque
// Finalidade+: caso contrário, se eu estiver no time Rebels, exibirá o ícone britânico.
//------------------------------------------------ -----------
void CRTeamIcon::PaintBackground()
{  
   SetBgColor(Color(0,0,0,0));
   
   CBasePlayer *pPlayer = UTIL_PlayerByIndex(engine->GetLocalPlayer());

      if(pPlayer->GetTeamNumber() == TEAM_COMBINE)
	  {
           vgui::surface()->DrawSetColor(GetFgColor());
	   vgui::surface()->DrawSetTexture( m_nIraqIcon );
	   vgui::surface()->DrawTexturedRect(0, 0, GetWide(), GetTall());
	   //DevMsg("Team Combine Icon Displayed\n"); // Spams console hehe :D
	  }
	  else if(pPlayer->GetTeamNumber() == TEAM_REBELS)
	  {
           vgui::surface()->DrawSetColor(GetFgColor());
	   vgui::surface()->DrawSetTexture( m_nBritishIcon );
	   vgui::surface()->DrawTexturedRect(0, 0, GetWide(), GetTall());
	   //DevMsg("Team Rebels Icon Displayed\n"); 
	  }

      SetPaintBorderEnabled(false);

	  BaseClass::PaintBackground();
}

Now we've nearly complete on the actual hud element, to make this all work we've got to finish the header file. Open up Rteamicon.h and place this in there:

// ======= *********-|RECOIL|-********* =======//
// Programador: John Stuart                                          
// ============================================//

#include "hudelement.h"
#include <vgui_controls/Panel.h>

using namespace vgui;

//-----------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------
class CRTeamIcon : public CHudElement, public Panel
{
   DECLARE_CLASS_SIMPLE( CRTeamIcon, Panel );

   public:

       CRTeamIcon( const char *pElementName );

   protected:

       virtual void PaintBackground();

       int m_nIraqIcon;
       int m_nBritishIcon;

};

Materiais

Agora que o hud está funcionando, podemos prosseguir para obter a imagem real no hud. já está lá, mas não está definido. Então vá em frente e abra seu arquivo "scripts/HudLayout.res" e coloque-o dentro:

	CRTeamIcon
	{
		"fieldName" "CRTeamIcon"
	        "xpos" "r62"
		"ypos" "0"
		"wide" "64"
		"tall" "32"
		"visible" "1"
		"enabled" "1"
      
		"PaintBackgroundType"   "2"
	}

É claro que você pode colocar sua imagem em qualquer lugar que desejar e no tamanho que desejar, editando xpos,ypos,wide,tall de acordo com suas configurações/necessidades.

O resultado

Agora você deve ter um bom elemento hud que exibe um ícone em seu HUD de qual time você está.