#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#include <zombieplague>
 
const OFFSET_ACTIVE_ITEM = 373
const OFFSET_WEAPONOWNER = 41
const OFFSET_LINUX = 5
const OFFSET_LINUX_WEAPONS = 4
 
new mp5tiger_V_MODEL[64] = "models/swat/v_mp5t.mdl"
new mp5tiger_P_MODEL[64] = "models/swat/p_mp5t.mdl"
new mp5tiger_W_MODEL[64] = "models/swat/w_mp5t.mdl"
 
new const mp5tiger_name[] = "weapon_mp5tiger_lars"
new const mp5tiger_spr[][] = 
{ 
	"sprites/swat/640hud46.spr", 
	"sprites/swat/640hud7.spr"
}
 
new gmsgWeaponList
 
new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
			"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
			"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
			"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
			"weapon_ak47", "weapon_knife", "weapon_p90" }
 
public plugin_init()
{
	register_plugin("[ZP] MP5 Tiger", "1.0", "LARS-BLOODLIKER")
	for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
	if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
	register_forward(FM_SetModel, "fw_SetModel")
	RegisterHam(Ham_Item_AddToPlayer, "weapon_mp5navy", "fw_mp5tiger_AddToPlayer")
 
	gmsgWeaponList = get_user_msgid("WeaponList")
	register_clcmd(mp5tiger_name, "command_mp5tiger")
}
 
public plugin_precache()
{
	precache_model(mp5tiger_V_MODEL)
	precache_model(mp5tiger_P_MODEL)
	precache_model(mp5tiger_W_MODEL)
	new sFile[64]
	formatex(sFile, charsmax(sFile), "sprites/%s.txt", mp5tiger_name)
 
	for(new i = 0; i < sizeof(mp5tiger_spr); i++)
	{
		precache_generic(mp5tiger_spr[i])
	}
}
 
public command_mp5tiger(Player)
{
	engclient_cmd(Player, "weapon_mp5navy")
	return PLUGIN_HANDLED
}
 
public fw_SetModel(entity, model[])
{
	if(!is_valid_ent(entity))
		return FMRES_IGNORED
 
	static szClassName[33]
	entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
 
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED
 
	if(equal(model, "models/w_mp5.mdl"))
	{		
		entity_set_model(entity, mp5tiger_W_MODEL)
 
		return FMRES_SUPERCEDE
	}
	return FMRES_IGNORED
}
 
public fw_mp5tiger_AddToPlayer(id)
{
	if(!is_user_connected(id))
		return HAM_IGNORED
 
	message_begin(MSG_ONE, gmsgWeaponList, _, id)
	write_string(mp5tiger_name)
	write_byte(10)
	write_byte(120)
	write_byte(-1)
	write_byte(-1)
	write_byte(0)
	write_byte(7)
	write_byte(CSW_MP5NAVY)
	message_end()
 
	return HAM_IGNORED
}
 
public fw_Item_Deploy_Post(weapon_ent)
{
	static owner
	owner = fm_cs_get_weapon_ent_owner(weapon_ent)
 
	static weaponid
	weaponid = cs_get_weapon_id(weapon_ent)
 
	replace_weapon_models(owner, weaponid)
}
 
replace_weapon_models(id, weaponid)
{
	switch (weaponid)
	{
		case CSW_MP5NAVY:
		{
			if (zp_get_user_zombie(id) || zp_get_user_survivor(id))
				return
 
			set_pev(id, pev_viewmodel2, mp5tiger_V_MODEL)
			set_pev(id, pev_weaponmodel2, mp5tiger_P_MODEL)
 
			message_begin(MSG_ONE, gmsgWeaponList, _, id)
			write_string(mp5tiger_name)
			write_byte(10)
			write_byte(120)
			write_byte(-1)
			write_byte(-1)
			write_byte(0)
			write_byte(7)
			write_byte(CSW_MP5NAVY)
			message_end()
		}
	}
}
 
stock fm_cs_get_current_weapon_ent(id)
{
	return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
}
 
stock fm_cs_get_weapon_ent_owner(ent)
{
	return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
}