Lowering your weapon on sprint: Difference between revisions
Jump to navigation
Jump to search
Note: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: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
Note:This has been tested with HL2MP, 2013 and Alien Swarm SDKS.
Note:Tornamos ProcessAnimationEvents virtuais para que possamos substituí-lo em classes que herdam esta classe.
(unnamed parameters don't require the "1=" :p) |
No edit summary |
||
Line 1: | Line 1: | ||
{{lang|title=Abaixando sua arma enquanto correndo}} | |||
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| | {{note|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|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|This has been tested with HL2MP, 2013 and Alien Swarm SDKS.}} | {{note|This has been tested with HL2MP, 2013 and Alien Swarm SDKS.}} | ||
===BASECOMBATWEAPON_SHARED.CPP=== | ===BASECOMBATWEAPON_SHARED.CPP=== | ||
Aperta CRTL+F e procure para essa parte: | |||
<source lang=cpp> | <source lang=cpp> | ||
Line 19: | Line 18: | ||
</source> | </source> | ||
Em seguida, copie e cole isto acima: | |||
<source lang=cpp> | <source lang=cpp> | ||
Line 57: | Line 56: | ||
</source> | </source> | ||
Agora, para garantir que nosso código seja chamado, adicionamos ProcessAnimationEvents(); aqui: | |||
<source lang=cpp> | <source lang=cpp> | ||
Line 63: | Line 62: | ||
void CBaseCombatWeapon::ItemPostFrame( void ) | void CBaseCombatWeapon::ItemPostFrame( void ) | ||
{ | { | ||
//Adicione isso abaixo da verificação do acessador pOwner. | |||
ProcessAnimationEvents(); | ProcessAnimationEvents(); | ||
} | } | ||
Line 71: | Line 70: | ||
===BASECOMBATWEAPON_SHARED.H=== | ===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| | {{note|Tornamos ProcessAnimationEvents virtuais para que possamos substituí-lo em classes que herdam esta classe.}} | ||
<source lang=cpp> | <source lang=cpp> | ||
Line 81: | Line 80: | ||
</source> | </source> | ||
== | ==Fim== | ||
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! | 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! | ||
[[File:Sprint.gif|none| | [[File:Sprint.gif|none| Olhe como fica! ] | ||
[[Category:Weapons programming]] | [[Category:Weapons programming:pt-br]] | ||
[[Category:Tutorials]] | [[Category:Tutorials:pt-br]] | ||
[[Category:Programming:pt-br]] |
Revision as of 10:12, 16 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.


O Codigo

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:

virtual void ProcessAnimationEvents(void);
bool m_bWeaponIsLowered;
Fim
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! [[File:Sprint.gif|none| Olhe como fica! ]