/*
Mod Author - Desert

Thanks:
pRoxxx - help in code
amigo - sounds, models, ideas
VEN - Buy Zone Range
*/

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <fun>
#include <fakemeta>

#define PLUGIN "Crime town mod v2.0"
#define VERSION "1.0"
#define AUTHOR "crimetown.ru"

#define MAXPLAYERS			32
#define TASKID_LOSE	641
#define TASKID_KILLED	642
#define TASKID_MERKILL	643
#define TASK_MODEL 12222
#define TASK_EXG 6888
#define TASKID_ENDGAME 641
#define TASK_COOLDOWN 33333
#define TASK_CLEARMAN 44444
#define HIDE_HUD_RAHEAR (1<<3)
#define OFFSET_ENT_TO_INDEX 43
#define CBASE_CURRWPN_ENT 373
#define OFFSET_NVG 129
#define HAS_NVG (1<<0)
const OFFSET_AWM_AMMO  = 377
const OFFSET_SCOUT_AMMO = 378
const OFFSET_PARA_AMMO = 379
const OFFSET_FAMAS_AMMO = 380
const OFFSET_M3_AMMO = 381
const OFFSET_USP_AMMO = 382
const OFFSET_FIVESEVEN_AMMO = 383
const OFFSET_DEAGLE_AMMO = 384
const OFFSET_P228_AMMO = 385
const OFFSET_GLOCK_AMMO = 386
const OFFSET_FLASH_AMMO = 387
const OFFSET_HE_AMMO = 388
const OFFSET_SMOKE_AMMO = 389
const OFFSET_C4_AMMO = 390

enum (+= 100)
{
	LIMIT_ID = 3000
}

/* Buy Zone Range - By VEN */

#define OFFSET_32BIT 235
#define OFFSET_64BIT 268
#define OFFSET_LINUX_DIFF 5
#define BIT_BUYZONE (1<<0)
#if !defined PROCESSOR_TYPE // is automatic 32/64bit processor detection?
	#if cellbits == 32 // is the size of a cell 32 bits?
		// then considering processor as 32 bit
		#define OFFSET OFFSET_32BIT
	#else // in other case considering the size of a cell as 64 bits
		// and then considering processor as 64 bit
		#define OFFSET OFFSET_64BIT
	#endif
#else // processor type is specified by PROCESSOR_TYPE define
	#if PROCESSOR_TYPE == 0 // 32bit processor defined
		#define OFFSET OFFSET_32BIT
	#else // considering that defined 64bit processor
		#define OFFSET OFFSET_64BIT
	#endif
#endif
#define CS_GET_USER_MAPZONES(%1) get_pdata_int(%1, OFFSET, OFFSET_LINUX_DIFF)
#define CS_SET_USER_MAPZONES(%1,%2) set_pdata_int(%1, OFFSET, %2, OFFSET_LINUX_DIFF)
new Float:g_buyzone_min[3] = {-8192.0, -8192.0, -8192.0}
new Float:g_buyzone_max[3] = {-8191.0, -8191.0, -8191.0}
new g_buyzone

#define MAX_PLAYERS 32

new g_msgid_icon
new g_icon_name[] = "buyzone"

#define ICON_R 0
#define ICON_G 160
#define ICON_B 0
/* Buy Zone Range - End */

const OFFSET_CSTEAMS = 114
const OFFSET_LINUX = 5

new const g_szBotName[ ] = "(NPC)"
new g_iFakeplayer

new const _FistModels[][] = { "models/p_bknuckles.mdl", "models/v_bknuckles.mdl" }
new const _CopModels[][] = { "models/p_ctmcop.mdl", "models/v_ctmcop.mdl" }
new const _StandModels[][] = { "models/p_bknuckles.mdl", "models/v_grbknuckles.mdl" }
new const _ManModels[][] = { "models/p_bknuckles.mdl", "models/ctmod/v_knifeman_noblood.mdl" }
new const _MankModels[][] = { "models/p_knife.mdl", "models/ctmod/v_knifeman.mdl" }
new const _ManaxeModels[][] = { "models/ctmod/p_maniaxe.mdl", "models/ctmod/v_maniaxe.mdl" }
new const _FistSounds[][] = { "weapons/cbar_hitbod2.wav", "weapons/cbar_hitbod1.wav", "weapons/bullet_hit1.wav", "weapons/bullet_hit2.wav" }
new const _AxeSounds[][] = { "weapons/maniaxe_hitwall2.wav","weapons/maniaxe_slash.wav", "weapons/maniaxe_stab.wav","weapons/maniaxe_hit.wav" }
new const plsnd[][] = { "ctmsounds/misc0.mp3","ctmsounds/misc1.mp3","ctmsounds/misc2.mp3","ctmsounds/misc3.mp3","ctmsounds/misc4.mp3" }
new gp_PrecacheSpawn
new gmsgDeathMsg, gmsgScoreInfo
new Float:gLastAimDetail[33];
new gMsgStatusText;
new gMsgStatusValue;
new bool:is_gaming
new bool:g_bHideRaHeAr
new bool:can_use_prov[33]
new g_msgHideWeapon
new g_cvarHideRaHeAr
new g_time
new gmsgMoney
new bool:respvip[33]
new bool:checking[33]
new g_msgScoreAttrib
new bool:Voted[33]
new VoteCount[33]
new mvote
new CountPlayers, AllRewMoneys[33]

#define FLAG_VIP ADMIN_LEVEL_E

new const ctmdl[][] =
{
	"ctm_mer43",
	"ctm_cop43",
	"ctm_mirgr43",
	"ctm_sheff43"
}

new const g_remove_entities[][] =
{
	"func_bomb_target",
	"info_bomb_target",
	"hostage_entity",
	"monster_scientist",
	"func_hostage_rescue",
	"info_hostage_rescue",
	"info_vip_start",
	"func_vip_safetyzone",
	"func_escapezone",
	"func_buyzone"
}

new g_killer, g_mer
new bool:g_naemnik[33], bool:g_boss[33], bool:g_cop[33], bool:g_naemnik_k[33], bool:g_man[33], bool:g_mank[33], bool:g_sheff[33], bool:g_mafia[33]
new bool:is_freeze, maxplayers
new msgScreenFade, Float:user_speed[33]
new timer1, timer2, timer3, plrmdl[33][64]
new is_killed
new g_fwd_spawn
new g_grr[33]
new g_store_axe[33]
new bool:maska[33]
new bool:activrol[33]
new bool:roundend = false
new store_sheff_recoil,store_sheff_ammo,store_man_water,store_maska,store_activ,store_man_axe,store_nvg,store_killer_smoke,store_killer_flash
new g_maffkill, g_maffkilled
new nocheck[33]
new wins[33], deaths[33]
new bool:mapchange
new MEKILL, COPKILL, COPDEAD, MANDEAD, MANKILL, MANWIN, MERDEAD, MERWIN, MEKILLCOP, KILLWIN,ENDROUND,MAFKILL
new MINPLRS

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	MEKILL = register_cvar("ctm_reward_mekill", "1")
	COPKILL = register_cvar("ctm_reward_copkill", "1")
	COPDEAD = register_cvar("ctm_reward_killcop", "1")
	MANDEAD = register_cvar("ctm_reward_killman", "1")
	MANKILL = register_cvar("ctm_reward_mankill", "1")
	MANWIN = register_cvar("ctm_reward_manwin", "1")
	MERDEAD = register_cvar("ctm_reward_merdead", "1")
	MERWIN = register_cvar("ctm_reward_merdwin", "1")
	MEKILLCOP = register_cvar("ctm_reward_mekillcop", "1")
	KILLWIN = register_cvar("ctm_reward_killwin", "1")
	MAFKILL = register_cvar("ctm_reward_mafkill", "1")
	ENDROUND = register_cvar("ctm_reward_endwin", "1")
	MINPLRS = register_cvar("ctm_min_players", "5")
	g_cvarHideRaHeAr = register_cvar("ctm_hide_radarhealtharmor", "1")
	//register_clcmd("jointeam", "cmdJoinTeam");
	unregister_forward(FM_Spawn, g_fwd_spawn)
	g_msgHideWeapon = get_user_msgid("HideWeapon")
	unregister_forward(FM_Spawn, gp_PrecacheSpawn)
	RegisterHam(Ham_Killed, "player", "kill_event")
	register_message(g_msgHideWeapon, "msgHideWeapon")
	register_event("ResetHUD", "onResetHUD", "b")
	RegisterHam(Ham_Spawn, "player", "spawn_post", 1)
	register_forward(FM_CmdStart, "fwd_cmd_start")
	RegisterHam(Ham_Touch, "weaponbox", "Player_Touch")
	RegisterHam(Ham_Touch, "armoury_entity", "Player_Touch")
	RegisterHam(Ham_Touch, "weapon_shield", "Player_Touch")
	register_forward(FM_SetClientKeyValue, "fwd_setclientkeyvalue")
	register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")
	register_message(get_user_msgid("TextMsg"), "msg_textmsg")
	register_event("CurWeapon", "current_weapon", "be", "1=1", "2=29")
	register_forward(FM_EmitSound, "sound_emit")
	register_forward(FM_ClientKill, "fw_ClientKill")
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
	gmsgMoney = get_user_msgid("Money");
	g_msgScoreAttrib = get_user_msgid("ScoreAttrib")

	register_clcmd( "say /shop","shopmenu")
	register_clcmd( "say /store","shopmenu")
	register_clcmd( "say /buy","shopmenu")

	register_clcmd( "radio1","radioblock")
	register_clcmd( "radio2","radioblock")
	register_clcmd( "radio3","radioblock")
	register_clcmd( "coverme","radioblock")
	register_clcmd( "takepoint","radioblock")
	register_clcmd( "holdpos","radioblock")
	register_clcmd( "regroup","radioblock")
	register_clcmd( "followme","radioblock")
	register_clcmd( "takingfire","radioblock")
	register_clcmd( "go","radioblock")
	register_clcmd( "fallback","radioblock")
	register_clcmd( "sticktog","radioblock")
	register_clcmd( "getinpos","radioblock")
	register_clcmd( "stormfront","radioblock")
	register_clcmd( "report","radioblock")
	register_clcmd( "roger","radioblock")
	register_clcmd( "enemyspot","radioblock")
	register_clcmd( "needbackup","radioblock")
	register_clcmd( "sectorclear","radioblock")
	register_clcmd( "inposition","radioblock")
	register_clcmd( "reportingin","radioblock")
	register_clcmd( "getout","radioblock")
	register_clcmd( "negative","radioblock")
	register_clcmd( "enemydown","radioblock")

	store_sheff_recoil = register_cvar("store_sheff_recoil", "10")
	store_sheff_ammo = register_cvar("store_sheff_ammo", "10")
	store_man_water = register_cvar("store_man_water", "10")
	store_maska = register_cvar("store_maska", "10")
	store_activ = register_cvar("store_activ", "3000")
	store_man_axe = register_cvar("store_man_axe", "500")
	store_nvg = register_cvar("store_nvg", "10")
	store_killer_flash = register_cvar("store_killer_flash", "250")
	store_killer_smoke = register_cvar("store_killer_smoke", "250")

	register_dictionary( "ctm.txt" ); //lang


	register_logevent("round_end", 2, "1=Round_End")
	register_logevent("round_start", 2, "1=Round_Start")

	msgScreenFade = get_user_msgid("ScreenFade");
	register_forward( FM_PlayerPreThink,	"fwdPlayerPreThink" );
	gMsgStatusText	= get_user_msgid( "StatusText" );
	gMsgStatusValue	= get_user_msgid( "StatusValue" );
	register_message(get_user_msgid("TextMsg"),"block_message")
	register_message(get_user_msgid("SendAudio"), "msg_audio")
	gmsgDeathMsg = get_user_msgid("DeathMsg")
	gmsgScoreInfo = get_user_msgid("ScoreInfo")
	maxplayers = get_maxplayers();
	register_clcmd("buy", "menu_block")
	register_clcmd("buyequip", "menu_block")
	register_clcmd("fullupdate", "clcmd_fullupdate")
	g_msgid_icon = get_user_msgid("StatusIcon")
	register_message(g_msgid_icon, "message_status_icon")
	g_buyzone = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_buyzone"))
	dllfunc(DLLFunc_Spawn, g_buyzone)
	engfunc(EngFunc_SetSize, g_buyzone, g_buyzone_min, g_buyzone_max)

	new iEntity, iCount;

	while( ( iEntity = find_ent_by_class( iEntity, "info_player_deathmatch" ) ) > 0 )
		if( iCount++ > 1 )
			break;

	set_task( 5.0, "UpdateBot" );

	register_message( get_user_msgid( "DeathMsg" ), "MsgDeathMsg" );
	mapchange = false

	set_task(1.0, "teamcheck", 123094, _, _, "b", 0);
}

