/* Plugin generated by AMXX-Studio */
 
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
 
#define PLUGIN "Furien Mod"
#define VERSION "64.2.6b"
#define AUTHOR "Kia"
 
// ===============================================================================
// 	Variables
// ===============================================================================
 
/* Defines */
 
// Sets maximum of items for Furien Shop
#define FURIEN_SHOP_MAX 	8
 
// Sets maximum of items for CT Shop
#define CT_SHOP_MAX 		9
 
// Sets maximum of items for CT Gun Meun
#define CT_WEAPON_MAX 		5
 
// Delay after spawn to give stuff
#define EQUIP_DELAY 		0.1
 
// Maximum Health
#define MAX_HP 			200
 
#define TASK_ID_SWAPTEAMS 2000
#define XO_WEAPON 4
#define m_pPlayer 41
#define XO_PLAYER	5
#define m_pActiveItem	373
#define DO_NOT_CHANGE	2
 
/* Enums */
 
enum _:ShopItems
{
	ItemName[64], ItemCost[ 64 ], ItemPlugin[64],  ItemFunction[ 64 ], ItemMax[64], ItemReset[64]
}
 
enum _:GunItems
{
	ItemName[64], ItemPri[64], ItemPriConst[64], ItemSec[64], ItemSecConst[64]
}
 
/* Entitys */
 
new TaskEnt
 
/* Hamsandwich */
 
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame 
 
/* Booleans */
 
new bool:g_bHasAcceptedSettings[33]
new bool:g_bHasWeapon[33]
new bool:g_bWantsLowGrav[33]
new bool:g_bHasSuperKnife[33]
new bool:g_bHasNoFlash[33]
 
/* Integer */
 
new g_iMaxPlayers
 
new g_iItemIndex_T[33][FURIEN_SHOP_MAX]
new g_iItemIndex_CT[33][CT_SHOP_MAX]
 
new g_iHP[33]
 
/* CVars */
 
new cvar_gm, cvar_hpsave
 
/* CVars - Furien */
 
new cvar_t_starthe, cvar_t_startflash, cvar_t_startsmoke
new cvar_t_grav, cvar_t_speed, cvar_t_fs
new cvar_t_psf
 
/* CVars - CTs */
 
new cvar_ct_starthe, cvar_ct_startflash, cvar_ct_startsmoke
new cvar_ct_grav, cvar_ct_fs
new cvar_ct_ammo_pri, cvar_ct_ammo_sec
 
/* Constants - Shop */
 
new const g_mFurienItems[FURIEN_SHOP_MAX][ShopItems] = {
	{"Superknife", 		16000, 	"CORE", 		"shop_t_givesk", 	1,	DO_NOT_CHANGE}, // "Itemname", COST, "CORE / Pluginname", "Function", "Maximum", "Reset
	{"Deagle (14 Gojoval)", 10000,  "CORE", 			"shop_t_givedgl",	1,	2}, // 0 : No Reset ; 1 : Round Reset ; 2 : Death Reset
	{"50 HP", 		4000, 	"CORE", 		"shop_t_givehp",	2,	1},
	{"75 AP",		2000,	"CORE", 		"shop_t_giveap",	2,	1},
	{"1 HE Granat",	1000,	"CORE", 		"shop_givehe",		2,	1},
	{"1 Vakito Granat",	1000,	"CORE", 		"shop_giveflash",	2,	1},
	{"1 Fust Granat",	1000,	"CORE", 		"shop_givesmoke",	1,	1},
	{"Nincs vakulas",		500,	"CORE", 		"shop_givenf",		1,	DO_NOT_CHANGE}
}
 
