Code:
dbgmsg(const fmt[], any:...) {
static dbgmsg_output[1024];
vformat(dbgmsg_output, charsmax(dbgmsg_output), fmt, 2);
new hFile = fopen("mydebugfile.txt", "a");
fprintf(hFile, "%s^n", dbgmsg_output);
fclose(hFile);
}
Code:
public fw_updateclientdata_post(Player, SendWeapons, CD_Handle)
{
if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_KNIFE) || !g_knife_snake[Player])
return FMRES_IGNORED
dbgmsg("1");
set_cd(CD_Handle, CD_flNextAttack, halflife_time() + 0.001 );
dbgmsg("2");
return FMRES_HANDLED
}
public give_snake(id)
{
if(!is_user_alive(id) || zp_get_user_zombie(id) )
return FMRES_IGNORED;
g_knife_snake[id] = true
g_anim[id] = 0
new owner = pev( id, pev_owner )
if(get_user_weapon(id) == CSW_KNIFE)
{
dbgmsg("3");
set_pev(id, pev_viewmodel2, snake_v_model)
dbgmsg("4");
set_pev(id, pev_weaponmodel2, snake_p_model)
dbgmsg("5");
UTIL_PlayWeaponAnimation(id, 3)
dbgmsg("6");
set_pdata_float(owner, m_flNextAttack, SPEED_ATK_DRAW)
dbgmsg("7");
} else {
dbgmsg("8");
engclient_cmd(id, "weapon_knife")
dbgmsg("9");
}
engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)
dbgmsg("10");
return PLUGIN_HANDLED;
}
Code:
public fw_updateclientdata_post(Player, SendWeapons, CD_Handle)
{
if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_KNIFE) || !g_knife_snake[Player])
return FMRES_IGNORED
dbgmsg("fw_updateclientdata_post(%d, %d, %d) : set_cd(%d, NextAttack, %f) : pre", Player, SendWeapons, CD_Handle, CD_Handle, halflife_time() + 0.001);
set_cd(CD_Handle, CD_flNextAttack, halflife_time() + 0.001 );
dbgmsg("fw_updateclientdata_post() : set_cd() : post");
return FMRES_HANDLED
}
public give_snake(id)
{
if(!is_user_alive(id) || zp_get_user_zombie(id) )
return FMRES_IGNORED;
g_knife_snake[id] = true
g_anim[id] = 0
new owner = pev( id, pev_owner )
if(get_user_weapon(id) == CSW_KNIFE)
{
dbgmsg("give_snake(%d) : set_pev(%d, viewmodel2, %s) : pre", id, id, snake_v_model);
set_pev(id, pev_viewmodel2, snake_v_model)
dbgmsg("give_snake() : set_pev(,viewmodel2,) : post");
dbgmsg("give_snake(%d) : set_pev(%d, weaponmodel2, %s) : pre", id, id, snake_p_model);
set_pev(id, pev_weaponmodel2, snake_p_model)
dbgmsg("give_snake() : set_pev(,weaponmodel2,) : post");
dbgmsg("give_snake(%d) : UTIL_PlayWeaponAnimation(%d, 3) : pre", id, id);
UTIL_PlayWeaponAnimation(id, 3)
dbgmsg("give_snake() : UTIL_PlayWeaponAnimation() : post");
dbgmsg("give_snake(%d) : set_pdata_float(%d, m_flNextAttack, %f) : pre", id, owner, SPEED_ATK_DRAW);
set_pdata_float(owner, m_flNextAttack, SPEED_ATK_DRAW)
dbgmsg("give_snake() : set_pdata_float() : post");
} else {
dbgmsg("give_snake(%d) : engclient_cmd(%d, ^"weapon_knife^") : pre", id, id);
engclient_cmd(id, "weapon_knife")
dbgmsg("give_snake() : engclient_cmd() : post");
}
dbgmsg("give_snake(%d) : engfunc(EmitSound, %d, CHAN_BODY, %s, 1.0, ATTN_NORM, 0, PITCH_NORM) : pre", id, id, g_sound_knife);
engfunc(EngFunc_EmitSound, id, CHAN_BODY, g_sound_knife, 1.0, ATTN_NORM, 0, PITCH_NORM)
dbgmsg("give_snake() : engfunc(EmitSound) : pre");
return PLUGIN_HANDLED;
}
Tested it now, made some small changes.
If the last message you see is "fw_updateclientdata_post(X, X, X) : set_cd(X, NextAttack, X.X) : pre" or "1" you know that it crashed or failed at set_cd().