public teamcheck()
{
	if(mapchange)
		return PLUGIN_HANDLED

	if(!is_gaming)
		return PLUGIN_HANDLED

	if(!is_user_alive(g_iFakeplayer))
	{
		endgamem()
		return PLUGIN_HANDLED
	}

	static i
	for (i = 1; i <= maxplayers; i++)
	{
		if(is_gaming && !is_user_alive(i) && !nocheck[i] && i != g_iFakeplayer && is_user_connected(i))
			cs_set_user_team(i, CS_TEAM_T, CS_T_LEET)
	}
	if(!roundend && is_gaming && GetCountMan() == 0 && GetCountmafia() == 0)
	{
		set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
		show_dhudmessage(0, "%L", LANG_SERVER, "GR_WIN")
		for(new i = 1; i <= maxplayers; i++)
		{
			if(is_user_alive(i) && is_user_connected(i) && !g_naemnik[i] && !g_mank[i] && !g_mafia[i])
			{
				wins[i] += 1
				message_begin(MSG_BROADCAST, gmsgScoreInfo)
				write_byte(i);
				write_short(wins[i])
				write_short(deaths[i])
				write_short(0);
				write_short(get_user_team(i))
				message_end();
				give_user_money(i, (get_pcvar_num(ENDROUND) * CountPlayers))
			}
		}
		endgame()
	}
	else if(!roundend && is_gaming && GetCountCops() == 0 && GetCountSheff() == 0 && GetCountGR() <= 3)
	{
		if(GetCountMan() == 0 && GetCountmafia() != 0)
		{
			for(new i = 1; i <= maxplayers; i++)
			{
				if(is_user_alive(i) && is_user_connected(i) && (g_naemnik[i] || g_mafia[i]))
				{
					wins[i] += 1
					message_begin(MSG_BROADCAST, gmsgScoreInfo)
					write_byte(i)
					write_short(wins[i])
					write_short(deaths[i])
					write_short(0)
					write_short(get_user_team(i))
					message_end()
					give_user_money(i, (get_pcvar_num(ENDROUND) * CountPlayers))
				}
			}
			set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
			show_dhudmessage(0, "%L", LANG_SERVER, "MAFIA_WIN")
			endgame()
		}
		else if(GetCountMan() != 0 && GetCountmafia() == 0)
		{
			for(new i = 1; i <= maxplayers; i++)
			{
				if(is_user_alive(i) && is_user_connected(i) && g_mank[i])
				{
					wins[i] += 1
					message_begin(MSG_BROADCAST, gmsgScoreInfo)
					write_byte(i)
					write_short(wins[i])
					write_short(deaths[i])
					write_short(0)
					write_short(get_user_team(i))
					message_end()
					give_user_money(i, (get_pcvar_num(ENDROUND) * CountPlayers))
				}
			}
			set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
			show_dhudmessage(0, "%L", LANG_SERVER, "MAN_WIN")
			endgame()
		}
	}
	new hrole[255], statusboss[65], statuskiller[100], statuscops[32], statussheff[65], statusman[65], statusmaf[65], statusgr[65]

	if(g_mer != -1)
	{
		new name[32]
		get_user_name(g_mer,name,31)
		formatex(statusboss, charsmax(statusboss), "%L: %s", LANG_SERVER, "NAME_BOSS", name)
	}
	else
		formatex(statusboss, charsmax(statusboss), "%L: %L", LANG_SERVER, "NAME_BOSS", LANG_SERVER, "DEAD")

	if(g_killer != -1)
	{
		if(is_user_alive(g_killer))
		{
			if(timer2 != 0)
				formatex(statuskiller, charsmax(statuskiller), "%L - %L %d", LANG_SERVER, "NAME_KILLER", LANG_SERVER, "COUNT_TK", timer2)
			else if(timer3 != 0)
				formatex(statuskiller, charsmax(statuskiller), "%L - %L %d", LANG_SERVER, "NAME_KILLER", LANG_SERVER, "COUNT_HIDE", timer3)
			else
				formatex(statuskiller, charsmax(statuskiller), "%L: %L", LANG_SERVER, "NAME_KILLER", LANG_SERVER, "COUNT_HIDED")
		}
		else
			formatex(statuskiller, charsmax(statuskiller), "%L: %L", LANG_SERVER, "NAME_KILLER", LANG_SERVER, "DEAD")
	}
	else
	{
		formatex(statuskiller, charsmax(statuskiller), "%L: %L", LANG_SERVER, "NAME_KILLER", LANG_SERVER, "DEAD")
		timer2 = 0
		timer3 = 0
	}
	formatex(statuscops, charsmax(statuscops), "%L: %d", LANG_SERVER, "NAME_COPS", GetCountCops())
	if(GetCountSheff() != 0)
	{
		new idsheff
		for(i = 1; i< maxplayers; i++ )
		{
			if(g_sheff[i])
				idsheff = i
		}
		new name[32]
		get_user_name(idsheff,name,31)
		formatex(statussheff, charsmax(statussheff), "%L: %s", LANG_SERVER, "NAME_SHERIFF", name)
	}
	else
	{
		formatex(statussheff, charsmax(statussheff), "%L: %L", LANG_SERVER, "NAME_SHERIFF", LANG_SERVER, "DEAD")
	}
	if(GetCountMan() != 0)
		formatex(statusman, charsmax(statusman), "%L: %L", LANG_SERVER, "NAME_MANIAC", LANG_SERVER, "ALIVE")
	else
		formatex(statusman, charsmax(statusman), "%L: %L", LANG_SERVER, "NAME_MANIAC", LANG_SERVER, "DEAD")

	formatex(statusmaf, charsmax(statusmaf), "%L: %d", LANG_SERVER, "NAME_MAFIAS", GetCountmaf())
	formatex(statusgr, charsmax(statusgr), "%L: %d", LANG_SERVER, "NAME_PEACEFUL", GetCountGR())

	for(new i = 1; i <= maxplayers; i++)
	{
		if(is_user_alive(i))
		{
			if(g_naemnik[i] || g_naemnik_k[i])
				formatex(hrole, charsmax(hrole), "%L", LANG_SERVER, "ROLE_KILLER")
			else if(g_boss[i])
				formatex(hrole, charsmax(hrole), "%L", LANG_SERVER, "ROLE_BOSS")
			else if(g_cop[i])
				formatex(hrole, charsmax(hrole), "%L", LANG_SERVER, "ROLE_COP")
			else if(!g_naemnik[i] && !g_cop[i] && !g_boss[i] && !g_man[i] && !g_mank[i] && !g_sheff[i] && !g_mafia[i] && !g_naemnik_k[i])
				formatex(hrole, charsmax(hrole), "%L", LANG_SERVER, "ROLE_GR")
			else if(g_sheff[i])
				formatex(hrole, charsmax(hrole), "%L", LANG_SERVER, "ROLE_SHEFF")
			else if(g_man[i] || g_mank[i])
				formatex(hrole, charsmax(hrole), "%L", LANG_SERVER, "ROLE_MAN")
			else if(g_mafia[i])
				formatex(hrole, charsmax(hrole), "%L", LANG_SERVER, "ROLE_MAF")
		}
		else
		{
			formatex(hrole, charsmax(hrole), " ")
		}
		set_hudmessage(0, 255, 0, 0.02, 0.18, 0, 0.0, 1.0, 0.1, 0.2, 2)
		show_hudmessage(i, "%s^n^n%s^n%s^n%s^n%s^n%s^n%s^n%s", hrole, statusboss, statuscops, statussheff, statusman, statusmaf, statusgr, statuskiller)
	}
	return PLUGIN_CONTINUE
}

/* Buy Zone Range - by VEN */
public message_status_icon(msg_id, msg_dest, id) {
	if (!is_user_alive(id))
		return PLUGIN_CONTINUE

	new icon[8]
	get_msg_arg_string(2, icon, 7)
	if (equal(icon, g_icon_name))
		return PLUGIN_HANDLED

	return PLUGIN_CONTINUE
}
public menu_block(id) {
	return PLUGIN_HANDLED
}

public clcmd_fullupdate() {
	return PLUGIN_HANDLED
}

/* End */

public radioblock() {
		return PLUGIN_HANDLED;
}

public plugin_natives()
{
	register_native("ctm_get_merkilled", "native_merkilled", 1)
	register_native("ctm_get_gaming", "native_gaming", 1)
	register_native("ctm_get_freeze", "native_freeze", 1)

	register_native("ctm_get_user_killer", "native_get_user_killer", 1)
	register_native("ctm_get_user_mer", "native_get_user_mer", 1)
	register_native("ctm_get_user_cop", "native_get_user_cop", 1)
	register_native("ctm_get_user_killerk", "native_get_user_killerk", 1)
	register_native("ctm_get_user_man", "native_get_user_man", 1)
	register_native("ctm_get_user_mank", "native_get_user_mank", 1)
	register_native("ctm_get_user_kom", "native_get_user_kom", 1)
	register_native("ctm_get_user_mafia", "native_get_user_mafia", 1)
	register_native("ctm_get_user_mask", "native_get_user_mask", 1)
	register_native("ctm_get_user_rol", "native_get_user_rol", 1)
	register_native("ctm_get_user_check", "native_get_user_check", 1)
	register_native("ctm_get_user_debt", "native_get_user_debt", 1)

}

/*public cmdJoinTeam()
				return PLUGIN_HANDLED;*/

public current_weapon(id)
{
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE

	if(g_cop[id] || g_sheff[id])
	{
	set_pev(id, pev_viewmodel2, _CopModels[1])
	set_pev(id, pev_weaponmodel2, _CopModels[0])
	}
	if(g_naemnik[id] || g_naemnik_k[id])
	{
	set_pev(id, pev_viewmodel2, _FistModels[1])
	set_pev(id, pev_weaponmodel2, _FistModels[0])
	}
	if(g_man[id] || g_mank[id])
	{
	set_pev(id, pev_viewmodel2, _ManModels[1])
	set_pev(id, pev_weaponmodel2, _ManModels[0])
	}
	if(!g_cop[id] && !g_naemnik[id] && !g_man[id] && !g_mank[id] && !g_sheff[id] && !g_naemnik_k[id])
	{
	set_pev(id, pev_viewmodel2, _StandModels[1])
	set_pev(id, pev_weaponmodel2, _FistModels[0])
	}
	if(g_mafia[id])
	{
	set_pev(id, pev_viewmodel2, _StandModels[1])
	set_pev(id, pev_weaponmodel2, _FistModels[0])
	}

	return PLUGIN_CONTINUE
}

public onResetHUD(id)
{
	new iHideFlags = GetHudHideFlags()
	if(iHideFlags)
	{
		message_begin(MSG_ONE, g_msgHideWeapon, _, id)
		write_byte(iHideFlags)
		message_end()
	}
	applyCVars()
	if(get_user_flags(id) & FLAG_VIP)
		{
		message_begin(MSG_ALL, g_msgScoreAttrib)
		write_byte(id)
		write_byte(4)
		message_end()
	}
}


public startvote()
{
	new i
	for(i = 1; i< maxplayers; i++ )
	{
		VoteCount[i] = 0
		Voted[i] = false
		vote_menu(i)
	}
	set_task(10.0, "exitVoted", TASK_EXG)
}

public vote_menu(id)
{
	if(!is_user_alive(id))
	{
		return PLUGIN_HANDLED
	}

	if(Voted[id] == true)
	{
		return PLUGIN_HANDLED
	}

	static item[128]
	mvote = menu_create("Time Lynching", "phand")
	new i
	for(i = 1; i< maxplayers; i++ )
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT || i == id || g_cop[i] || g_sheff[i] || g_boss[i])
		continue

		static name[32], temp[10]

		get_user_name(i, name, 31)
		num_to_str(i, temp, 9)
		formatex(item, 127, "%s", name)
		menu_additem(mvote, item, temp)

	}

	menu_display(id, mvote)

	return PLUGIN_HANDLED
}

public phand(id, menu, item)
{
	if(item == MENU_EXIT || !is_user_alive(id) || !task_exists(TASK_EXG))
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}

	static data[6], name[64], accss, cllbck, vic
	menu_item_getinfo(menu, item, accss, data, 5, name, 63, cllbck)

	vic = str_to_num(data)
	static namev[32], namea[32]

	get_user_name(vic, namev, 31)
	get_user_name(id, namea, 31)
	if(is_user_alive(vic))
	{
		ColorChat(0, "%L", LANG_SERVER, "LYNCH_VOTING", namea, namev)
		Voted[id] = true
		VoteCount[vic] += 1
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED

}