new const g_mCTItems[CT_SHOP_MAX][ShopItems] = {
	{"Defuse Kit",		300,	"CORE", 			"shop_ct_givedefkit",		1,	2},
	{"Para (200 Gojoval)",	16000,	"CORE", 			"shop_ct_givepara",		1,	1},
	{"50 HP",		4000,	"CORE", 			"shop_ct_givehp",		2,	1},
	{"75 AP",		3500,	"CORE", 			"shop_ct_giveap",		1,	1},
	{"1 HE Granat",		2000,	"CORE", 			"shop_givehe",			1,	1},
	{"1 Vakito Granat",	1000,	"CORE", 			"shop_giveflash",		1,	1},
	{"1 Fust Granat",	1000,	"CORE", 			"shop_givesmoke",		1,	1},
	{"Nincs vakulas",	4000,	"CORE", 			"shop_givenf",			1,	DO_NOT_CHANGE},
	{"Superdeagle",		16000,	"kfm_extra_sdgl.amxx", 		"zp_extra_item_selected",	1,	1}
}
 
/* Constants - Weapons */
 
new const g_mCTWeapons[CT_WEAPON_MAX][GunItems] = {
	{"AK47 + Deagle", 	"weapon_ak47",		CSW_AK47,		"weapon_deagle",	CSW_DEAGLE},
	{"M4A1 + Deagle", 	"weapon_m4a1", 		CSW_M4A1,		"weapon_deagle",	CSW_DEAGLE},
	{"Famas + Deagle", 	"weapon_famas", 	CSW_FAMAS,		"weapon_deagle",	CSW_DEAGLE},
	{"MP5 + Deagle", 	"weapon_mp5navy", 	CSW_MP5NAVY, 		"weapon_deagle",	CSW_DEAGLE},
	{"XM1014 + Deagle", 	"weapon_xm1014", 	CSW_XM1014,		"weapon_deagle",	CSW_DEAGLE}
}
 
 
/* Constants */
 
const SWAP_PER_INTERVAL = 5
const Float:SWAP_INTERVAL = 0.5
 
const fPainShock = 108
 
new const models[][] =
{
	"models/w_backpack.mdl",
	"models/w_flashbang.mdl",
	"models/w_hegrenade.mdl",
	"models/w_smokegrenade.mdl"
}
 
/* Misc */
 
new g_msgScreenFade
 
/* PreCache */
 
new const sz_SuperKnife_V_Model[] = "models/kfm/v_superknife.mdl"
 
// ===============================================================================
// 	plugin_precache - Files that will be downloaded
// ===============================================================================
 
public plugin_precache()
{
	precache_model(sz_SuperKnife_V_Model)
}
// ===============================================================================
// 	plugin_init - Do not modify this unless you know what you're doing
// ===============================================================================
 
