Lowering your weapon on sprint
Jump to navigation
Jump to search

This article needs more
links to other articles to help
integrate it into the encyclopedia. Please help improve this article by adding links
that are relevant to the context within the existing text.
January 2024



January 2024

This article has no
links to other VDC articles. Please help improve this article by adding links
that are relevant to the context within the existing text.
January 2024


January 2024
This article provides a basic implementation of weapon lowering while sprinting, and preventing weapon fire while doing so.


The Code

BASECOMBATWEAPON_SHARED.CPP
Hit CTRL+F and search for this code:
void CBaseCombatWeapon::ItemPostFrame( void )
Then copy and paste this above it:
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;
}
}
}
Now to make sure our code gets called we add ProcessAnimationEvents(); here:
void CBaseCombatWeapon::ItemPostFrame( void )
{
//Add this underneath the pOwner accessor check.
ProcessAnimationEvents();
}
BASECOMBATWEAPON_SHARED.H
Add these declarations under public at line 211 below bool IsViewModelSequenceFinished( void ); // Returns if the viewmodel's current animation is finished:

virtual void ProcessAnimationEvents(void);
bool m_bWeaponIsLowered;
Finish
Now your weapon should be lowered when you hit the sprint button and you will not be able to shoot until you release the button!

This article has not been added to any content
categories. Please help out by
adding categories.
January 2024


January 2024