public exitVoted()
{
	new i, maxvote, vic = 1
	for(i = 1; i< maxplayers; i++ )
	{
		if(VoteCount[vic] < VoteCount[i])
		{
			vic = i
			maxvote = VoteCount[i]
		}
	}
	for(i = 1; i< maxplayers; i++ )
	{
		if(i != vic && VoteCount[i] == maxvote)
		{
			ColorChat(0, "%L", LANG_SERVER, "LYNCH_NOVOTE")
			return 0
		}
	}
	new name[32]
	get_user_name(vic, name, 31)
	if(!g_naemnik[vic] && !g_cop[vic] && !g_boss[vic] && !g_man[vic] && !g_mank[vic] && !g_sheff[vic] && !g_mafia[vic] && !g_naemnik_k[vic])
		ColorChat(0, "%L", LANG_SERVER, "LYNCH_KILLGR", name)
	else if(g_naemnik[vic] || g_naemnik_k[vic])
		ColorChat(0, "%L", LANG_SERVER, "LYNCH_KILLER", name)
	else if(g_mank[vic])
		ColorChat(0, "%L", LANG_SERVER, "LYNCH_MAN", name)
	else if(g_mafia[vic])
		ColorChat(0, "%L", LANG_SERVER, "LYNCH_MAF", name)
	user_kill(vic)
	menu_destroy(mvote)
	return 0
}


public msgHideWeapon()
{
	new iHideFlags = GetHudHideFlags()
	if(iHideFlags)
		set_msg_arg_int(1, ARG_BYTE, get_msg_arg_int(1) | iHideFlags)
}

public client_disconnect(id)
{
	if(mapchange)
		return PLUGIN_CONTINUE

	remove_task(id)
	remove_task(id+TASK_CLEARMAN)
	remove_task(id+TASK_COOLDOWN)
	respvip[id] = false
	activrol[id] = false
	g_mafia[id] = false
	if(g_killer == id && !roundend)
	{
		set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
		show_dhudmessage(0, "%L", LANG_SERVER, "KILLER_QUIT")
		g_killer = -1
		if(g_mer != -1)
			give_user_money(g_mer, get_pcvar_num(MERWIN))
	}
	if(g_mer == id && !is_killed && !roundend)
	{
		set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
		show_dhudmessage(0, "%L", LANG_SERVER, "BOSS_QUIT")
		g_mer = -1
		new i = g_killer
		g_naemnik[i] = false
		g_mafia[i] = true
		strip_user_weapons(i)
		give_item(i, "weapon_knife")
		give_item(i, "weapon_tmp")
		give_item(i,"ammo_9mm")
		give_item(i,"ammo_9mm")
		give_item(i,"ammo_9mm")
		engclient_cmd(i, "weapon_knife")
		ColorChat(i, "%L", LANG_SERVER, "KILLER_MAFIA")
		give_user_money(i, get_pcvar_num(MERDEAD))
	}
	g_naemnik[id] = false
	g_boss[id] = false
	g_cop[id] = false
	g_man[id] = false
	g_mank[id] = false
	g_naemnik_k[id] = false
	g_sheff[id] = false
	g_grr[id] = 0
	
	return PLUGIN_CONTINUE
}

public fw_ClientKill()
		return FMRES_SUPERCEDE;

public UpdateBot( ) {

		new id = find_player( "i" );

		if( !id ) {
			id = engfunc( EngFunc_CreateFakeClient, g_szBotName );
			if( pev_valid( id ) ) {
				engfunc( EngFunc_FreeEntPrivateData, id );
				dllfunc( MetaFunc_CallGameEntity, "player", id );
				set_user_info( id, "rate", "3500" );
				set_user_info( id, "cl_updaterate", "25" );
				set_user_info( id, "cl_lw", "1" );
				set_user_info( id, "cl_lc", "1" );
				set_user_info( id, "cl_dlmax", "128" );
				set_user_info( id, "cl_righthand", "1" );
				set_user_info( id, "_vgui_menus", "0" );
				set_user_info( id, "_ah", "0" );
				set_user_info( id, "dm", "0" );
				set_user_info( id, "tracker", "0" );
				set_user_info( id, "friends", "0" );
				set_user_info( id, "*bot", "1" );
				set_pev( id, pev_flags, pev( id, pev_flags ) | FL_FAKECLIENT );
				set_pev( id, pev_colormap, id );

				new szMsg[ 128 ];
				dllfunc( DLLFunc_ClientConnect, id, g_szBotName, "127.0.0.1", szMsg );
				dllfunc( DLLFunc_ClientPutInServer, id );

				cs_set_user_team( id, CS_TEAM_T );
				ExecuteHamB( Ham_CS_RoundRespawn, id );

				set_pev( id, pev_effects, pev( id, pev_effects ) | EF_NODRAW );
				set_pev( id, pev_solid, SOLID_NOT );
				dllfunc( DLLFunc_Think, id );

				g_iFakeplayer = id;
			}
		}
	}

public killerend() {
	if(g_mer != -1)
	give_user_money(g_mer, get_pcvar_num(MERWIN))
	set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
	show_dhudmessage(0, "%L", LANG_SERVER, "KILLER_SUICIDE")
	g_killer = -1
	return 0
}

public merend() {
	new i = g_killer, im = g_mer
	set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
	show_dhudmessage(0, "%L", LANG_SERVER, "BOSS_SUICIDE")
	g_mer = -1
	g_naemnik[i] = false
	g_mafia[i] = true
	strip_user_weapons(i)
	give_item(i, "weapon_knife")
	give_item(i, "weapon_tmp")
	give_item(i,"ammo_9mm")
	give_item(i,"ammo_9mm")
	give_item(i,"ammo_9mm")
	engclient_cmd(i, "weapon_knife")
	ColorChat(i, "%L", LANG_SERVER, "KILLER_MAFIA")
	give_user_money(im, get_pcvar_num(MERDEAD))
	return im
}

public plugin_precache()
{
	new i, item[128]

	for(i = 0; i < sizeof(ctmdl); i++)
	{
		formatex(item, 127, "models/player/%s/%s.mdl", ctmdl[i], ctmdl[i])
		precache_model(item)
	}

	for(i = 0; i < sizeof(_FistModels); i++)
		precache_model(_FistModels[i])

	for(i = 0; i < sizeof(_StandModels); i++)
		precache_model(_StandModels[i])

	for(i = 0; i < sizeof(_CopModels); i++)
		precache_model(_CopModels[i])

	for(i = 0; i < sizeof(_ManModels); i++)
		precache_model(_ManModels[i])

	for(i = 0; i < sizeof(_MankModels); i++)
		precache_model(_MankModels[i])

	for(i = 0; i < sizeof(_ManaxeModels); i++)
		precache_model(_ManaxeModels[i])

	for(i = 0; i < sizeof(_FistSounds); i++)
		precache_sound(_FistSounds[i])

	for(i = 0; i < sizeof(_AxeSounds); i++)
		precache_sound(_AxeSounds[i])

	for(i = 0; i < sizeof(plsnd); i++)
		engfunc(EngFunc_PrecacheSound, plsnd[i]);

	gp_PrecacheSpawn = register_forward(FM_Spawn, "precache_spawn", 1)
	precache_sound("ctmsounds/firstmus1.wav")

	g_fwd_spawn = register_forward(FM_Spawn, "fwd_spawn")
}

public shopmenu(id)
{
	if(get_playersnum() < 7)
	{
		ColorChat(id, "%L", LANG_SERVER, "SHOP_MINPLR")
		return PLUGIN_HANDLED
	}

	if(!is_gaming)
	{
		ColorChat(id, "%L", LANG_SERVER, "SHOP_WAIT")
		return PLUGIN_HANDLED
	}

	if(!is_user_alive(id))
	{
		ColorChat(id, "%L", LANG_SERVER, "SHOP_NOTALIVE")
		return PLUGIN_HANDLED
	}

	static menu, item[128]
	new szmenu[ 555 char ]
	formatex( szmenu, charsmax( szmenu ),"\yStore \dYour money: %d $", cs_get_user_money(id))
	menu = menu_create( szmenu, "ihand")

	if(g_sheff[id])
	{
		if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_sheff_recoil))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_ORDER", get_pcvar_num(store_sheff_recoil))
			menu_additem(menu, item, "2")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_ORDER", get_pcvar_num(store_sheff_recoil))
			menu_additem(menu, item, "2")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_sheff_ammo))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_DGL", get_pcvar_num(store_sheff_ammo))
			menu_additem(menu, item, "3")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_DGL", get_pcvar_num(store_sheff_ammo))
			menu_additem(menu, item, "3")
		}
	}
	else if(g_man[id] || g_mank[id])
	{
		if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_man_water) && !g_store_axe[id])
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_WATER", get_pcvar_num(store_man_water))
			menu_additem(menu, item, "2")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_WATER", get_pcvar_num(store_man_water))
			menu_additem(menu, item, "2")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_maska))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_MASK", get_pcvar_num(store_maska))
			menu_additem(menu, item, "3")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_MASK", get_pcvar_num(store_maska))
			menu_additem(menu, item, "3")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_man_axe))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_AXE", get_pcvar_num(store_man_axe))
			menu_additem(menu, item, "4")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_AXE", get_pcvar_num(store_man_axe))
			menu_additem(menu, item, "4")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_nvg))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_NVG", get_pcvar_num(store_nvg))
			menu_additem(menu, item, "5")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_NVG", get_pcvar_num(store_nvg))
			menu_additem(menu, item, "5")
		}
	}
	else if(g_naemnik[id])
	{
		if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_maska))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_MASK", get_pcvar_num(store_maska))
			menu_additem(menu, item, "2")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_MASK", get_pcvar_num(store_maska))
			menu_additem(menu, item, "2")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_nvg))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_NVG", get_pcvar_num(store_nvg))
			menu_additem(menu, item, "3")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_NVG", get_pcvar_num(store_nvg))
			menu_additem(menu, item, "3")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_killer_flash))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_FLASH", get_pcvar_num(store_killer_flash))
			menu_additem(menu, item, "4")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_FLASH", get_pcvar_num(store_killer_flash))
			menu_additem(menu, item, "4")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_killer_smoke))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_SMOKE", get_pcvar_num(store_killer_smoke))
			menu_additem(menu, item, "5")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_SMOKE", get_pcvar_num(store_killer_smoke))
			menu_additem(menu, item, "5")
		}
	}
	else if(g_boss[id])
	{
		if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
	}
	else if(g_cop[id])
	{
		if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
	}
	else if(!g_naemnik[id] && !g_cop[id] && !g_boss[id] && !g_man[id] && !g_mank[id] && !g_sheff[id] && !g_mafia[id] && !g_naemnik_k[id])
	{
		if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_ACTIV", get_pcvar_num(store_activ))
			menu_additem(menu, item, "1")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_nvg))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_NVG", get_pcvar_num(store_nvg))
			menu_additem(menu, item, "2")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_NVG", get_pcvar_num(store_nvg))
			menu_additem(menu, item, "2")
		}
	}
	else if(g_mafia[id])
	{
		if(cs_get_user_money(id) >= get_pcvar_num(store_maska))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_MASK", get_pcvar_num(store_maska))
			menu_additem(menu, item, "1")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_MASK", get_pcvar_num(store_maska))
			menu_additem(menu, item, "1")
		}
		if(cs_get_user_money(id) >= get_pcvar_num(store_nvg))
		{
			formatex(item, 127, "%L", LANG_SERVER, "SHOP_NVG", get_pcvar_num(store_nvg))
			menu_additem(menu, item, "2")
		}
		else
		{
			formatex(item, 127, "\d%L", LANG_SERVER, "SHOP_NVG", get_pcvar_num(store_nvg))
			menu_additem(menu, item, "2")
		}
	}
	menu_display(id, menu)

	return PLUGIN_HANDLED

}