public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
 
	/* CVars */
 
	register_cvar("kias_furien", VERSION, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_EXTDLL)
	cvar_gm			= register_cvar("kfm_godend",		"1")
	cvar_hpsave		= register_cvar("kfm_savehp",		"1")
 
	/* CVars - Furien */
 
	cvar_t_starthe		= register_cvar("kfm_t_starthe", 	"1")
	cvar_t_startflash	= register_cvar("kfm_t_startflash", 	"2")
	cvar_t_startsmoke 	= register_cvar("kfm_t_startsmoke", 	"1")
 
	cvar_t_grav		= register_cvar("kfm_t_grav",		"0.39")
	cvar_t_speed		= register_cvar("kfm_t_speed",		"565")
	cvar_t_fs		= register_cvar("kfm_t_fs",		"1")
 
	cvar_t_psf		= register_cvar("kfm_t_psf",		"1")
 
	/* CVars - CTs */
 
	cvar_ct_starthe		= register_cvar("kfm_ct_starthe", 	"0")
	cvar_ct_startflash	= register_cvar("kfm_ct_startflash", 	"0")
	cvar_ct_startsmoke 	= register_cvar("kfm_ct_startsmoke", 	"1")
 
	cvar_ct_grav		= register_cvar("kfm_ct_grav",		"1.0")
	cvar_ct_fs		= register_cvar("kfm_ct_fs",		"0")
 
	cvar_ct_ammo_pri	= register_cvar("kfm_ct_ammo_primary",	"200")
	cvar_ct_ammo_sec	= register_cvar("kfm_ct_ammo_secondary", "150")
 
	/* Commands */
 
	register_clcmd("say /guns", 		"cmd_Guns")
	register_clcmd("say_team /guns", 	"cmd_Guns")
	register_clcmd("say guns", 		"cmd_Guns")
	register_clcmd("say_team guns", 	"cmd_Guns")
	register_clcmd("guns",			"cmd_Guns")
 
	register_clcmd("say /gravity", 		"cmd_Gravity")
	register_clcmd("say_team /gravity", 	"cmd_Gravity")
	register_clcmd("say gravity", 		"cmd_Gravity")
	register_clcmd("say_team gravity", 	"cmd_Gravity")
	register_clcmd("gravity",		"cmd_Gravity")
 
	register_clcmd("say /shop", 		"cmd_Shop")
	register_clcmd("say_team /shop", 	"cmd_Shop")
	register_clcmd("say shop", 		"cmd_Shop")
	register_clcmd("say_team shop", 	"cmd_Shop")
	register_clcmd("shop",			"cmd_Shop")
 
	/* Events */
 
	register_event("SendAudio", "Event_CTWin", "a", "2&%!MRAD_ctwin" ) 
	register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
	register_event("ScreenFade", "Event_Flashed", "be", "4=255", "5=255", "6=255", "7>199")
	register_event("DeathMsg", "Event_DeathMsg", "a")
	register_event("WeapPickup", "Event_WeaponPickup", "b")
 
	/* Logevents */
 
	register_logevent("LogEvent_RoundEnd", 2, "1=Round_End")  
 
	/* Hamsandwich */
 
	RegisterHam(Ham_Spawn, "player", "func_HamSpawn", 1)
	RegisterHam(Ham_TakeDamage, "player", "func_TakeDamage")
	RegisterHam(Ham_Item_Deploy, "weapon_knife", "func_HamTookKnife", true)
 
	/* Forwards */
 
	register_forward(FM_Think, "fw_Think")
	register_forward(FM_Touch, "fw_Touch")
 
	/* Misc */
 
	TaskEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))	
	set_pev(TaskEnt, pev_classname, "speedometer_think")
	set_pev(TaskEnt, pev_nextthink, get_gametime() + 1.01)
 
	g_msgScreenFade = get_user_msgid("ScreenFade")
	g_iMaxPlayers = get_maxplayers()
}
 
// ===============================================================================
// 	Client Connect
// ===============================================================================
 
public client_putinserver(id)
{
	g_bHasAcceptedSettings[id] = false
	g_bHasWeapon[id] = false
	g_bHasSuperKnife[id] = false
	g_bHasNoFlash[id] = false
	g_bWantsLowGrav[id] = true
 
	g_iItemIndex_CT[id][0] = false
	g_iItemIndex_T[id][0] = false
	g_iHP[id] = 100
}
 
// ===============================================================================
// 	Client Disconnect
// ===============================================================================
 
public client_disconnect(id)
{
	g_bHasAcceptedSettings[id] = false
	g_bHasWeapon[id] = false
	g_bHasSuperKnife[id] = false
	g_bHasNoFlash[id] = false
	g_bWantsLowGrav[id] = true
 
	g_iItemIndex_CT[id][0] = false
	g_iItemIndex_T[id][0] = false
	g_iHP[id] = 100
}
 
// ===============================================================================
// 	say /guns
// ===============================================================================
 
public cmd_Guns(id)
{
	if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && !g_bHasWeapon[id])
		func_OpenGunMenu(id)
}
 
// ===============================================================================
// 	say /gravity
// ===============================================================================
 
