new const ITEM_NAME[] = "Item PWR AK47"
new const ALIAS_CMD[] = "ak_gold"
new const V_MODEL[] = "models/custom/v_ak47.mdl"
new g_iMaxPlayers, g_bActiveItem, g_iViewModel
new g_iCustomWeaponId
new g_iWeaponModel
new HamHook:g_hResetSpeed
public plugin_precache()
{
PrecacheModel(V_MODEL)
g_iViewModel = AllocString(V_MODEL)
PrecacheModel(P_MODEL)
g_iWeaponModel = AllocString(P_MODEL)
PrecacheModel(W_MODEL)
}
public plugin_init()
{
register_plugin(ITEM_NAME, VERSION, "Vaqtincha")
if(!vip_environment_loaded() || !IsAllowedMap())
{
pause("ad")
return
}
RegisterCustomItem(ITEM_NAME[5], ALIAS_CMD, "BuyCustomWeapon", WEAPON_COST, TEAM_ALL)
g_iCustomWeaponId = random_num(START_IMPULSE, FINITE_IMPULSE)
RegisterHam(Ham_TakeDamage, "player", "TakeDamage_Pre", false)
DisableHamForward(g_hResetSpeed = RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "ResetMaxSpeed_Pre", false))
RegisterHam(Ham_Item_Deploy, g_szWeaponName[WEAPON_ID], "ItemDeploy_Post", true)
RegisterHam(Ham_Item_Holster, g_szWeaponName[WEAPON_ID], "ItemHolster_Post", true)
g_iMaxPlayers = get_maxplayers()
}
public BuyCustomWeapon(id)
{
if(UserHasCustomWeapon(id, WEAPON_ID, g_iCustomWeaponId))
{
client_print(id, print_center, "#Cstrike_Already_Own_Weapon")
return PLUGIN_HANDLED
}
DoDropWeapon(id, WEAPON_ID)
GiveCustomWeapon(id, WEAPON_ID, g_iCustomWeaponId, WEAPON_AMMO)
GiveCustomWeapon(id, WEAPON_ID, g_iCustomWeaponId, g_iMaxBPAmmo[WEAPON_ID])
return BUY_SUCCESS
}
public ItemDeploy_Post(wEnt)
{
if(wEnt <=0 || GetCustomWeapon(wEnt) != g_iCustomWeaponId)
{
return HAM_IGNORED
}
new id = get_weapon_owner(wEnt)
if(IsPlayer(id))
{
set_pev(id, pev_viewmodel, g_iViewModel)
set_pev(id, pev_weaponmodel, g_iWeaponModel)
EnableHamForward(g_hResetSpeed)
SetItemActive(id)
}
return HAM_IGNORED
}
public ItemHolster_Post(wEnt)
{
if(wEnt <=0 || GetCustomWeapon(wEnt) != g_iCustomWeaponId)
{
return HAM_IGNORED
}
ClearItemActive(get_weapon_owner(wEnt))
DisableHamForward(g_hResetSpeed)
return HAM_IGNORED
}
public ResetMaxSpeed_Pre(id)
{
if(IsItemActive(id))
{
set_pev(id, pev_maxspeed, WEAPON_SPEED.0)
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
public SetWeaponWorldModel(iEnt, wEnt, iImpulse, iOwner, const szModel[])
{
if(equal(szModel[7], g_szWorldModel[WEAPON_ID]) && iImpulse == g_iCustomWeaponId)
{
SetModel(iEnt, W_MODEL)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public TakeDamage_Pre(Victim, Inflictor, Attacker, Float:flDamage, DamageBits)
{
if(!IsPlayer(Attacker) || ~DamageBits & DMG_BULLET)
{
return HAM_IGNORED
}
if(Attacker == Inflictor && IsItemActive(Attacker))
{
SetHamParamFloat(4, flDamage * WEAPON_DAMAGE)
return HAM_HANDLED
}
return HAM_IGNORED
}