public ihand(id, menu, item, key)
{
	if((item == MENU_EXIT) || !is_user_alive(id))
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}

	static data[6], name[64], acess, clbck, key
	menu_item_getinfo(menu, item, acess, data, 5, name, 63, clbck)
	key = str_to_num(data)

	if(g_sheff[id])
	{
		switch(key)
		{
			case 1:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_activ))
					activrol[id] = true
					ColorChat(id, "%L", LANG_SERVER, "SHOP_ACTIVB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 2:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_sheff_recoil))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_sheff_recoil))
					can_use_prov[id] = true
					remove_task(id+TASK_COOLDOWN)
					ColorChat(id, "%L", LANG_SERVER, "SHOP_ORDERB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 3:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_sheff_ammo))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_sheff_ammo))
					give_item(id,"ammo_50ae");
					ColorChat(id, "%L", LANG_SERVER, "SHOP_DGLB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
		}
	}
	else if(g_man[id] || g_mank[id])
	{
		switch(key)
		{
			case 1:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_activ))
					activrol[id] = true
					ColorChat(id, "%L", LANG_SERVER, "SHOP_ACTIVB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 2:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_man_water))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_man_water))
					remove_task(id+TASK_CLEARMAN)
					set_task(0.1, "clearman", id+TASK_CLEARMAN)
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 3:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_maska))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_maska))
					maska[id] = true
					ColorChat(id, "%L", LANG_SERVER, "SHOP_MASKB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 4:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_man_axe))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_man_axe))
					set_pev(id, pev_viewmodel2, _ManaxeModels[1])
					set_pev(id, pev_weaponmodel2, _ManaxeModels[0])
					g_store_axe[id] = true
					ColorChat(id, "%L", LANG_SERVER, "SHOP_AXEB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 5:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_nvg))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_nvg))
					fm_set_user_nvg(id, 1)
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NVGB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
		}
	}
	else if(g_mafia[id])
	{
		switch(key)
		{
			case 1:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_maska))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_maska))
					maska[id] = true
					ColorChat(id, "%L", LANG_SERVER, "SHOP_MASKB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 2:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_nvg))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_nvg))
					fm_set_user_nvg(id, 1)
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NVGB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
		}
	}
	else if(g_naemnik[id] || g_naemnik_k[id])
	{
		switch(key)
		{
			case 1:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_activ))
					activrol[id] = true
					ColorChat(id, "%L", LANG_SERVER, "SHOP_ACTIVB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 2:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_maska))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_maska))
					maska[id] = true;
					ColorChat(id, "%L", LANG_SERVER, "SHOP_MASKB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 3:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_nvg))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_nvg))
					fm_set_user_nvg(id, 1)
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NVGB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 4:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_killer_flash))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_killer_flash))
					give_item(id, "weapon_flashbang")
					ColorChat(id, "%L", LANG_SERVER, "SHOP_FLASHB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 5:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_killer_smoke))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_killer_smoke))
					give_item(id, "weapon_smokegrenade")
					ColorChat(id, "%L", LANG_SERVER, "SHOP_SMOKEB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
		}
	}
	else if(g_boss[id])
	{
		switch(key)
		{
			case 1:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_activ))
					activrol[id] = true
					ColorChat(id, "%L", LANG_SERVER, "SHOP_ACTIVB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
		}
	}
	else if(g_cop[id])
	{
		switch(key)
		{
			case 1:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_activ))
					activrol[id] = true
					ColorChat(id, "%L", LANG_SERVER, "SHOP_ACTIVB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
		}
	}
	else if(!g_naemnik[id] && !g_cop[id] && !g_boss[id] && !g_mafia[id] && !g_man[id] && !g_mank[id] && !g_sheff[id] && !g_naemnik_k[id])
	{
		switch(key)
		{
			case 1:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_activ))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_activ))
					activrol[id] = true
					ColorChat(id, "%L", LANG_SERVER, "SHOP_ACTIVB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
			case 2:
			{
				if(cs_get_user_money(id) >= get_pcvar_num(store_nvg))
				{
					cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(store_nvg))
					fm_set_user_nvg(id, 1)
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NVGB")
				}
				else
				{
					ColorChat(id, "%L", LANG_SERVER, "SHOP_NOMONEY")
				}
			}
		}
	}
	return PLUGIN_HANDLED
}

public fwd_spawn(ent)
{
	if(!pev_valid(ent))
		return FMRES_IGNORED

	static classname[32]
	pev(ent, pev_classname, classname, 31)

	static i
	for(i = 0; i < sizeof g_remove_entities; ++i)
	{
		if(equal(classname, g_remove_entities[i]))
		{
			engfunc(EngFunc_RemoveEntity, ent)
			return FMRES_SUPERCEDE
		}
	}
	return FMRES_IGNORED
}

public client_connect(id)
{
	g_mafia[id] = false
	g_naemnik[id] = false
	g_boss[id] = false
	g_cop[id] = false
	g_naemnik_k[id] = false
	g_man[id] = false
	g_mank[id] = false
	g_sheff[id] = false
	g_grr[id] = 0
	maska[id] = false
	activrol[id] = false
	checking[id] = false
	g_store_axe[id] = false
	nocheck[id] = false
	wins[id] = 0
	deaths[id] = 0
	AllRewMoneys[id] = 0
}

public spawn_post(id)
{
	if(!is_user_connected(id) || !is_user_alive(id))
		return PLUGIN_HANDLED

	message_begin(MSG_BROADCAST, gmsgScoreInfo)
	write_byte(id)
	write_short(wins[id])
	write_short(deaths[id])
	write_short(0)
	write_short(get_user_team(id))
	message_end()
	g_store_axe[id] = false
	g_sheff[id] = false
	remove_task(id+TASK_COOLDOWN)
	remove_task(id+TASK_CLEARMAN)
	g_naemnik[id] = false
	g_boss[id] = false
	g_cop[id] = false
	g_mafia[id] = false
	g_naemnik_k[id] = false
	g_man[id] = false
	g_mank[id] = false
	if(is_user_alive(id))
	{
		strip_user_weapons(id)
		give_item(id, "weapon_knife")
		fm_set_user_nvg(id, 0)
		set_user_rendering(id,kRenderFxNone,255,255,255, kRenderNormal,16)
	}
	copy(plrmdl[id], 63, ctmdl[2])
	set_user_info(id, "model", ctmdl[2])
	entity_set_int(id, EV_INT_skin, random_num(0, 2))
	if (!is_gaming && is_user_alive(id))
	{
		SetLimit(id)
	}
	if( g_iFakeplayer == id ) {
		set_pev( id, pev_frags, -1000.0 )
		cs_set_user_deaths( id, -1000 )

		set_pev( id, pev_effects, pev( id, pev_effects ) | EF_NODRAW )
		set_pev( id, pev_solid, SOLID_NOT )
		entity_set_origin( id, Float:{ 999999.0, 999999.0, 999999.0 } )
		dllfunc( DLLFunc_Think, id )
		cs_set_user_team( id, CS_TEAM_T )
	}
	else if(!nocheck[id] && is_gaming)
	{
		user_silentkill(id)
		cs_set_user_team(id, CS_TEAM_T, CS_T_LEET);
	}
	else if(nocheck[id])
		nocheck[id] = false
	else if(is_user_alive(id) && cs_get_user_team( id ) == CS_TEAM_T)
	{
		user_silentkill(id)
		cs_set_user_team( id, CS_TEAM_CT, CS_CT_URBAN)
		ExecuteHamB(Ham_CS_RoundRespawn, id)
	}
	return PLUGIN_HANDLED
}

public round_start()
{
	roundend = false
	remove_task(TASKID_KILLED)
	remove_task(TASKID_MERKILL)
	remove_task(TASKID_ENDGAME)
	remove_task()
	remove_task(2654)
	remove_task(2655)
	remove_task(2656)
	remove_task(LIMIT_ID)
	remove_task(TASK_EXG)
	CountPlayers = 0
	set_cvar_num("mp_friendlyfire", 1)
	set_cvar_num("mp_roundtime", 5)
	set_cvar_num("mp_limitteams", 0)
	set_cvar_num("mp_autoteambalance", 0)
	set_cvar_num("mp_tkpunish", 0)
	set_cvar_num("mp_forcecamera", 3)
	set_cvar_num("mp_forcechasecam", 3)
	if(GetCountAliveCT() > (get_pcvar_num(MINPLRS) - 1))
	{
		timer1 = 0
		timer2 = 0
		timer3 = 0
		is_gaming = false
		is_killed = false
		is_freeze = false
		g_maffkill = -1
		g_maffkilled = 0
		RemoveLimit()
		set_task(0.5, "freeze")
		for(new i = 1; i <= MAXPLAYERS; i++)
		{
			remove_task(i)
			if(is_user_alive(i))
			{
				strip_user_weapons(i)
			}
		}
	}
	else
	{
		static minplr
		minplr = get_pcvar_num(MINPLRS)
		set_dhudmessage(123, 73, 50, -1.0, 0.70, 0, 6.0, 12.0)
		show_dhudmessage(0, "%L", LANG_SERVER, "MIN_PLRS", minplr)
		set_task(10.0, "endgamem", TASKID_ENDGAME)
	}
	for(new i = 1; i <= MAXPLAYERS; i++)
	{
		respvip[i] = false
		checking[i] = false
	}
	UpdateBot()
}

public block_message()
{
	if(get_msg_args()==3 && get_msg_argtype(2)==ARG_STRING)
	{
		new message[32]
		get_msg_arg_string(2,message,31)
		if(equali(message,"#Game_teammate_attack"))
		{
			return PLUGIN_HANDLED
		}
	}
	if(get_msg_args() != 5 || get_msg_argtype(3) != ARG_STRING || get_msg_argtype(5) != ARG_STRING) {
		return PLUGIN_CONTINUE
	}
	new arg3[16]
	get_msg_arg_string(3, arg3, 15)
	if(!equal(arg3, "#Game_radio")) {
		return PLUGIN_CONTINUE
	}
	new arg5[20]
	get_msg_arg_string(5, arg5, 19)
	if(equal(arg5, "#Fire_in_the_hole")) {
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public msg_audio()
{
	if(get_msg_args() != 3 || get_msg_argtype(2) != ARG_STRING) {
		return PLUGIN_CONTINUE
	}
	new arg2[20]
	get_msg_arg_string(2, arg2, 19)
	if(equal(arg2[1], "!MRAD_FIREINHOLE")) {
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public fwd_setclientkeyvalue(id, infobuffer, const key[])
{
	if(equal(key, "model"))
		return FMRES_SUPERCEDE

	return FMRES_IGNORED
}

public Player_Touch(weapon, id)
{
	return HAM_SUPERCEDE;
}

public freeze()
{
	is_freeze = true

	for(new i = 1; i <= maxplayers; i++)
	{
		if(is_user_connected(i) && is_user_alive(i))
		{
			strip_user_weapons(i)
			g_naemnik[i] = false
			g_boss[i] = false
			g_cop[i] = false
			g_man[i] = false
			g_mank[i] = false
			g_naemnik_k[i] = false
			g_sheff[i] = false
			g_mafia[i] = false
			g_mer = 0
			g_killer = 0
			AllRewMoneys[i] = 0
			SetLimit(i)
		}
	}
	set_task(0.5, "give_role")
	set_task(3.0, "start")
	timer1 = 3
	timerand()
	set_task(3.0, "RemoveLimit", LIMIT_ID)
	set_task(2.0, "spkmaf")

	return PLUGIN_CONTINUE
}

public spkmaf()
{

	emit_sound(0, CHAN_AUTO, "ctmsounds/firstmus1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
}

public timerand()
{
	set_hudmessage(255, 0, 0, -1.0, 0.02, 0, 0.0, 1.0, 0.1, 0.2)
	show_hudmessage(0, "%L", LANG_SERVER, "TIMER_RAND", timer1)

	timer1--
	if(timer1 > 0)
	{
		set_task(1.0, "timerand")
	}
	else
	{
		timer1 = 0
	}
}

public timekill()
{
	timer2--
	if(timer2 > 0)
	{
		set_task(1.0, "timekill")
	}
	else
	{
		timer2 = 0
	}
}

public timekiller()
{
	timer3--
	if(timer3 > 0)
	{
		set_task(1.0, "timekiller")
	}
	else
	{
		timer3 = 0
	}
}


public give_role()
{
	if(GetCountAliveCT() > 1)
	{
	set_task(8.2, "give_naemnik")
	set_task(8.3, "give_boss")
	}
	else
		endgame()

	if(GetCountAliveCT() > 3)
		set_task(9.0, "give_cop")
	if(GetCountAliveCT() > 6)
		set_task(9.1, "give_cop")
	if(GetCountAliveCT() > 9)
		set_task(8.0, "give_mafia")
	if(GetCountAliveCT() > 9)
		set_task(8.1, "give_sheff")
	if(GetCountAliveCT() > 10)
		set_task(7.9, "give_man")
	if(GetCountAliveCT() > 12)
		set_task(9.2, "give_cop")
	if(GetCountAliveCT() > 14)
		set_task(8.4, "give_mafia")
	if(GetCountAliveCT() > 17)
		set_task(9.4, "give_cop")
	if(GetCountAliveCT() > 18)
		set_task(8.5, "give_mafia")
	if(GetCountAliveCT() > 23)
		set_task(9.5, "give_cop")
}


public start()
{
	is_freeze = false
	talk_rols()
	g_time = 1
	timeset()
	for(new i = 1; i <= maxplayers; i++)
	{
		if(is_user_alive(i) && i != g_iFakeplayer)
			CountPlayers += 1
	}
}

public timeset()
{
	if(g_time == 1)
	{
		client_cmd(0, "mp3 play ^"sound/%s^"", plsnd[0])
		ColorChat(0, "%L", LANG_SERVER, "TIME_MORN")
		set_lights("i")
		if(GetCountmafia() != 0 && g_maffkilled == 2)
		{
			for(new i = 1; i <= MAXPLAYERS; i++)
			{
				if(g_mafia[i])
				{
					engclient_cmd(i, "weapon_knife")
					set_pev(i, pev_viewmodel2, _StandModels[1])
					set_pev(i, pev_weaponmodel2, _FistModels[0])
					ColorChat(i, "%L", LANG_SERVER, "MAFIA_LOST")
				}
			}
		}
		g_maffkill = -1
		g_maffkilled = 1
	}
	if(g_time == 10)
	{
		ColorChat(0, "%L", LANG_SERVER, "TIME_DAY")
		set_lights("#OFF")
	}
	if(g_time == 50)
	{
		ColorChat(0, "%L", LANG_SERVER, "TIME_EVE")
		set_lights("f")
		startvote()
	}
	if(g_time == 60)
	{
		client_cmd(0, "mp3 play ^"sound/%s^"", plsnd[1])
		ColorChat(0, "%L", LANG_SERVER, "TIME_NIGHT")
		set_lights("b")
		if(GetCountmafia() != 0 && !roundend)
		{
			new id, num = 0;
			new cts[31];
			for(new i = 1; i <= MAXPLAYERS; i++)
			{
				if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
				continue;

				if(!g_boss[i] && !g_naemnik[i] && !g_mafia[i])
				{
				cts[num] = i;
				num++;
				}
			}
			if(num > 0)
			{
			   id = random_num(0, num-1);
			   g_maffkill = cts[id];
			}
			new name[32], i = g_maffkill
			get_user_name(i,name,31)
			for(new i = 1; i <= MAXPLAYERS; i++)
			{
				if(g_mafia[i])
					ColorChat(i, "%L", LANG_SERVER, "MAFIA_DEBT", name)

				g_maffkilled = 2
			}
		}
	}
	if(g_time == 110)
	{
		g_time = 0
	}
	g_time++
	set_task(1.0,"timeset")
	return PLUGIN_CONTINUE
}

SetLimit(id)
{
	message_begin(MSG_ONE, msgScreenFade, _, id);
	write_short(1<<12);
	write_short(1<<8);
	write_short(1<<0);
	write_byte(0);
	write_byte(0);
	write_byte(0);
	write_byte(255);
	message_end();

	pev(id, pev_maxspeed, user_speed[id]);
	set_pev(id, pev_maxspeed, 1.0);
	set_task(0.8, "DelayFade", id);
}

RemoveFade(id)
{
	message_begin(MSG_ONE, msgScreenFade, _, id);
	write_short(1<<12);
	write_short(1<<8);
	write_short(1<<1);
	write_byte(0);
	write_byte(0);
	write_byte(0);
	write_byte(255);
	message_end();

	set_pev(id, pev_maxspeed, user_speed[id]);
}

public DelayFade(id)
{
	message_begin(MSG_ONE, msgScreenFade, _, id);
	write_short(1<<0);
	write_short(1<<0);
	write_short(1<<2);
	write_byte(0);
	write_byte(0);
	write_byte(0);
	write_byte(255);
	message_end();
}

public RemoveLimit()
{
	static i;

	for (i = 1; i <= maxplayers; i++)
	{
		if(is_user_alive(i))
		{
		RemoveFade(i)
		}
	}
}

public give_naemnik()
{
	new id, num = 0;
	new cts[31];
	new ctsa[31], numa = 0;
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i])
		{
		cts[num] = i;
		num++;
		}
	}
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i] && activrol[i])
		{
		ctsa[numa] = i;
		numa++;
		}
	}
	if(numa > 0)
	{
	   id = random_num(0, numa-1);
	   g_naemnik[ctsa[id]] = true;
	   g_killer = ctsa[id];
	   activrol[ctsa[id]] = false;
	   return PLUGIN_CONTINUE
	}
	if(num > 0)
	{

	   id = random_num(0, num-1);
	   g_naemnik[cts[id]] = true;
	   g_killer = cts[id];
	}
	return PLUGIN_CONTINUE
}

