Pt-br/Team Icons: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(→‎The Result: For some reason this did not saved when i clicked save changes..)
m (obsolete language category)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{lang|title=Ícones de time}}
{{lang|title=Ícones de time|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:
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:


Line 21: Line 21:
Crie dois arquivos no projeto do lado do '''client'''  e coloque o nome que quiser, mas nesse tutorial eu colocarei ''Rteamicon.cpp'' & ''Rteamicon.h''.
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
Agora abra '''Rteamicon.cpp''' e comece a colocar o headers
<pre>
<syntaxhighlight lang=cpp>
// ======= *********-|RECOIL|-********* =======//
// ======= *********-|RECOIL|-********* =======//
// Programador: John Stuart                                                     
// Programador: John Stuart                                                     
Line 40: Line 40:


DECLARE_HUDELEMENT( CRTeamIcon );
DECLARE_HUDELEMENT( CRTeamIcon );
</pre>
</syntaxhighlight>


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


<pre>
<syntaxhighlight lang=cpp>
//-----------------------------------------------------------
//-----------------------------------------------------------
// Purpose:  
// Purpose:  
Line 66: Line 66:
   SetHiddenBits( HIDEHUD_PLAYERDEAD | HIDEHUD_NEEDSUIT );
   SetHiddenBits( HIDEHUD_PLAYERDEAD | HIDEHUD_NEEDSUIT );
}
}
</pre>
</syntaxhighlight>


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.
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.


<pre>
<syntaxhighlight lang=cpp>
//------------------------------------------------ -----------
//------------------------------------------------ -----------
// Objetivo: Se pPlayer (eu) estiver no time Combine, exibir o ícone do Iraque
// Objetivo: Se pPlayer (eu) estiver no time Combine, exibir o ícone do Iraque
Line 100: Line 100:
  BaseClass::PaintBackground();
  BaseClass::PaintBackground();
}
}
</pre>
</syntaxhighlight>


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:
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:


<pre>
<syntaxhighlight lang=cpp>
// ======= *********-|RECOIL|-********* =======//
// ======= *********-|RECOIL|-********* =======//
// Programador: John Stuart                                           
// Programador: John Stuart                                           
Line 133: Line 133:


};
};
</pre>
</syntaxhighlight>


==Materiais==
==Materiais==
Line 160: Line 160:
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á.


[[Category:Programming:pt-br]]
{{ACategory|Programming}}
[[Category:Tutorials]]
[[Category:Tutorials]]

Latest revision as of 03:40, 22 August 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á.