Code:
#include <amxmodx>
#include <reapi>
#include <hamsandwich>
#include <fakemeta>
enum _:eWeaponAnim
{
WEAPON_IDLE,
WEAPON_DRAW = 3,
};
public plugin_init()
{
register_plugin("Cloak Test", "1.0", "Crazy");
RegisterHam(Ham_Item_Deploy, "weapon_knife", "CKnife_Deploy_Post", 1),
register_forward(FM_CanSkipPlayer, "CBasePlayer_CanSkip");
register_forward(FM_UpdateClientData, "CBasePlayer_UpdateData_Post", 1);
}
public CBasePlayer_CanSkip(this)
{
if (!is_user_alive(this))
return FMRES_IGNORED;
if (get_user_weapon(this) != CSW_KNIFE)
return FMRES_IGNORED;
forward_return(FMV_CELL, false);
return FMRES_OVERRIDE;
}
public CBasePlayer_UpdateData_Post(this, iSendWeapons, hClientData)
{
if (!is_user_alive(this))
return;
static pevWeapon, Float:flLastEventCheck, Float:flGameTime;
pevWeapon = get_member(this, m_pActiveItem);
if (!is_entity(pevWeapon))
return;
if (get_member(pevWeapon, m_iId) != WEAPON_KNIFE)
return;
flGameTime = get_gametime();
flLastEventCheck = get_member(pevWeapon, m_flLastEventCheck);
if (!flLastEventCheck)
{
set_cd(hClientData, CD_flNextAttack, 2.0);
set_cd(hClientData, CD_WeaponAnim, WEAPON_IDLE);
}
else if (flLastEventCheck <= flGameTime)
{
ExecuteHamB(Ham_CS_Weapon_SendWeaponAnim, pevWeapon, WEAPON_DRAW, false);
set_member(pevWeapon, m_flLastEventCheck, 0.0);
}
}
public CKnife_Deploy_Post(this)
{
set_entvar(this, var_body, 1);
ExecuteHamB(Ham_CS_Weapon_SendWeaponAnim, this, WEAPON_IDLE, false);
set_member(this, m_flLastEventCheck, get_gametime() + 0.04);
}