public give_boss()
{
	new id, num = 0, numr = 0;
	new cts[31];
	new ctsr[31];
	new ctsa[31], numa = 0;

	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i])
		{
		cts[num] = i;
		num++;
		}
	}
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i] && g_grr[i] >= 2)
		{
		ctsr[numr] = i;
		numr++;
		}
	}
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i] && activrol[i])
		{
		ctsa[numa] = i;
		numa++;
		}
	}
	if(numa > 0)
	{
	   id = random_num(0, numa-1);
	   g_boss[ctsa[id]] = true;
	   g_mer = ctsa[id];
	   activrol[ctsa[id]] = false;
	   return PLUGIN_CONTINUE
	}
	if(numr > 0)
	{
	   id = random_num(0, numr-1);
	   g_boss[ctsr[id]] = true;
	   g_mer = ctsr[id];
	   return PLUGIN_CONTINUE
	}
	else if(num > 0)
	{
	   id = random_num(0, num-1);
	   g_boss[cts[id]] = true;
	   g_mer = cts[id];
	}
	return PLUGIN_CONTINUE
}

public give_man()
{
	new id, num = 0;
	new cts[31];
	new ctsa[31], numa = 0;

	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i])
		{
		cts[num] = i;
		num++;
		}
	}
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i] && activrol[i])
		{
		ctsa[numa] = i;
		numa++;
		}
	}
	if(numa > 0)
	{
	   id = random_num(0, numa-1);
	   g_mank[ctsa[id]] = true;
	   activrol[ctsa[id]] = false;
	   return PLUGIN_CONTINUE
	}
	if(num > 0)
	{
	   id = random_num(0, num-1);
	   g_mank[cts[id]] = true;
	}
	return PLUGIN_CONTINUE
}

public give_cop()
{
	new id, num = 0, numr = 0;
	new cts[31];
	new ctsr[31];
	new ctsa[31], numa = 0;
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i])
		{
		cts[num] = i;
		num++;
		}
	}
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i] && g_grr[i] >= 2)
		{
		ctsr[numr] = i;
		numr++;
		}
	}
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i] && activrol[i])
		{
		ctsa[numa] = i;
		numa++;
		}
	}
	if(numa > 0)
	{
	   id = random_num(0, numa-1);
	   g_cop[ctsa[id]] = true;
	   activrol[ctsa[id]] = false;
	   return PLUGIN_CONTINUE
	}
	if(numr > 0)
	{
	   id = random_num(0, numr-1);
	   g_cop[ctsr[id]] = true;
	   return PLUGIN_CONTINUE
	}
	else if(num > 0)
	{
	   id = random_num(0, num-1);
	   g_cop[cts[id]] = true;
	}
	return PLUGIN_CONTINUE
}

public give_sheff()
{
	new id, num = 0, numr = 0;
	new cts[31];
	new ctsr[31];
	new ctsa[31], numa = 0;

	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i])
		{
		cts[num] = i;
		num++;
		}
	}
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i] && g_grr[i] >= 2)
		{
		ctsr[numr] = i;
		numr++;
		}
	}
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i] && activrol[i])
		{
		ctsa[numa] = i;
		numa++;
		}
	}
	if(numa > 0)
	{
	   id = random_num(0, numa-1);
	   g_sheff[ctsa[id]] = true;
	   activrol[ctsa[id]] = false;
	   return PLUGIN_CONTINUE
	}
	if(numr > 0)
	{
	   id = random_num(0, numr-1);
	   g_sheff[ctsr[id]] = true;
	   return PLUGIN_CONTINUE
	}
	else if(num > 0)
	{
	   id = random_num(0, num-1);
	   g_sheff[cts[id]] = true;
	}
	return PLUGIN_CONTINUE
}
public give_mafia(taskid)
{
	new id, num = 0;
	new cts[31];
	new ctsa[31], numa = 0;

	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i])
		{
		cts[num] = i;
		num++;
		}
	}
	for(new i = 1;i <=32;i++)
	{
		if(!is_user_alive(i) || cs_get_user_team(i) != CS_TEAM_CT)
		continue;

		if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i] && activrol[i])
		{
		ctsa[numa] = i;
		numa++;
		}
	}
	if(numa > 0)
	{
	   id = random_num(0, numa-1);
	   g_mafia[ctsa[id]] = true;
	   activrol[ctsa[id]] = false;
	   return PLUGIN_CONTINUE
	}
	else if(num > 0)
	{
	   id = random_num(0, num-1);
	   g_mafia[cts[id]] = true;
	}
	return PLUGIN_CONTINUE
}
talk_rols()
{
	set_task(180.0, "naemnik_lose", TASKID_LOSE)
	timer1 = 0
	timer2 = 180
	timekill()
	is_gaming = true
	for(new i = 1; i <= MAXPLAYERS; i++)
	{
		if(is_user_alive(i))
		{
			if(g_naemnik[i])
			{
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			give_item(i, "weapon_awp")
			give_item(i, "weapon_usp")
			engclient_cmd(i, "weapon_knife")
			set_dhudmessage(123, 73, 50, -1.0, 0.70, 0, 6.0, 12.0)
			show_dhudmessage(i, "%L", LANG_SERVER, "GROLE_KILLER")
			set_user_health(i, 100)
			copy(plrmdl[i], 63, ctmdl[2])
			set_user_info(i, "model", ctmdl[2])
			entity_set_int(i, EV_INT_skin, random_num(0, 2))
			g_grr[i] = 0
			}

			if(g_boss[i])
			{
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			set_dhudmessage(123, 73, 50, -1.0, 0.70, 0, 6.0, 12.0)
			show_dhudmessage(i, "%L", LANG_SERVER, "GROLE_BOSS")
			copy(plrmdl[i], 63, ctmdl[0])
			set_user_info(i, "model", ctmdl[0])
			entity_set_int(i, EV_INT_body, 1)
			g_grr[i] = 0
			}

			if(g_cop[i])
			{
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			give_item(i, "weapon_p228")
			give_item(i, "weapon_m3")
			set_pdata_int(i, OFFSET_P228_AMMO, 13)
			set_pdata_int(i, OFFSET_M3_AMMO, 8)
			set_user_health(i, 100)
			set_dhudmessage(123, 73, 50, -1.0, 0.70, 0, 6.0, 12.0)
			show_dhudmessage(i, "%L", LANG_SERVER, "GROLE_COP")
			copy(plrmdl[i], 63, ctmdl[1])
			set_user_info(i, "model", ctmdl[1])
			entity_set_int(i, EV_INT_body, 1)
			g_grr[i] = 0
			}
			if(g_sheff[i])
			{
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			give_item(i, "weapon_deagle")
			set_pdata_int(i, OFFSET_DEAGLE_AMMO, 21)
			can_use_prov[i] = true
			set_user_health(i, 100)
			set_dhudmessage(123, 73, 50, -1.0, 0.70, 0, 6.0, 12.0)
			show_dhudmessage(i, "%L", LANG_SERVER, "GROLE_SHEFF")
			copy(plrmdl[i], 63, ctmdl[3])
			set_user_info(i, "model", ctmdl[3])
			entity_set_int(i, EV_INT_body, 3)
			g_grr[i] = 0
			}
			if(g_mank[i])
			{
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			set_dhudmessage(123, 73, 50, -1.0, 0.70, 0, 6.0, 12.0)
			show_dhudmessage(i, "%L", LANG_SERVER, "GROLE_MAN")
			set_user_health(i, 100)
			copy(plrmdl[i], 63, ctmdl[2])
			set_user_info(i, "model", ctmdl[2])
			entity_set_int(i, EV_INT_skin, random_num(0, 2))
			g_grr[i] = 0
			}
			if(g_mafia[i])
			{
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			give_item(i, "weapon_tmp")
			give_item(i,"ammo_9mm")
			give_item(i,"ammo_9mm")
			give_item(i,"ammo_9mm")
			engclient_cmd(i, "weapon_knife")
			set_pev(i, pev_viewmodel2, _StandModels[1])
			set_pev(i, pev_weaponmodel2, _FistModels[0])
			set_dhudmessage(123, 73, 50, -1.0, 0.70, 0, 6.0, 12.0)
			show_dhudmessage(i, "%L", LANG_SERVER, "GROLE_MAF")
			set_user_health(i, 100)
			copy(plrmdl[i], 63, ctmdl[2])
			set_user_info(i, "model", ctmdl[2])
			entity_set_int(i, EV_INT_skin, random_num(0, 2))
			g_grr[i] = 0
			}

			if(!g_naemnik[i] && !g_boss[i] && !g_cop[i] && !g_mafia[i]&& !g_mank[i] && !g_sheff[i] && !g_mafia[i])
			{
			strip_user_weapons(i)
			give_item(i, "weapon_knife")
			set_dhudmessage(123, 73, 50, -1.0, 0.70, 0, 6.0, 12.0)
			show_dhudmessage(i, "%L", LANG_SERVER, "GROLE_GR")
			copy(plrmdl[i], 63, ctmdl[2])
			set_user_health(i, 100)
			set_user_info(i, "model", ctmdl[2])
			entity_set_int(i, EV_INT_skin, random_num(0, 2))
			g_grr[i]++;
			}
		}
	}
}
public fwd_cmd_start(id, uc_handle, seed)
{
	if(!is_user_alive(id))
		return FMRES_IGNORED

	static iWpn;
	iWpn = get_pdata_cbase(id, CBASE_CURRWPN_ENT);


	if(g_naemnik[id] || g_naemnik_k[id] || g_man[id] || g_mank[id] || g_cop[id])
		return FMRES_IGNORED

	if(g_mafia[id] && g_maffkilled == 2 && pev_valid(iWpn) && (get_pdata_int(iWpn, OFFSET_ENT_TO_INDEX) != CSW_KNIFE))
		return FMRES_IGNORED

	if(g_sheff[id])
	{
		if((get_uc(uc_handle, UC_Buttons) & IN_USE) && !(pev(id, pev_oldbuttons) & IN_USE))
		{
			if(g_sheff[id])
				proverka(id)
		}
		return FMRES_IGNORED
	}

	static buttons
	buttons = get_uc(uc_handle, UC_Buttons)

	if(buttons & IN_ATTACK2 || buttons & IN_ATTACK)
	{
	}

	buttons &= ~IN_ATTACK2
	buttons &= ~IN_ATTACK
	set_uc(uc_handle, UC_Buttons, buttons)

	return FMRES_HANDLED
}

