Delayed Attacks: Difference between revisions
Jump to navigation
Jump to search
Note:If you have an ItemPostFrame function already, do not add the ItemPostFrame void. Also if you have a PrimaryAttack void already, then replace with the one below.
Note:If you are planning to add a preparing animation, you may uncomment the animation comments and comment out the other m_flDelayedAttackTime
Note:Though if you are doing a melee weapon, do not replace anything and leave as is.
Note:Remember to replace CWeaponDelayed to your weapon class otherwise it won't compile.
(Removed orphan and minor grammar fix) |
Thunder4ik (talk | contribs) |
||
Line 1: | Line 1: | ||
{{Multiple issues| | |||
{{Dead end|date=January 2024}} | |||
{{Orphan|date=January 2024}} | |||
}} | |||
== Overview == | == Overview == | ||
This tutorial will show you how to set up the Delayed Attack function to your weapon whether it's melee or fire arms. This should work with both Multiplayer and Singleplayer mods. | This tutorial will show you how to set up the Delayed Attack function to your weapon whether it's melee or fire arms. This should work with both Multiplayer and Singleplayer mods. | ||
Line 38: | Line 43: | ||
} | } | ||
</pre> | </pre> | ||
Next add the '''ItemPostFrame''' function if you don't already have one, if you do, just copy the content and place it with in your existing '''ItemPostFrame''' function. | Next add the '''ItemPostFrame''' function if you don't already have one, if you do, just copy the content and place it with in your existing '''ItemPostFrame''' function. | ||
{{note|If you are planning to add a preparing animation, you may uncomment the animation comments and comment out the other '''m_flDelayedAttackTime'''}} | {{note|If you are planning to add a preparing animation, you may uncomment the animation comments and comment out the other '''m_flDelayedAttackTime'''}} | ||
Line 76: | Line 81: | ||
{{Note|Remember to replace '''CWeaponDelayed''' to your weapon class otherwise it won't compile.}} | {{Note|Remember to replace '''CWeaponDelayed''' to your weapon class otherwise it won't compile.}} | ||
[[Category:Weapons programming]] [[Category:Programming]] | [[Category:Weapons programming]] | ||
[[Category:Programming]] |
Revision as of 08:52, 21 January 2024

This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)

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 is an orphan, meaning that few or no articles link to it.
You can help by
adding links to this article from other relevant articles.
January 2024
You can help by

January 2024
Overview
This tutorial will show you how to set up the Delayed Attack function to your weapon whether it's melee or fire arms. This should work with both Multiplayer and Singleplayer mods.
Header
So add these new voids with in your weapon class.

void DelayedAttack( void ); void ItemPostFrame( void ); void PrimaryAttack( void ) { return;}
Now you may want to add these two in your weapon class.
private: bool m_bDelayedAttack; float m_flDelayedAttackTime;
If your Weapon doesn't have a constructor, add this after the DECLARE_CLASS.
CWeaponDelayed();
Weapon Script
Add two more headers within your weapon script if you haven't already.
#include "player.h" #include "basecombatcharacter.h" #include "in_buttons.h"
Add the new variables with in your constructor.
CWeaponDelayed::CWeaponDelayed() { m_bDelayedAttack = false; m_flDelayedAttackTime = 0.0f; }
Next add the ItemPostFrame function if you don't already have one, if you do, just copy the content and place it with in your existing ItemPostFrame function.

void CWeaponDelayed::ItemPostFrame( void ) { CBasePlayer *pOwner = ToBasePlayer( GetOwner() ); if ( pOwner == NULL ) return; if ( (pOwner->m_afButtonPressed & IN_ATTACK) && !m_bDelayedAttack) { //Animation Comments //SendWeaponAnim( ACT_VM_HAULBACK ); //m_flDelayedAttackTime = gpGlobals->curtime + SequenceDuration() + 1.0f; m_flDelayedAttackTime = gpGlobals->curtime + 1.0f; m_bDelayedAttack = true; } DelayedAttack(); BaseClass::ItemPostFrame(); }
The rest should be easy to follow, all you have to do is place your primary fire code with in it.

void CWeaponDelayed::DelayedAttack( void ) { if (m_bDelayedAttack && gpGlobals->curtime > m_flDelayedAttackTime) { //Replace this Comment with Weapon Attack Function BaseClass::PrimaryAttack(); m_bDelayedAttack = false; } }
