Pt-br/Team Icons

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:
==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á.
Category:Tutorials