Можно вот так:
Code
public msg_curweapon(msgid, dest, id)
{
if(!is_player_alive(id))
return PLUGIN_CONTINUE
static weapon
weapon = get_msg_arg_int(2)
if(blabla[id])
{
if(weapon != CSW_KNIFE && !task_exists(TASKID_STRIPNGIVE + id))
set_task(0.2, "task_stripngive", TASKID_STRIPNGIVE + id)
return PLUGIN_CONTINUE
}
switch(weapon)
{
case CSW_C4, CSW_KNIFE, CSW_HEGRENADE, CSW_SMOKEGRENADE, CSW_FLASHBANG: return PLUGIN_CONTINUE
}
static mode
mode = get_pcvar_num(cvar_ammo)
switch(mode)
{
case 1:
{
if(!weapon) return PLUGIN_CONTINUE
static max_clip, ammo
max_clip = maxclip(weapon)
ammo = cs_get_user_bpammo(id, weapon)
if(ammo < max_clip) cs_set_user_bpammo(id, weapon, 200)
}
case 2:
{
if(!weapon) return PLUGIN_CONTINUE
static clip, max_clip
clip = get_msg_arg_int(3)
max_clip = maxclip(weapon)
if(clip != max_clip) set_msg_arg_int(3, ARG_BYTE, max_clip)
if(clip < 1)
{
static weaponname[32], ent
get_weaponname(weapon, weaponname, 31)
ent = -1
while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", weaponname)) != 0)
{
if(id == pev(ent, pev_owner))
{
cs_set_weapon_ammo(ent , max_clip)
break
}
}
}
}
}
return PLUGIN_CONTINUE
}
public task_stripngive(taskid)
{
static id
id = taskid - TASKID_STRIPNGIVE
fm_strip_user_weapons(id)
fm_give_item(id, "weapon_knife")
set_pev(id, pev_weaponmodelblalbalba, "")
#if USE_KNIFE_MODEL
set_pev(id, pev_viewmodelblablabla, g_blablabla)
#endif
}