public cmd_Gravity(id)
{
	g_bWantsLowGrav[id] = g_bWantsLowGrav[id] ? false : true
	client_print(id, print_chat, "[%s] Low-Gravity is now %s.", PLUGIN, g_bWantsLowGrav[id] == true ? "enabled" : "disabled")
 
	if(cs_get_user_team(id) == CS_TEAM_T)
		set_user_gravity(id, g_bWantsLowGrav[id] ? get_pcvar_float(cvar_t_grav) : 1.0)
}
 
// ===============================================================================
// 	say /shop
// ===============================================================================
 
public cmd_Shop(id)
{
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
 
	switch(cs_get_user_team(id))
	{
		case CS_TEAM_T  : func_OpenTShop(id)
		case CS_TEAM_CT : func_OpenCTShop(id)
	}
 
	return PLUGIN_HANDLED
}
 
// ===============================================================================
// 	func_OpenTShop - Shop for Ts
// ===============================================================================
 
public func_OpenTShop(id)
{
 
	static szMenuTitle[128]
	new szItemTitle[128]
	new iAccess
 
	formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Furien Bolt")
 
	new menu = menu_create(szMenuTitle, "func_OpenTShop_handler")
 
	for( new i = 0; i < sizeof(g_mFurienItems); i++ ) 
	{
		formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mFurienItems[i][ItemName], g_mFurienItems[i][ItemCost])
 
		if(cs_get_user_money(id) >= g_mFurienItems[i][ItemCost] && g_iItemIndex_T[id][i] < g_mFurienItems[i][ItemMax] )
			iAccess = 0
		else
			iAccess = 1<<31
 
		menu_additem(menu, szItemTitle, _, iAccess)
	}
 
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	menu_display( id, menu, 0 );
	return PLUGIN_HANDLED;
}
 
public func_OpenTShop_handler(id, menu, item)
{
	if( item == MENU_EXIT || cs_get_user_team(id) != CS_TEAM_T || !is_user_alive(id)) 
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
 
	new szPlugin[64]
 
	if(equali(g_mFurienItems[item][ItemPlugin], "CORE"))
		formatex(szPlugin, charsmax(szPlugin), "")
	else
		formatex(szPlugin, charsmax(szPlugin), g_mFurienItems[item][ItemPlugin])
 
	if( callfunc_begin(g_mFurienItems[item][ItemFunction], szPlugin) == 1 ) 
	{
		callfunc_push_int(id)
		callfunc_end()
 
		Reduce(id, g_mFurienItems[item][ItemCost])			
		g_iItemIndex_T[id][item]++
	}
 
 
	return PLUGIN_HANDLED
}
 
// ===============================================================================
// 	Item Handlers for Furien Shop
// ===============================================================================
 
public shop_t_givesk(id)
{
	g_bHasSuperKnife[id] = true
	engclient_cmd(id, "weapon_knife")
	ExecuteHamB(Ham_Item_Deploy, get_pdata_cbase(id, m_pActiveItem, XO_PLAYER))
}
 
public shop_t_givedgl(id)
{
	give_item(id, "weapon_deagle")
	cs_set_user_bpammo(id, CSW_DEAGLE, 7)
	engclient_cmd(id, "weapon_deagle")
}
 
public shop_t_givehp(id)
{
	set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
}
 
public shop_t_giveap(id)
	set_user_armor(id, get_user_armor(id) + 75)
 
// ===============================================================================
// 	General Item Handlers
// ===============================================================================
 
 
public shop_givehe(id)
{
	if(cs_get_user_bpammo(id, CSW_HEGRENADE) < 1)
	{
		give_item(id, "weapon_hegrenade")
		return PLUGIN_HANDLED
	}
 
	cs_set_user_bpammo(id,CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + 1)
	return PLUGIN_HANDLED
}
 
public shop_giveflash(id)
{
	if(cs_get_user_bpammo(id, CSW_FLASHBANG) < 1)
	{
		give_item(id, "weapon_flashbang")
		return PLUGIN_HANDLED
	}
 
	cs_set_user_bpammo(id,CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG) + 1)	
	return PLUGIN_HANDLED
}
 