public proverka(id)
{
	if(can_use_prov[id])
	{
		static vic, bd
		get_user_aiming(id, vic, bd, 50)
		new namev[32]
		get_user_name(vic,namev,31)
		if(is_user_alive(vic))
		{

			if(g_man[vic] || g_mank[vic])
			{
				if(maska[vic])
				{
				maska[vic] = false
				ColorChat(id, "%L", LANG_SERVER, "CHECK_WRONG")
				ColorChat(vic, "%L", LANG_SERVER, "CHECK_YOUWRONG")
				can_use_prov[id] = false
				set_task(30.0, "reset_cooldown", id+TASK_COOLDOWN)
				}
				else
				{
				ColorChat(id, "%L", LANG_SERVER, "CHECK_MAN", namev)
				ColorChat(vic, "%L", LANG_SERVER, "CHECK_YOU", namev)
				can_use_prov[id] = false
				set_task(30.0, "reset_cooldown", id+TASK_COOLDOWN)
				checking[vic] = true
				}
				client_cmd(id, "mp3 play ^"sound/%s^"", plsnd[2])
				client_cmd(vic, "mp3 play ^"sound/%s^"", plsnd[2])
			}
			if(g_naemnik[vic] || g_naemnik_k[vic])
			{
				if(maska[vic])
				{
				maska[vic] = false
				ColorChat(id, "%L", LANG_SERVER, "CHECK_WRONG")
				ColorChat(vic, "%L", LANG_SERVER, "CHECK_YOUWRONG")
				can_use_prov[id] = false
				set_task(30.0, "reset_cooldown", id+TASK_COOLDOWN)
				}
				else
				{
				ColorChat(id, "%L", LANG_SERVER, "CHECK_KILLER", namev)
				ColorChat(vic, "%L", LANG_SERVER, "CHECK_YOU", namev)
				can_use_prov[id] = false
				set_task(30.0, "reset_cooldown", id+TASK_COOLDOWN)
				checking[vic] = true
				}
				client_cmd(id, "mp3 play ^"sound/%s^"", plsnd[2])
				client_cmd(vic, "mp3 play ^"sound/%s^"", plsnd[2])
			}
			if(g_mafia[vic])
			{
				if(maska[vic])
				{
				maska[vic] = false
				ColorChat(id, "%L", LANG_SERVER, "CHECK_WRONG")
				ColorChat(vic, "%L", LANG_SERVER, "CHECK_YOUWRONG")
				can_use_prov[id] = false
				set_task(30.0, "reset_cooldown", id+TASK_COOLDOWN)
				}
				else
				{
				ColorChat(id, "%L", LANG_SERVER, "CHECK_MAF", namev)
				ColorChat(vic, "%L", LANG_SERVER, "CHECK_YOU", namev)
				can_use_prov[id] = false
				set_task(30.0, "reset_cooldown", id+TASK_COOLDOWN)
				checking[vic] = true
				}
				client_cmd(id, "mp3 play ^"sound/%s^"", plsnd[2])
				client_cmd(vic, "mp3 play ^"sound/%s^"", plsnd[2])
			}
			if(!g_naemnik[vic] && !g_boss[vic] && !g_mafia[vic] && !g_cop[vic] && !g_man[vic] && !g_mank[vic])
			{
				if(maska[vic])
				{
				maska[vic] = false
				ColorChat(id, "%L", LANG_SERVER, "CHECK_WRONG")
				ColorChat(vic, "%L", LANG_SERVER, "CHECK_YOUWRONG")
				can_use_prov[id] = false
				set_task(30.0, "reset_cooldown", id+TASK_COOLDOWN)
				}
				else
				{
				ColorChat(id, "%L", LANG_SERVER, "CHECK_GR", namev)
				ColorChat(vic, "%L", LANG_SERVER, "CHECK_YOU", namev)
				can_use_prov[id] = false
				set_task(30.0, "reset_cooldown", id+TASK_COOLDOWN)
				checking[vic] = true
				}
				client_cmd(id, "mp3 play ^"sound/%s^"", plsnd[2])
				client_cmd(vic, "mp3 play ^"sound/%s^"", plsnd[2])
			}
			if(g_cop[vic] || g_boss[vic])
			{
				ColorChat(id, "%L", LANG_SERVER, "CHECK_NOT", namev)
			}
		}
	}
	else
	{
		ColorChat(id, "%L", LANG_SERVER, "CHECK_NOTRELOAD")
	}
	return PLUGIN_CONTINUE
}

public reset_cooldown(taskid)
{
	new id = taskid - TASK_COOLDOWN
	if(is_user_alive(id) && g_sheff[id])
	{
		can_use_prov[id] = true
		ColorChat(id, "%L", LANG_SERVER, "CHECK_RELOAD")
	}
	return PLUGIN_CONTINUE;
}
public clearman(taskid)
{
	new i = taskid - TASK_CLEARMAN
	if(is_user_alive(i) && (g_man[i] || g_mank[i]) && !g_store_axe[i])
	{
		copy(plrmdl[i], 63, ctmdl[2])
		set_user_info(i, "model", ctmdl[2])
		entity_set_int(i, EV_INT_skin, random_num(0, 2))
		set_pev(i, pev_viewmodel2, _ManModels[1])
		set_pev(i, pev_weaponmodel2, _ManModels[0])
		ColorChat(i, "%L", LANG_SERVER, "MAN_CD")
	}
	return PLUGIN_CONTINUE;
}

public round_end()
{
	for(new i = 1; i <= MAXPLAYERS; i++)
	{
		respvip[i] = false
		checking[i] = false
		remove_task(i)
		if(is_user_alive(i))
			fm_set_user_nvg(i, 0)
		ColorChat(i, "%L", LANG_SERVER, "WONMONEYS", AllRewMoneys[i])
	}
	roundend = true
	set_cvar_num("mp_friendlyfire", 0)
	remove_task()
	remove_task(TASKID_LOSE)
	remove_task(TASKID_KILLED)
	remove_task(TASKID_MERKILL)
	remove_task(2654)
	remove_task(2655)
	remove_task(2656)
	remove_task(TASK_EXG)
	timer1 = 0
	timer2 = 0
	timer3 = 0
	is_gaming = false
	is_killed = false
	is_freeze = false
	g_maffkilled = 0
	g_maffkill = -1
	set_task(1.5, "stop_sound")

}

public msg_textmsg(msgid, dest, id)
{
	if(get_msg_arg_int(1) != 4)
		return PLUGIN_CONTINUE

	static txtmsg[25], winmsg[32]
	get_msg_arg_string(2, txtmsg, 24)

	if(equal(txtmsg[1], "Game_bomb_drop"))
		return PLUGIN_HANDLED

	else if(equal(txtmsg[1], "Terrorists_Win"))
	{
		return PLUGIN_HANDLED
	}
	else if(equal(txtmsg[1], "Target_Saved") || equal(txtmsg[1], "CTs_Win"))
	{
		formatex(winmsg, 31, "Round end")
		set_msg_arg_string(2, winmsg)
	}
	return PLUGIN_CONTINUE
}

public stop_sound()
{
	client_cmd(0, "stopsound")
}

public resp(id)
{
	if(get_user_flags(id) & FLAG_VIP)
	{
		if(!roundend && respvip[id] == false)
		{
			new name[32]
			get_user_name(id,name,31)
			nocheck[id] = true
			cs_set_user_team(id, CS_TEAM_CT, CS_CT_URBAN);
			ExecuteHamB(Ham_CS_RoundRespawn, id)
			strip_user_weapons(id)
			give_item(id, "weapon_knife")
			set_dhudmessage(123, 73, 50, -1.0, 0.70, 0, 6.0, 12.0)
			show_dhudmessage(id, "%L", LANG_SERVER, "GROLE_GR")
			copy(plrmdl[id], 63, ctmdl[2])
			set_user_health(id, 100)
			set_user_info(id, "model", ctmdl[2])
			entity_set_int(id, EV_INT_skin, random_num(0, 2))
			ColorChat(0, "%L", LANG_SERVER, "VIP_RESP",name)
			respvip[id] = true
			checking[id] = true

		}
	}
}

