Abaixando sua arma enquanto correndo

From Valve Developer Community
Jump to navigation Jump to search
English (en)Português do Brasil (pt-br)Translate (Translate)
Underlinked - Logo.png
This article needs more Wikipedia icon links to other articles to help Wikipedia icon integrate it into the encyclopedia. Please help improve this article by adding links Wikipedia icon that are relevant to the context within the existing text.
January 2024
Dead End - Icon.png
This article has no Wikipedia icon links to other VDC articles. Please help improve this article by adding links Wikipedia icon that are relevant to the context within the existing text.
January 2024

Este artigo fornece uma implementação básica de abaixamento de armas durante a corrida e prevenção de disparos de armas ao fazê-lo.

Note.pngNota:Isso não funcionará se seu modelo de visualização não tiver animação ACT_VM_IDLE_LOWERED declarada em algum lugar do arquivo .qc.
Note.pngNota:Se sua gun_yourweaponname.cpp estiver substituindo ItemPostFrame, você deverá colocar BaseClass::ProcessAnimationEvents(); no ItemPostFrame dessa classe, mas somente se você não estiver chamando BaseClass::ItemPostFrame();. Por exemplo, em arma_shotgun.cpp ele tem uma substituição de ItemPostFrame, o que significa que o código de redução da arma não será chamado para esta arma, a menos que você adicione uma chamada a ela! Lembre-se de colocar as declarações Basecombatweapon_Shared.h em públicas ou protegidas para que você possa fazer uso dessas variáveis ​​​​em classes que herdam basecombatweapon_shared, como o ItemPostFrame do Weapon_shotgun.cpp. Se você não fizer isso, receberá erros de identificador não declarados

O Codigo

Note.pngNota:This has been tested with HL2MP, 2013 and Alien Swarm SDKS.

BASECOMBATWEAPON_SHARED.CPP

Aperta CRTL+F e procure para essa parte:

void CBaseCombatWeapon::ItemPostFrame( void )

Em seguida, copie e cole isto acima:

void CBaseCombatWeapon::ProcessAnimationEvents(void)
{
	CBasePlayer *pOwner = ToBasePlayer( GetOwner() );
	if (!pOwner)
		return;

	if ( !m_bWeaponIsLowered && (pOwner->m_nButtons & IN_SPEED ) )
	{
		m_bWeaponIsLowered = true;
		SendWeaponAnim( ACT_VM_IDLE_LOWERED );
		m_flNextPrimaryAttack = gpGlobals->curtime + GetViewModelSequenceDuration();
	        m_flNextSecondaryAttack = m_flNextPrimaryAttack;
	}
	else if ( m_bWeaponIsLowered && !(pOwner->m_nButtons & IN_SPEED ) )
	{
		m_bWeaponIsLowered = false;
		SendWeaponAnim( ACT_VM_IDLE );
		m_flNextPrimaryAttack = gpGlobals->curtime + GetViewModelSequenceDuration();
 	        m_flNextSecondaryAttack = m_flNextPrimaryAttack;
	}

	if ( m_bWeaponIsLowered )
	{
		if ( gpGlobals->curtime > m_flNextPrimaryAttack )
		{
			SendWeaponAnim( ACT_VM_IDLE_LOWERED );
			m_flNextPrimaryAttack = gpGlobals->curtime + GetViewModelSequenceDuration();
			m_flNextSecondaryAttack = m_flNextPrimaryAttack;
		}
	}
}

Agora, para garantir que nosso código seja chamado, adicionamos ProcessAnimationEvents(); aqui:

void CBaseCombatWeapon::ItemPostFrame( void )
{
     //Adicione isso abaixo da verificação do acessador pOwner.
      ProcessAnimationEvents();
}

BASECOMBATWEAPON_SHARED.H

Adicione essas declarações em public na linha 211 abaixo bool IsViewModelSequenceFinished( void ); // Retorna se a animação atual do viewmodel foi finalizada:

Note.pngNota:Tornamos ProcessAnimationEvents virtuais para que possamos substituí-lo em classes que herdam esta classe.
	virtual void            ProcessAnimationEvents(void);
	bool                    m_bWeaponIsLowered;

Fim

Agora quando você correr sua arma deve abaixar!

Olhe como fica
Wikipedia - Letter.png
This article has not been added to any content Wikipedia icon categories. Please help out by Wikipedia icon adding categories.
January 2024