public shop_givesmoke(id)
{
	if(cs_get_user_bpammo(id, CSW_SMOKEGRENADE) < 1)
	{
		give_item(id, "weapon_smokegrenade")
		return PLUGIN_HANDLED
	}
 
	cs_set_user_bpammo(id,CSW_SMOKEGRENADE, cs_get_user_bpammo(id, CSW_SMOKEGRENADE) + 1)	
	return PLUGIN_HANDLED
}
 
public shop_givenf(id)
	g_bHasNoFlash[id] = true
 
// ===============================================================================
// 	func_OpenCTShop - Shop for CTs
// ===============================================================================
 
public func_OpenCTShop(id)
{
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
 
	static szMenuTitle[64]
	new szItemTitle[64]
	new iAccess
 
	formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Anti-Furien Bolt")
 
	new menu = menu_create(szMenuTitle, "func_OpenCTShop_handler")
 
	for( new i = 0; i < sizeof(g_mCTItems); i++ ) 
	{
		formatex(szItemTitle, charsmax(szItemTitle), "%s - \y$%i", g_mCTItems[i][ItemName], g_mCTItems[i][ItemCost])
 
		if(cs_get_user_money(id) >= g_mCTItems[i][ItemCost] && g_iItemIndex_CT[id][i] < g_mCTItems[i][ItemMax] )
			iAccess = 0
		else
			iAccess = 1<<31
 
		menu_additem(menu, szItemTitle, _, iAccess)
	}
 
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	menu_display( id, menu, 0 );
	return PLUGIN_HANDLED;
}
 
public func_OpenCTShop_handler(id, menu, item)
{
	if( item == MENU_EXIT ||  cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id) ) 
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
 
	new szPlugin[64]
 
	if(equali(g_mCTItems[item][ItemPlugin], "CORE"))
		formatex(szPlugin, charsmax(szPlugin), "")
	else
		formatex(szPlugin, charsmax(szPlugin), g_mCTItems[item][ItemPlugin])
 
	if( callfunc_begin(g_mCTItems[item][ItemFunction], szPlugin) == 1 ) 
	{
		callfunc_push_int(id)
		callfunc_end()
 
		Reduce(id, g_mCTItems[item][ItemCost])
		g_iItemIndex_CT[id][item]++
	}
 
	return PLUGIN_HANDLED
}
 
// ===============================================================================
// 	Item Handlers for CT Shop
// ===============================================================================
 
public shop_ct_givedefkit(id)
	cs_set_user_defuse(id, 1)
 
public shop_ct_givepara(id)
{
	give_item(id, "weapon_m249")
	cs_set_user_bpammo(id, CSW_M249, 100)
}
 
public shop_ct_givehp(id)
	set_user_health(id, min(get_user_health(id) + 50, MAX_HP))  
 
public shop_ct_giveap(id)
	set_user_armor(id, get_user_armor(id) + 75)
 
 
// ===============================================================================
// 	func_OpenGunMenu - Gun Menu for CTs
// ===============================================================================
 
public func_OpenGunMenu(id)
{
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
 
	static szMenuTitle[128]
	new szItemTitle[128]
 
	formatex(szMenuTitle, charsmax(szMenuTitle), "Furien V64 - Gun Menu")
 
	new menu = menu_create(szMenuTitle, "func_OpenGunMenu_handler")
 
	for( new i = 0; i < sizeof(g_mCTWeapons); i++ ) 
	{
		formatex(szItemTitle, charsmax(szItemTitle), "%s", g_mCTWeapons[i][ItemName])
 
		menu_additem(menu, szItemTitle, _, 0)
	}
 
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	menu_display( id, menu, 0 );
	return PLUGIN_HANDLED;
}
 