public kill_event(idv, ida, sgibs)
{
	if(idv == g_iFakeplayer)
		return PLUGIN_CONTINUE
	if(get_user_flags(idv) & FLAG_VIP)
		set_task(5.0, "resp", idv)
	set_msg_block(gmsgMoney, BLOCK_ONCE)
	set_msg_block(gmsgDeathMsg, BLOCK_ONCE)
	set_msg_block(gmsgScoreInfo, BLOCK_ONCE)
	if(!is_user_alive(ida))
		return PLUGIN_CONTINUE

	deaths[idv] += 1
	message_begin(MSG_BROADCAST, gmsgScoreInfo)
	write_byte(idv)
	write_short(wins[idv])
	write_short(deaths[idv])
	write_short(0)
	write_short(get_user_team(idv))
	message_end()
	message_begin(MSG_BROADCAST, gmsgScoreInfo)
	write_byte(ida)
	write_short(wins[ida])
	write_short(deaths[ida])
	write_short(0)
	write_short(get_user_team(ida))
	message_end()
	new namea[32], namev[32]
	get_user_name(ida,namea,31)
	get_user_name(idv,namev,31)
	if(g_naemnik[ida] && g_boss[idv])
	{
		is_killed = true
		remove_task(TASKID_LOSE)
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HKILLER_KILL", namev)
		ColorChat(0, "%L", LANG_SERVER, "KILLER_KILL", namev)
		//client_cmd(0,"speak ambience/siren")
		//set_task(8.0, "stop_sound")
		set_user_rendering(ida, kRenderFxGlowShell, 255, 0, 0, kRenderNormal,30)
		set_task(60.0, "naemnik_win")
		timer2 = 0
		timer3 = 60
		g_mer = -1
		timekiller()
		give_user_money(ida, get_pcvar_num(MERDEAD))
	}
	if(g_naemnik[ida] && !g_boss[idv] && !g_cop[idv] && !g_man[idv] && !g_mank[idv] && !g_sheff[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HKILLER_ERROR", namea, namev)
		ColorChat(0, "%L", LANG_SERVER, "KILLER_ERROR", namea, namev)
		user_kill(ida)
		g_killer = -1
		if(cs_get_user_money(ida) > get_pcvar_num(MEKILL))
		{
			cs_set_user_money(idv, cs_get_user_money(idv) + get_pcvar_num(MEKILL))
			cs_set_user_money(ida, cs_get_user_money(ida) - get_pcvar_num(MEKILL))
		}
		else
		{
			cs_set_user_money(idv, cs_get_user_money(idv) + cs_get_user_money(ida))
			cs_set_user_money(ida, 0)
		}
	}
	if(g_cop[ida] && !g_naemnik[idv] && !g_boss[idv] && !g_man[idv] && !g_mank[idv] && !g_mafia[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HCOP_ERROR", namea, namev)
		ColorChat(0, "%L", LANG_SERVER, "COP_ERROR", namea)
		user_kill(ida)
		set_task(5.0, "resp", ida)
		if(cs_get_user_money(ida) > get_pcvar_num(MEKILLCOP))
		{
			cs_set_user_money(idv, cs_get_user_money(idv) + get_pcvar_num(MEKILLCOP))
			cs_set_user_money(ida, cs_get_user_money(ida) - get_pcvar_num(MEKILLCOP))
		}
		else
		{
			cs_set_user_money(idv, cs_get_user_money(idv) + cs_get_user_money(ida))
			cs_set_user_money(ida, 0)
		}
	}
	if(g_sheff[ida] && !g_naemnik[idv] && !g_boss[idv] && !g_man[idv] && !g_mank[idv] && !g_sheff[idv] && !g_mafia[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HSHEFF_ERROR", namea, namev)
		ColorChat(0, "%L", LANG_SERVER, "SHEFF_ERROR", namea)
		user_kill(ida)
		set_task(5.0, "resp", ida)
		if(cs_get_user_money(ida) > get_pcvar_num(MEKILLCOP))
		{
			cs_set_user_money(idv, cs_get_user_money(idv) + get_pcvar_num(MEKILLCOP))
			cs_set_user_money(ida, cs_get_user_money(ida) - get_pcvar_num(MEKILLCOP))
		}
		else
		{
			cs_set_user_money(idv, cs_get_user_money(idv) + cs_get_user_money(ida))
			cs_set_user_money(ida, 0)
		}
	}
	if(g_cop[ida] && g_naemnik[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HCOP_KILLKILLER", namea, namev)
		ColorChat(0, "%L", LANG_SERVER, "COP_KILLKILLER", namea, namev)
		give_user_money(ida,  get_pcvar_num(COPKILL))
		g_killer = -1
	}
	if(g_sheff[ida] && g_naemnik[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HSHEFF_KILLKILLER", namea, namev)
		ColorChat(0, "%L", LANG_SERVER, "SHEFF_KILLKILLER", namea, namev)
		give_user_money(ida,  get_pcvar_num(COPKILL))
		g_killer = -1
	}
	if(g_naemnik[ida] && g_man[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HKILLER_KILLMAN", namev)
		give_user_money(ida,  get_pcvar_num(MANDEAD))
		ColorChat(0, "%L", LANG_SERVER, "KILLER_KILLMAN", namev)
	}
	if(g_naemnik[ida] && g_mank[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HKILLER_KILLMAN", namev)
		give_user_money(ida,  get_pcvar_num(MANDEAD))
		ColorChat(0, "%L", LANG_SERVER, "KILLER_KILLMAN", namev)
	}
	if((g_mank[ida] || g_man[ida]) && g_naemnik[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HMAN_KILLKILLER", namev)
		ColorChat(0, "%L", LANG_SERVER, "MAN_KILLKILLER", namev)
		copy(plrmdl[ida], 63, ctmdl[2])
		set_user_info(ida, "model", ctmdl[2])
		entity_set_int(ida, EV_INT_skin, 3)
		set_pev(ida, pev_viewmodel2, _MankModels[1])
		set_pev(ida, pev_weaponmodel2, _MankModels[0])
		give_user_money(ida,  get_pcvar_num(MANWIN))
		g_killer = -1
	}
	if(g_cop[ida] && (g_man[idv] || g_mank[idv]))
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HCOP_KILLMAN", namea, namev)
		ColorChat(0, "%L", LANG_SERVER, "COP_KILLMAN", namea, namev)
		give_user_money(ida,  get_pcvar_num(MANDEAD))
	}
	if(g_sheff[ida] && (g_man[idv] || g_mank[idv]))
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HSHEFF_KILLMAN", namea, namev)
		ColorChat(0, "%L", LANG_SERVER, "SHEFF_KILLMAN", namea, namev)
		give_user_money(ida,  get_pcvar_num(MANDEAD))
	}
	if(g_cop[ida] && g_mafia[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HCOP_KILLMAF", namea, namev)
		ColorChat(0, "%L", LANG_SERVER, "COP_KILLMAF", namea, namev)
		give_user_money(ida,  get_pcvar_num(MANDEAD))
		g_mafia[idv] = false
	}
	if(g_sheff[ida] && g_mafia[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HSHEFF_KILLMAF", namea, namev)
		ColorChat(0, "%L", LANG_SERVER, "SHEFF_KILLMAF", namea, namev)
		give_user_money(ida,  get_pcvar_num(MANDEAD))
		g_mafia[idv] = false
	}
	if(g_naemnik[ida] && g_cop[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HKILLER_KILLCOP", namev)
		ColorChat(0, "%L", LANG_SERVER, "KILLER_KILLCOP", namev)
		give_user_money(ida,  get_pcvar_num(COPDEAD))
	}
	if(g_naemnik[ida] && g_sheff[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HKILLER_KILLSHEFF", namev)
		ColorChat(0, "%L", LANG_SERVER, "KILLER_KILLSHEFF", namev)
		give_user_money(ida,  get_pcvar_num(COPDEAD))
	}
	if(g_mank[ida] && g_cop[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HMANK_KILLCOP", namev)
		ColorChat(0, "%L", LANG_SERVER, "MANK_KILLCOP", namev)
		give_user_money(ida,  get_pcvar_num(MANKILL))
		client_cmd(0, "mp3 play ^"sound/%s^"", plsnd[4])
		copy(plrmdl[ida], 63, ctmdl[2])
		set_user_info(ida, "model", ctmdl[2])
		entity_set_int(ida, EV_INT_skin, 3)
		set_pev(ida, pev_viewmodel2, _MankModels[1])
		set_pev(ida, pev_weaponmodel2, _MankModels[0])
		remove_task(ida+TASK_CLEARMAN)
		set_task(30.0, "clearman", ida+TASK_CLEARMAN)
	}
	if(g_mank[ida] && g_sheff[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HMANK_KILLSHEFF", namev)
		ColorChat(0, "%L", LANG_SERVER, "MANK_KILLSHEFF", namev)
		give_user_money(ida,  get_pcvar_num(MANKILL))
		client_cmd(0, "mp3 play ^"sound/%s^"", plsnd[4])
		copy(plrmdl[ida], 63, ctmdl[2])
		set_user_info(ida, "model", ctmdl[2])
		entity_set_int(ida, EV_INT_skin, 3)
		set_pev(ida, pev_viewmodel2, _MankModels[1])
		set_pev(ida, pev_weaponmodel2, _MankModels[0])
		remove_task(ida+TASK_CLEARMAN)
		set_task(30.0, "clearman", ida+TASK_CLEARMAN)
	}
	if(g_mank[ida] && g_mafia[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HMANK_KILLMAF", namev)
		ColorChat(0, "%L", LANG_SERVER, "MANK_KILLMAF", namev)
		give_user_money(ida,  get_pcvar_num(MANKILL))
		client_cmd(0, "mp3 play ^"sound/%s^"", plsnd[4])
		copy(plrmdl[ida], 63, ctmdl[2])
		set_user_info(ida, "model", ctmdl[2])
		entity_set_int(ida, EV_INT_skin, 3)
		set_pev(ida, pev_viewmodel2, _MankModels[1])
		set_pev(ida, pev_weaponmodel2, _MankModels[0])
		remove_task(ida+TASK_CLEARMAN)
		set_task(30.0, "clearman", ida+TASK_CLEARMAN)
		g_mafia[idv] = false
	}
	else if(g_mank[ida] && !g_cop[idv] && !g_sheff[idv] && !g_mafia[idv] && !g_naemnik[idv])
	{
		set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
		show_hudmessage(0, "%L", LANG_SERVER, "HMANK_KILLGR", namev)
		ColorChat(0, "%L", LANG_SERVER, "MANK_KILLGR", namev)
		copy(plrmdl[ida], 63, ctmdl[2])
		set_user_info(ida, "model", ctmdl[2])
		entity_set_int(ida, EV_INT_skin, 3)
		set_pev(ida, pev_viewmodel2, _MankModels[1])
		set_pev(ida, pev_weaponmodel2, _MankModels[0])
		give_user_money(ida,  get_pcvar_num(MANKILL))
		client_cmd(0, "mp3 play ^"sound/%s^"", plsnd[4])
		remove_task(ida+TASK_CLEARMAN)
		set_task(30.0, "clearman", ida+TASK_CLEARMAN)
	}
	if(g_mafia[ida] && (g_maffkill == idv))
	{
		g_maffkilled = 1
		client_cmd(0, "mp3 play ^"sound/%s^"", plsnd[3])
		if(g_man[idv] || g_mank[idv])
		{
			set_hudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
			show_hudmessage(0, "%L", LANG_SERVER, "HMAF_KILLMAN", namev)
			ColorChat(0, "%L", LANG_SERVER, "MAF_KILLMAN", namev)
			for(new i = 1; i <= MAXPLAYERS; i++)
			{
				if(g_mafia[i])
					give_user_money(i,  get_pcvar_num(MAFKILL))
			}
		}
		else if(g_cop[idv])
		{
			set_hudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
			show_hudmessage(0, "%L", LANG_SERVER, "HMAF_KILLCOP", namev)
			ColorChat(0, "%L", LANG_SERVER, "MAF_KILLCOP", namev)
			for(new i = 1; i <= MAXPLAYERS; i++)
			{
				if(g_mafia[i])
					give_user_money(i,  get_pcvar_num(MAFKILL))
			}
		}
		else if(g_sheff[idv])
		{
			set_hudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
			show_hudmessage(0, "%L", LANG_SERVER, "HMAF_KILLSHEFF", namev)
			ColorChat(0, "%L", LANG_SERVER, "MAF_KILLSHEFF", namev)
			for(new i = 1; i <= MAXPLAYERS; i++)
			{
				if(g_mafia[i])
					give_user_money(i,  get_pcvar_num(MAFKILL))
			}
		}
		else if(!g_man[ida] && !g_cop[idv] && !g_naemnik[idv] && !g_sheff[idv] && !g_mafia[idv])
		{
			set_hudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
			show_hudmessage(0, "%L", LANG_SERVER, "HMAF_KILLGR", namev)
			ColorChat(0, "%L", LANG_SERVER, "MAF_KILLGR", namev)
			for(new i = 1; i <= MAXPLAYERS; i++)
			{
				if(g_mafia[i])
					give_user_money(i,  get_pcvar_num(MAFKILL))
			}
		}
	}
	if(g_store_axe[ida])
	{
		set_pev(ida, pev_viewmodel2, _ManaxeModels[1])
		set_pev(ida, pev_weaponmodel2, _ManaxeModels[0])
	}
	return PLUGIN_CONTINUE
}

public MsgDeathMsg( const iMsgId, const iMsgDest, const id ) {
		if(roundend)
			return PLUGIN_HANDLED;

		if( get_msg_arg_int( 2 ) == g_iFakeplayer )
			return PLUGIN_HANDLED;

		new i = get_msg_arg_int(2)
		new ia = get_msg_arg_int(1)
		message_begin(MSG_BROADCAST, gmsgScoreInfo)
		write_byte(i)
		write_short(wins[i])
		write_short(deaths[i])
		write_short(0)
		write_short(get_user_team(i))
		message_end()
		message_begin(MSG_BROADCAST, gmsgScoreInfo)
		write_byte(ia)
		write_short(wins[ia])
		write_short(deaths[ia])
		write_short(0)
		write_short(get_user_team(ia))
		message_end()
		if(  get_msg_arg_int( 2 ) == g_killer )
		{
			set_task(6.0, "killerend", TASKID_KILLED)
		}
		else if( !is_killed && get_msg_arg_int( 2 ) == g_mer )
		{
			set_task(6.0, "merend", TASKID_MERKILL)
		}
		if(is_gaming && GetCountMan() == 0 && GetCountmafia() == 0)
		{
			set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
			show_dhudmessage(0, "%L", LANG_SERVER, "GR_WIN")
			endgame()
		}
		if(g_mafia[i])
		{
			g_mafia[i] = false
		}
		return PLUGIN_CONTINUE;
}

public sound_emit(id, channel, sample[])
{
	if(is_user_alive(id) && g_store_axe[id] && equal(sample, "weapons/knife_", 14))
	{
		switch(sample[17])
		{
			case('w'):
			{
				emit_sound(id, CHAN_WEAPON, _AxeSounds[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
			}
			case('1', '2'):
			{
				emit_sound(id, CHAN_WEAPON, _AxeSounds[1], 1.0, ATTN_NORM, 0, PITCH_LOW)
			}
			case('b'):
			{
				emit_sound(id, CHAN_WEAPON, _AxeSounds[2], 1.0, ATTN_NORM, 0, PITCH_NORM)
			}
			case('s'):
			{
				emit_sound(id, CHAN_WEAPON, _AxeSounds[3], 1.0, ATTN_NORM, 0, PITCH_NORM)
			}
		}
		return FMRES_SUPERCEDE
	}
	else if(is_user_alive(id) && equal(sample, "weapons/knife_", 14))
	{
		switch(sample[17])
		{
			case('b'):
			{
				emit_sound(id, CHAN_WEAPON, "weapons/cbar_hitbod2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
			}
			case('w'):
			{
				emit_sound(id, CHAN_WEAPON, "weapons/cbar_hitbod1.wav", 1.0, ATTN_NORM, 0, PITCH_LOW)
			}
			case('1', '2'):
			{
				emit_sound(id, CHAN_WEAPON, "weapons/bullet_hit2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
			}
		}
		return FMRES_SUPERCEDE
	}
	return FMRES_IGNORED
}

public fwdPlayerPreThink( id ) {
	if( is_user_alive(id) )
	{
		static iWpn;
		iWpn = get_pdata_cbase(id, CBASE_CURRWPN_ENT);
		if(g_mafia[id] && g_maffkilled != 2)
		{
			if(pev_valid(iWpn))
			{
				if(get_pdata_int(iWpn, OFFSET_ENT_TO_INDEX) != CSW_KNIFE)
				{
					engclient_cmd(id, "weapon_knife");
					set_pev(id, pev_viewmodel2, _StandModels[1])
					set_pev(id, pev_weaponmodel2, _FistModels[0])
				}
			}
		}
		static Float:fGmTime;
		fGmTime = get_gametime();

		if(gLastAimDetail[id] < fGmTime) {
			new iTgt, iBody;
			get_user_aiming(id, iTgt, iBody, 3000);

			if( is_user_alive(iTgt) ) {
				new szMessage[256];

				if(g_mafia[id] && (g_maffkill == iTgt))
					formatex( szMessage, 255, "%L %%p2", LANG_SERVER, "NAME_DEBTOR")
				else if(g_mafia[id] && g_mafia[iTgt])
				{
					formatex( szMessage, 255, "%L %%p2", LANG_SERVER, "NAME_MAFIA")
				}
				else if(g_boss[iTgt])
					formatex( szMessage, 255, "%L %%p2", LANG_SERVER, "NAME_BOSS")
				else if(g_sheff[iTgt])
					formatex( szMessage, 255, "%L %%p2", LANG_SERVER, "NAME_SHERIFF")
				else if(g_cop[iTgt])
					formatex( szMessage, 255, "%L %%p2", LANG_SERVER, "NAME_COP")
				else if((g_cop[id] || g_sheff[id]) && checking[iTgt])
				{
					if(g_man[iTgt] || g_mank[iTgt])
						formatex( szMessage, 255, "%L %%p2", LANG_SERVER, "NAME_MANIAC")
					else if(g_naemnik[iTgt])
						formatex( szMessage, 255, "%L %%p2", LANG_SERVER, "NAME_KILLER")
					else if(g_mafia[iTgt])
						formatex( szMessage, 255, "%L %%p2", LANG_SERVER, "NAME_MAFIA")
					else if(!g_cop[iTgt] && !g_naemnik[iTgt] && !g_man[iTgt] && !g_mank[iTgt] && !g_sheff[iTgt] && !g_mafia[iTgt] && !g_naemnik_k[iTgt])
						formatex( szMessage, 255, "%L %%p2", LANG_SERVER, "NAME_GR")
				}
				else
					formatex( szMessage, 255, " ");

				message_begin( MSG_ONE_UNRELIABLE, gMsgStatusText, _, id );
				write_byte( 0 );
				write_string( szMessage );
				message_end();

				message_begin( MSG_ONE_UNRELIABLE, gMsgStatusValue, _, id );
				write_byte( 2 );
				write_short( iTgt );
				message_end();
			} else {
				message_begin( MSG_ONE_UNRELIABLE, gMsgStatusText, _, id );
				write_byte( 0 );
				write_string(" ");
				message_end();
			}

			gLastAimDetail[id] = fGmTime + 0.2;
		}
	}
	return FMRES_IGNORED;
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
	if (victim != attacker && is_user_connected(attacker))
	{
		if(g_man[attacker] && g_boss[victim])
		{
			new name[32], i = attacker
			get_user_name(i,name,31)
			set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
			show_hudmessage(0, "%L", LANG_SERVER, "HMAN_TOUCHBOSS", name)
			ColorChat(0, "%L", LANG_SERVER, "MAN_TOUCHBOSS", name)
			set_user_frags(attacker, 0)
			user_kill(attacker)
			set_task(5.0, "resp", attacker)
			SetHamParamFloat(4, 0.0)
		}
		else if(g_mank[attacker] && g_boss[victim])
		{
			new name[32], i = attacker
			get_user_name(i,name,31)
			set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
			show_hudmessage(0, "%L", LANG_SERVER, "HMAN_TOUCHBOSS", name)
			ColorChat(0, "%L", LANG_SERVER, "MAN_TOUCHBOSS", name)
			set_user_frags(attacker, 0)
			user_kill(attacker)
			set_task(5.0, "resp", attacker)
			SetHamParamFloat(4, 0.0)
		}
		else if((g_mank[attacker] || g_man[attacker]) && !g_store_axe[attacker])
		{
			SetHamParamFloat(4, damage * float(3))
		}
		else if(g_mafia[attacker] && (g_maffkill != victim))
		{
			SetHamParamFloat(4, 0.0)
			if(!checking[attacker])
			{
				new name[32]
				get_user_name(attacker,name,31)
				checking[attacker] = true
				set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
				show_hudmessage(0, "%L", LANG_SERVER, "HMAF_TOUCHWRONG")
				ColorChat(0, "%L", LANG_SERVER, "MAF_TOUCHWRONG")
			}
		}
		else if(!g_store_axe[attacker])
		{
			SetHamParamFloat(4, damage * float(2))
		}
		else if(g_store_axe[attacker])
		{
			SetHamParamFloat(4, damage * float(6))
		}
		if(g_cop[attacker] && g_boss[victim])
		{
			new name[32], i = attacker
			get_user_name(i,name,31)
			set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
			show_hudmessage(0, "%L", LANG_SERVER, "HCOP_TOUCHBOSS", name)
			ColorChat(0, "%L", LANG_SERVER, "COP_TOUCHBOSS", name)
			set_user_frags(attacker, 0)
			user_kill(attacker)
			set_task(5.0, "resp", attacker)
			SetHamParamFloat(4, 0.0)
		}
		if(g_sheff[attacker] && g_boss[victim])
		{
			new name[32], i = attacker
			get_user_name(i,name,31)
			set_hudmessage(123, 73, 50, 0.09, -1.0, 0, 6.0, 6.0, 0.1, 0.2, 4)
			show_hudmessage(0, "%L", LANG_SERVER, "HSHEFF_TOUCHBOSS", name)
			ColorChat(0, "%L", LANG_SERVER, "SHEFF_TOUCHBOSS", name)
			set_user_frags(attacker, 0)
			user_kill(attacker)
			set_task(5.0, "resp", attacker)
			SetHamParamFloat(4, 0.0)
		}
		if(g_sheff[attacker] && g_cop[victim] || g_cop[attacker] && g_cop[victim] || g_cop[attacker] && g_sheff[victim])
		{
			SetHamParamFloat(4, 0.0)
		}
	}
	return FMRES_IGNORED;
}

public naemnik_win()
{
	new name[32], i = g_killer
	get_user_name(i,name,31)
	g_naemnik[i] = false
	g_mafia[i] = true
	g_mer = -1
	strip_user_weapons(i)
	give_item(i, "weapon_knife")
	give_item(i, "weapon_tmp")
	give_item(i,"ammo_9mm")
	give_item(i,"ammo_9mm")
	give_item(i,"ammo_9mm")
	engclient_cmd(i, "weapon_knife")
	set_user_rendering(i, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
	ColorChat(i, "%L", LANG_SERVER, "KILLER_MAFIA")
	give_user_money(i, get_pcvar_num(KILLWIN))
}

public naemnik_lose()
{
	if(g_killer != -1)
	{
		new name[32], i = g_killer, im = g_mer
		get_user_name(i,name,31)
		set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 6.0, 4.0, 0.1, 0.2)
		show_dhudmessage(0, "%L", LANG_SERVER, "KILLER_LOST", name)
		g_killer = -1
		g_naemnik[i] = false
		strip_user_weapons(i)
		give_item(i, "weapon_knife")
		give_user_money(im, get_pcvar_num(MERWIN))
	}
}

public endgame( ) {
	if(is_user_alive(g_iFakeplayer))
		fakedamage( g_iFakeplayer, "worldspawn", 100.0, DMG_GENERIC );
}
public endgamem( ) {
	if(is_user_alive(g_iFakeplayer))
		fakedamage( g_iFakeplayer, "worldspawn", 100.0, DMG_GENERIC );
	set_cvar_num("sv_restartround",1)
}

public native_merkilled()
	return is_killed

public native_gaming()
	return is_gaming

public native_freeze()
	return is_freeze

public native_get_user_killer(id)
	return g_naemnik[id]

public native_get_user_mer(id)
	return g_boss[id]

public native_get_user_cop(id)
	return g_cop[id]

public native_get_user_killerk(id)
	return g_naemnik_k[id]

public native_get_user_man(id)
	return g_man[id]

public native_get_user_mank(id)
	return g_mank[id]

public native_get_user_kom(id)
	return g_sheff[id]

public native_get_user_mafia(id)
	return g_mafia[id]

public native_get_user_mask(id)
	return maska[id]

public native_get_user_rol(id)
	return activrol[id]

public native_get_user_check(id)
	return checking[id]

public native_get_user_debt(id)
{
	return (id == g_maffkill) ? true : false
}

public fw_ClientUserInfoChanged(id)
{
	if(!task_exists(id+43434))
	{
		static currentmodel[32]
		get_user_info(id, "model", currentmodel, charsmax(currentmodel))
		if(!equal(currentmodel, plrmdl[id]))
		{
			set_user_info(id, "model", plrmdl[id])
			set_task(0.1,"handle", id+43434)
		}
	}

	return FMRES_IGNORED;
}

public handle()
{
}

stock GetCountCops()
{
	static i, count;

	for (i = 1, count = 0; i <= maxplayers; i++)
		if (is_user_alive(i) && g_cop[i]) count++;

	return count;
}

stock GetCountGR()
{
	static i, count;

	for (i = 1, count = 0; i <= maxplayers; i++)
		if (is_user_alive(i) && !g_naemnik[i] && !g_cop[i] && !g_boss[i] && !g_man[i] && !g_mank[i] && !g_sheff[i] && !g_mafia[i] && !g_naemnik_k[i] && i != g_iFakeplayer) count++;

	return count;
}

stock GetCountBoss()
{
	static i, count;

	for (i = 1, count = 0; i <= maxplayers; i++)
		if (is_user_alive(i) && g_boss[i]) count++;

	return count;
}

stock GetCountSheff()
{
	static i, count;

	for (i = 1, count = 0; i <= maxplayers; i++)
		if (is_user_alive(i) && g_sheff[i]) count++;

	return count;
}

stock GetCountMan()
{
	static i, count;

	for (i = 1, count = 0; i <= maxplayers; i++)
		if (is_user_alive(i) && g_mank[i]) count++;

	return count;
}

stock GetCountKiller()
{
	static i, count;

	for (i = 1, count = 0; i <= maxplayers; i++)
		if (is_user_alive(i) && g_naemnik[i]) count++;

	return count;
}

public server_changelevel(map[])
	mapchange = true

stock GetCountmafia()
{
	static i, count;

	for (i = 1, count = 0; i <= maxplayers; i++)
		if (is_user_alive(i) && (g_naemnik[i] || g_mafia[i])) count++;

	return count;
}

stock GetCountmaf()
{
	static i, count;

	for (i = 1, count = 0; i <= maxplayers; i++)
		if (is_user_alive(i) && g_mafia[i]) count++;

	return count;
}

stock GetCountAliveCT()
{
	static i, count;

	for (i = 1, count = 0; i <= maxplayers; i++)
		if (is_user_alive(i) && cs_get_user_team( i ) == CS_TEAM_CT) count++;

	return count;
}

stock GetHudHideFlags()
{
	new iFlags
	if(g_bHideRaHeAr)
		iFlags |= HIDE_HUD_RAHEAR
	return iFlags
}

stock applyCVars()
{
	g_bHideRaHeAr = bool:get_pcvar_num(g_cvarHideRaHeAr)
}

stock give_user_money(id, money)
{
	if(get_playersnum() < 7)
	return PLUGIN_CONTINUE

	if(get_user_flags(id) & FLAG_VIP)
		money = money*3

	AllRewMoneys[id] += money
	if(get_user_flags(id) & FLAG_VIP)
	{
		if(cs_get_user_money(id) <= 22499)
			cs_set_user_money(id, cs_get_user_money(id) + money)
		else
		{
			cs_set_user_money(id, 22500)
			ColorChat(id, "%L", LANG_SERVER, "MONEY_VIPLIMIT")
		}
	}
	else
	{
		if(cs_get_user_money(id) <= 7499)
			cs_set_user_money(id, cs_get_user_money(id) + money)
		else
		{
			cs_set_user_money(id, 7500)
			ColorChat(id, "%L", LANG_SERVER, "MONEY_LIMIT")
		}
	}
	return PLUGIN_CONTINUE
}

stock ColorChat(const id, const input[], any:...)
{
	new count = 1, players[32]
	static msg[191]
	vformat(msg, 190, input, 3)

	replace_all(msg, 190, "!g", "^4") // Green Color
	replace_all(msg, 190, "!y", "^1") // Default Color
	replace_all(msg, 190, "!team", "^3") // Team Color

	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
}

stock fm_set_user_nvg(index, onoff = 1)
{
	static nvg
	nvg = get_pdata_int(index, OFFSET_NVG)

	set_pdata_int(index, OFFSET_NVG, onoff == 1 ? nvg | HAS_NVG : nvg & ~HAS_NVG)
	return 1
}
