here try this ...
PHP Code:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#define PLUGIN "Freeze"
#define VERSION "1.0"
#define AUTHOR "Natsheh"
new user_frozen;
#define set_user_frozen(%1) (user_frozen |= (1<<(%1-1)))
#define remove_user_frozen(%1) (user_frozen &= ~(1<<(%1-1)))
#define check_user_frozen(%1) (user_frozen & (1<<(%1-1)))
#define m_flNextPrimaryAttack 46
#define m_flNextSecondaryAttack 47
#define m_pPlayer 41
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
for(new i = CSW_P228, sWpnname[32]; i <= CSW_P90; i++)
{
get_weaponname(i, sWpnname, charsmax(sWpnname))
if(strlen(sWpnname) <= 7) continue;
RegisterHam(Ham_Item_Drop, sWpnname, "fw_weapon_drop_pre")
RegisterHam(Ham_CS_Item_CanDrop, sWpnname, "fw_weapon_drop_pre")
RegisterHam(Ham_Item_Deploy, sWpnname, "fw_weapon_deploy_post",1)
RegisterHam(Ham_CS_Item_GetMaxSpeed, sWpnname, "fw_weapon_maxspeed_pre")
}
register_clcmd("say /freeze", "clcmd_freeze")
}
public clcmd_freeze(id)
{
freeze_player(id, check_user_frozen(id) ? false:true);
client_print(id, print_center, "* %sFrozen *", (check_user_frozen(id) ? "":"un"))
}
public fw_weapon_maxspeed_pre(const wpn)
{
if(check_user_frozen(get_pdata_cbase(wpn,m_pPlayer,4)))
{
SetHamReturnFloat(-1.0)
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
}
public fw_weapon_drop_pre(const wpn)
{
if(check_user_frozen(get_pdata_cbase(wpn,m_pPlayer,4)))
{
set_pdata_float(wpn,m_flNextPrimaryAttack,0.0,4)
set_pdata_float(wpn,m_flNextSecondaryAttack,0.0,4)
}
}
public fw_weapon_deploy_post(const wpn)
{
if(check_user_frozen(get_pdata_cbase(wpn,m_pPlayer,4)))
{
static Float:gtime; gtime = get_gametime();
set_pdata_float(wpn,m_flNextPrimaryAttack,gtime + 999.0,4)
set_pdata_float(wpn,m_flNextSecondaryAttack,gtime + 999.0,4)
}
}
freeze_player(id, bool:bFreeze=false)
{
if(!bFreeze)
{
remove_user_frozen(id)
new wpns[32], wnum, sWpnname[24], wpn;
get_user_weapons(id, wpns, wnum)
for(new i = 0; i < wnum; i++)
{
get_weaponname(wpns[i], sWpnname, charsmax(sWpnname))
if((wpn = fm_find_ent_byowner(id, sWpnname)) > -1)
{
set_pdata_float(wpn,m_flNextPrimaryAttack,0.0,4)
set_pdata_float(wpn,m_flNextSecondaryAttack,0.0,4)
}
}
set_pev(id, pev_maxspeed, 250.0);
}
else
{
set_user_frozen(id);
new sWpnname[24], wpn;
get_weaponname(get_user_weapon(id), sWpnname, charsmax(sWpnname))
if((wpn = fm_find_ent_byowner(id, sWpnname)) > -1) ExecuteHamB(Ham_Item_Deploy, wpn);
set_pev(id, pev_maxspeed, -1.0)
}
}
stock fm_find_ent_byowner(id, const wpnname[])
{
new ent = -1;
while ( ((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", wpnname)) > 0) && pev(ent, pev_owner) != id) { }
return (pev_valid(ent) && pev(ent,pev_owner) == id) ? ent:-1;
}