public func_OpenGunMenu_handler(id, menu, item)
{
	if(cs_get_user_team(id) != CS_TEAM_CT || !is_user_alive(id))
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
 
	give_item(id, g_mCTWeapons[item][ItemPri])
	cs_set_user_bpammo(id, g_mCTWeapons[item][ItemPriConst], get_pcvar_num(cvar_ct_ammo_pri))
 
	give_item(id, g_mCTWeapons[item][ItemSec])
	cs_set_user_bpammo(id, g_mCTWeapons[item][ItemSecConst], get_pcvar_num(cvar_ct_ammo_sec))
 
	g_bHasWeapon[id] = true
	return PLUGIN_HANDLED
}
 
// ===============================================================================
// 	Event - @ CT Win - Credits go to Exolent
// ===============================================================================
 
public Event_CTWin()
{
	static iCount, client;
 
	iCount = 0;
 
	for( client = 0; client <= g_iMaxPlayers; client++ )
	{
		if( is_user_connected( client ) )
		{
			if( iCount >= SWAP_PER_INTERVAL )
			{
				set_task( SWAP_INTERVAL, "Event_CTWin", TASK_ID_SWAPTEAMS );
			}
 
			switch( cs_get_user_team( client ) )
			{
				case CS_TEAM_T:
				{
					cs_set_user_team( client, CS_TEAM_CT, CS_CT_GIGN );
 
					iCount++;
				}
				case CS_TEAM_CT:
				{
					cs_set_user_team( client, CS_TEAM_T, CS_T_LEET );
 
					iCount++;
				}
			}
		}
	}
 
	remove_task(TASK_ID_SWAPTEAMS)
}
 
// ===============================================================================
// 	Event - CurWeapon
// ===============================================================================
 
public Event_CurWeapon(id)
{
	if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
		set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
}
 
// ===============================================================================
// 	Event - Flashed
// ===============================================================================
 
public Event_Flashed(id)
{
	if(g_bHasNoFlash[id])
	{
		message_begin(MSG_ONE, g_msgScreenFade, {0,0,0},id)
		write_short(1)
		write_short(1)
		write_short(1)
		write_byte(0)
		write_byte(0)
		write_byte(0)
		write_byte(255)
		message_end()
	}
 
}
 
// ===============================================================================
// 	Event - DeathMsg
// ===============================================================================
 
public Event_DeathMsg(id)
{
	new iVictim = read_data(2)
 
	for( new i = 0; i < sizeof(g_mCTItems); i++ ) 
	{
		if(g_mCTItems[i][ItemReset] == 2)
			g_iItemIndex_CT[iVictim][i] = 0
	}
 
	for( new i = 0; i < sizeof(g_mFurienItems); i++ ) 
	{
		if(g_mFurienItems[i][ItemReset] == 2)
		{
			g_iItemIndex_T[iVictim][i] = 0
		}
	}
 
	g_bHasSuperKnife[iVictim] = false
	g_bHasNoFlash[iVictim] = false
}
 
// ===============================================================================
// 	Event - Weapon Pickup
// ===============================================================================
 
public Event_WeaponPickup(id, weapon)
{
	if(cs_get_user_team(id) == CS_TEAM_T && get_user_weapon(id) == CSW_C4)
	{
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}
 
// ===============================================================================
// 	LogEvent - Round End
// ===============================================================================
 
public LogEvent_RoundEnd()
{
	new players[32], pnum, tempid
	get_players(players, pnum, "a")
 
	for( new i; i<pnum; i++ ) 
	{
		tempid = players[i]
 
		if(get_pcvar_num(cvar_hpsave) && get_user_health(tempid) > 100)
			g_iHP[tempid] = get_user_health(tempid)
 
		strip_user_weapons(tempid)
		give_item(tempid, "weapon_knife")
 
		if(get_pcvar_num(cvar_gm))
			set_user_godmode(tempid, 1)
	}
}		
 
// ===============================================================================
// 	Hamsandwich - Ham_Spawn
// ===============================================================================
 
public func_HamSpawn(id)
{
	if(is_user_alive(id))
	{
		for( new i = 0; i < sizeof(g_mCTItems); i++ ) 
		{
			if(g_mCTItems[i][ItemReset] == 1)
			{
				g_iItemIndex_CT[id][i] = 0
			}
		}
 
		for( new i = 0; i < sizeof(g_mFurienItems); i++ ) 
		{
			if(g_mFurienItems[i][ItemReset] == 1)
			{
				g_iItemIndex_T[id][i] = 0
			}
		}
 
		if(get_pcvar_num(cvar_hpsave))
		{
			if(g_iHP[id] < 100)
				g_iHP[id] = 100
 
			set_user_health(id, g_iHP[id])
			g_iHP[id] = 100
		}
 
		set_user_godmode(id, 0)
		strip_user_weapons(id)
		give_item(id, "weapon_knife")
 
		if(g_bHasAcceptedSettings[id])
		{
			func_ApplyGameplay(id)
		}
		else
		{
			func_AskForPermission(id)
		}
	}
}
 
// ===============================================================================
// 	Hamsandwich - Take_Damage - Credits go to ConnorMcLeod
// ===============================================================================
 
public func_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
	if (inflictor == attacker && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_KNIFE && g_bHasSuperKnife[attacker])
	{
		SetHamParamFloat(4, damage * 3)
	}
 
	if(get_pcvar_num(cvar_t_psf) && cs_get_user_team(victim) == CS_TEAM_T)
		set_pdata_float(victim, fPainShock, 1.0, 5)
}
 
// ===============================================================================
// 	Hamsandiwch - Item_Deploy - Credits go to ConnorMcLeod
// ===============================================================================
 
public func_HamTookKnife(iKnife)
{
	new id = get_pdata_cbase(iKnife, m_pPlayer, XO_WEAPON)
 
	if(g_bHasSuperKnife[id])
	{
		entity_set_string( id, EV_SZ_viewmodel, sz_SuperKnife_V_Model)
	}
}
 
// ===============================================================================
// 	Forwards - FM_Think - Credits go to ConnorMcLeod
// ===============================================================================
 
public fw_Think(ent)
{
	if(ent == TaskEnt) 
	{
		SpeedTask()
		set_pev(ent, pev_nextthink,  get_gametime() + 0.1)
	}
}
 
public SpeedTask()
{
	static i, target
	static Float:velocity[3]
	static Float:speed
 
	for(i = 1; i <= g_iMaxPlayers ; i++)
	{
		if(!is_user_connected(i)) continue
 
		target = pev(i, pev_iuser1) == 4 ? pev(i, pev_iuser2) : i
		pev(target, pev_velocity, velocity)
 
		speed = vector_length(velocity)
		if(speed < 5 && get_user_weapon(i) == CSW_KNIFE && get_user_team(i) == 1)
		{
		 	set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,0)  
		}
		else if(speed > 5)
		{
			set_user_rendering(i,kRenderFxNone,0,0,0,kRenderTransAlpha,255)  
		}
	}
}
 
// ===============================================================================
// 	Forwards - FM_Touch
// ===============================================================================
 
public fw_Touch( ent , id )
{
	if (!(1 <= id <= g_iMaxPlayers) || get_user_team(id) == 2 || !pev_valid(ent) || !(pev(ent , pev_flags) & FL_ONGROUND))
		return FMRES_IGNORED;
 
	static szEntModel[32];
	pev(ent , pev_model , szEntModel , 31);
 
	return equal(szEntModel , models[random(sizeof(models))]) ? FMRES_IGNORED : FMRES_SUPERCEDE;
}
 
// ===============================================================================
// 	func_ApplyGameplay - Getting Players Team and selecting function
// ===============================================================================
 
public func_ApplyGameplay(id)
{
	switch(cs_get_user_team(id))
	{
		case CS_TEAM_CT : set_task(EQUIP_DELAY, "func_CTEquip", id)
		case CS_TEAM_T : set_task(EQUIP_DELAY, "func_TEquip", id)
	}
}
 
// ===============================================================================
// 	func_CTEquip - Giving Equipment for CTs
// ===============================================================================
 
public func_CTEquip(id)
{
	if(get_pcvar_num(cvar_ct_starthe) > 0)
	{
		give_item(id, "weapon_hegrenade")
		if(get_pcvar_num(cvar_ct_starthe) > 1)
		{
			cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_ct_starthe))
		}
	}
 
	if(get_pcvar_num(cvar_ct_startflash) > 0)
	{
		give_item(id, "weapon_flashbang")
		if(get_pcvar_num(cvar_ct_startflash) > 1)
		{
			cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_ct_startflash))
		}
	}
 
	if(get_pcvar_num(cvar_ct_startsmoke) > 0)
	{
		give_item(id, "weapon_smokegrenade")
		if(get_pcvar_num(cvar_ct_startsmoke) > 1)
		{
			cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_ct_startsmoke))
		}
	}
 
	set_user_gravity(id, get_pcvar_float(cvar_ct_grav))
	set_user_footsteps(id, get_pcvar_num(cvar_ct_fs))
	ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
	func_OpenGunMenu(id)
}
 
// ===============================================================================
// 	func_TEquip - Giving Equipment for Ts
// ===============================================================================
 
public func_TEquip(id)
{
	if(get_pcvar_num(cvar_t_starthe) > 0)
	{
		give_item(id, "weapon_hegrenade")
		if(get_pcvar_num(cvar_t_starthe) > 1)
		{
			cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(cvar_t_starthe))
		}
	}
 
	if(get_pcvar_num(cvar_t_startflash) > 0)
	{
		give_item(id, "weapon_flashbang")
		if(get_pcvar_num(cvar_t_startflash) > 1)
		{
			cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(cvar_t_startflash))
		}
	}
 
	if(get_pcvar_num(cvar_t_startsmoke) > 0)
	{
		give_item(id, "weapon_smokegrenade")
		if(get_pcvar_num(cvar_t_startsmoke) > 1)
		{
			cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(cvar_t_startsmoke))
		}
	}
 
	if(g_bWantsLowGrav[id])
		set_user_gravity(id, get_pcvar_float(cvar_t_grav))
 
	set_user_footsteps(id, get_pcvar_num(cvar_t_fs))
	set_user_maxspeed(id, get_pcvar_float(cvar_t_speed))
}
 
// ===============================================================================
// 	func_AskForPermission - Asking player to set cl_ values.
// ===============================================================================
 
public func_AskForPermission(id)
{
	new szMenuTitle[128]
	formatex(szMenuTitle, charsmax(szMenuTitle), "\wSzukseges a modhoz az elore es hatra sebesseged megvaltoztatasa engedelyezed?")
	new menu = menu_create(szMenuTitle, "func_AskForPermission_handler")
 
	menu_additem(menu, "\wIgen","1",0);
	menu_additem(menu, "\rNem (Lassabban futsz mint a tobbiek)","2",0);
 
	menu_display(id, menu, 0);
	return PLUGIN_HANDLED
}
 
public func_AskForPermission_handler(id, menu, item)
{
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
 
	switch(key)
	{
		case 1:
		{
			g_bHasAcceptedSettings[id] = true
 
			client_cmd(id, "cl_forwardspeed %i",get_pcvar_num(cvar_t_speed))
			client_cmd(id, "cl_sidespeed %i",get_pcvar_num(cvar_t_speed))
			client_cmd(id, "cl_backspeed %i",get_pcvar_num(cvar_t_speed))
 
			if(is_user_alive(id))
				func_ApplyGameplay(id)
		}
		case 2:
		{
			g_bHasAcceptedSettings[id] = false
		}
	}
}
 
// ===============================================================================
// 	Stocks
// ===============================================================================
 
stock Reduce(id, amount)
	cs_set_user_money(id, cs_get_user_money(id) - amount)