Raised This Month: $ Target: $400
 0% 

Not printing message but just "s"


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
ish12321
Veteran Member
Join Date: May 2016
Old 07-14-2017 , 13:05   Not printing message but just "s"
Reply With Quote #1

I've automix(pimpspug) edited by Hartmann in which I'd done few edits..
I don't know why, but the plugin isn't printing any chat message but instead of each chat message its printing a plain yellow color letter "s"

Please someone check the code and tell me if there are any issues please
Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fvault>
#include <csx>
#include <cromchat>
#include <reapi>

#define PLUGIN "Auto-Mix"
#define VERSION "1.1.6-F"
#define AUTHOR "p1Mp(Edit:Hartmann)"

#define PREFIX "[ATG]"
#define TIME_MAX 150
#define SPAWN_TASKID 3000

#define ADMIN_NONE (1 << 26)

#define PLAYER 5
#define MenuCode 205
#define PDActiveItem 373

#define MAX_PLAYERS 33

new g_iTarget[33]	
new SET_CONST_TASKID
new gPlayersLeft
new gMaxPlayers
new gPug_ini_file[64]
new gCptT
new gCptCT
new g_iScore[2]
new g_iLastTeamScore[2]
static gNotRdy[400]
static gRdy[400]
new bool:g_bIsReady[33]
new Float:gTypedCommand[33]
new g_LeftKills[33]
new g_LeftVotes[33]
new g_iTimeLeft[33]
new g_KillsAce[33]
new g_TotalKills[33]
new g_TotalDeaths[33]
new g_BombPlants[33]
new g_BombDefusions[33]
new gPoints[33]
new g_PugLeaves
new bool:g_IsStarted
new bool:g_AfterRdy
new bool:g_KnifeRound
new bool:g_MapChanged
new bool:g_Twon
new bool:g_VoteProg
new bool:g_bStop
new bool:g_bStop2
new bool:g_Restart
new bool:g_givenChance[33]
new g_givenChanceSteamIDs[33][64]
new g_givenTimes
new g_MsgSync
new g_MsgSync3
new g_MsgSync2
new g_MsgSync4
new g_MsgSync5
new g_MsgSync6
new g_MsgSync7
new g_MsgSync8
new g_szTeamName[2]
new g_iTeam
new g_iAltScore
new g_iScoreOffset
new bool:g_CustomGame
new g_bVotes[2]
new g_Menu
new g_PlayersMenu
new g_abMenu
new g_switchmenu
new g_switchVotes[2]
new bool:g_bDidScore
new bool:g_bFFoff
new bool:g_bFFTKStop
new bool:g_bDidVoteFF
new bool:g_bSecondHalf
new bool:g_bCpt
new bool:gDidPlayUntilEnd[33]
new g_NotBalanced
new g_DidWaitEnough
new gPointsVault[] = "Points"
new gChanging, gChangerID
new gChanging2, gChangerID2
new gLeftSteamIDs[300][128], gLastTime[300]
new gLeftTimes
new gEntShowLeft


new g_iVotedPlayers[MAX_PLAYERS];
new g_iVotes[MAX_PLAYERS];
new g_szVoteReason[MAX_PLAYERS][64];

new g_iPlayers[MAX_PLAYERS - 1];
new g_iNum;

enum {
	CVAR_PERCENT = 0,
	CVAR_BANTYPE,
	CVAR_BANTIME
};
new g_szCvarName[][] = {
	"voteban_percent",
	"voteban_type",
	"voteban_time"
};
new g_szCvarValue[][] = {
	"60",
	"1",
	"100"
};
new g_iPcvar[3];
new g_szLogFile[64];

/* Cvars */

new cvar_FFvote
new cvar_KnifeRound
new cvar_pLeft
new cvar_pLeftMethod
new cvar_DetectTK;
new cvar_MuteMenu;
new cvar_AllowShield
new cvar_MapVote
new cvar_Rankings
new cvar_TimeLeft
new cvar_TeamTag
new cvar_TeamTag_A
new cvar_TeamTag_B
new cvar_AceHud
new cvar_AFKKick
new cvar_ReadyXPos, cvar_ReadyYPos
new cvar_NotReadyXPos, cvar_NotReadyYPos
new cvar_KillPoints, cvar_KnifePoints, cvar_WinsMatchPoints
new cvar_LeavesMatchPoints, cvar_LeavesMatchTime, cvar_PlaysUntilEndPoints
new cvar_TeamKillPoints, cvar_BombPlantPoints, cvar_BombDefusePoints
new cvar_KillLosePoints, cvar_KnifeLosePoints, cvar_LosesMatchPoints
new cvar_RanksSystem, cvar_RanksSystemMessages
new cvar_BeginnerPoints, cvar_RegularPoints, cvar_VeteranPoints
new cvar_ProPoints, cvar_HardCorePoints
new cvar_mp_friendlyfire
new cvar_mp_freezetime
new cvar_mp_roundtime
new cvar_mp_buytime
new cvar_sv_restart
new cvar_humans_join_team
new cvar_mp_afktime
new bool:TerroristTeam[33];
new cvar_ScoreHud
new CountTime[33];

new SpecTimes;

/* Cvars */
new g_FileLocation[]="addons/amxmodx/configs/adminship_details.txt"

/* Mute menu */

new bool:g_mute[MAX_PLAYERS+1][MAX_PLAYERS+1]
new cvar_alltalk

/* Mute menu */

/* AFK Kicker */

#define MIN_AFK_TIME 30  // I use this incase stupid admins accidentally set mp_afktime to something silly.
#define WARNING_TIME 15  // Start warning the user this many seconds before they are about to be kicked.
#define CHECK_FREQ 5.0	   // This is also the warning message frequency.

new g_oldangles[33][3]
new Float:g_afktime[33]
new bool:g_spawned[33] = {true, ...}
/* AFK Kicker */

/* Map & Votes variables */
new g_gVoteMenu
new g_gVotes[5]
new g_rVoteMenu
new g_rVotes[3]
new g_fVoteMenu
new g_fVotes[2]
new g_Maps_Ini_File[64]
new g_MapsCounter
new g_MapsAvailable[30][20]
new g_MapsChosen[4][20]
new g_DoneMaps
new g_ChangeMapTo
new g_LeftBans[24][124]
new g_LeftBansIPs[24][64]
new g_RoundsLeft[24] = {-1, ...}
 /* Map & Votes variables */
 
 enum {
 	T_WIN = 0,
	CT_WIN = 1
}

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	cvar_FFvote					=		register_cvar("pug_ffvote", "0", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_KnifeRound				=		register_cvar("pug_kniferound", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_pLeft					=		register_cvar("pug_players", "10", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_pLeftMethod			=		register_cvar("pug_playersmethod", "2", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_DetectTK				=		register_cvar("pug_detecttk", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_MuteMenu				=		register_cvar("pug_mutemenu", "1", FCVAR_SPONLY|FCVAR_SERVER)
	cvar_AllowShield			=		register_cvar("pug_allowshield", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_MapVote				=		register_cvar("pug_mapvote", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_Rankings				=		register_cvar("pug_ranking", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_TimeLeft				=		register_cvar("pug_timeleft", "30", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_TeamTag				=		register_cvar("pug_teamtag", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_TeamTag_A				=		register_cvar("pug_teamtag_A", "[TEAM A]", FCVAR_ARCHIVE|FCVAR_SERVER);
	cvar_TeamTag_B				=		register_cvar("pug_teamtag_B", "[TEAM B]", FCVAR_ARCHIVE|FCVAR_SERVER);
	cvar_AceHud					=		register_cvar("pug_acehud", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_AFKKick				=		register_cvar("pug_afkkick", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_ReadyXPos				=		register_cvar("pug_readyxpos", "0.72", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_ReadyYPos				=		register_cvar("pug_readyypos", "0.19", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_NotReadyXPos			=		register_cvar("pug_notreadyxpos", "0.02", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_NotReadyYPos			=		register_cvar("pug_notreadyypos", "0.19", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_RanksSystem			=		register_cvar("pug_rankssystem", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_RanksSystemMessages	=		register_cvar("pug_rankssystemmessages", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_KillPoints				=		register_cvar("pug_killpoints", "4", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_KillLosePoints			=		register_cvar("pug_killosepoints", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_KnifePoints			=		register_cvar("pug_knifepoints", "10", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_KnifeLosePoints		=		register_cvar("pug_knifelosespoints", "4", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_WinsMatchPoints		=		register_cvar("pug_winsmatchpoints", "15", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_LosesMatchPoints		=		register_cvar("pug_losesmatchpoints", "10", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_LeavesMatchPoints		=		register_cvar("pug_leavesmatchpoints", "20", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_LeavesMatchTime		=		register_cvar("pug_leavesmatchtime", "360", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_PlaysUntilEndPoints	=		register_cvar("pug_playsuntilendpoints", "30", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_TeamKillPoints			=		register_cvar("pug_teamkillpoints", "8", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_BombPlantPoints		=		register_cvar("pug_bombplantpoints", "3", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_BombDefusePoints		=		register_cvar("pug_bombdefusepoints", "5", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_BeginnerPoints			=		register_cvar("pug_beginner", "200", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_RegularPoints			=		register_cvar("pug_regular", "500", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_VeteranPoints			= 		register_cvar("pug_veteran", "900", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_ProPoints				=		register_cvar("pug_pro", "1400", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_HardCorePoints			=		register_cvar("pug_hardcore", "1900", FCVAR_ARCHIVE|FCVAR_SERVER)
	cvar_mp_afktime				=		register_cvar("mp_afktime", "40")  // Kick people AFK longer than this time
	cvar_ScoreHud				=		register_cvar("pug_scorehud", "1", FCVAR_ARCHIVE|FCVAR_SERVER)


	register_forward(FM_Voice_SetClientListening, "fwd_voice_setclientlistening")
	register_menucmd(register_menuid("ranks info"), 1023, "ranks_showInfo")
	register_menucmd(register_menuid("setprices menu"), 1023, "menuHandler")
	
	cvar_alltalk = get_cvar_pointer("sv_alltalk")
	
	new Ent = create_entity("info_target")
	entity_set_string(Ent, EV_SZ_classname, "checking_players_ent")
	entity_set_float(Ent, EV_FL_nextthink, halflife_time() + CHECK_FREQ)
	
	register_think("checking_players_ent", "afkCheck_entThink")
	
	register_dictionary("auto-mixH.txt")
	
	g_MsgSync = CreateHudSyncObj()
	g_MsgSync3 = CreateHudSyncObj()
	g_MsgSync4 = CreateHudSyncObj()
	g_MsgSync5 = CreateHudSyncObj()
	g_MsgSync6 = CreateHudSyncObj()
	g_MsgSync7 = CreateHudSyncObj()
	g_MsgSync8 = CreateHudSyncObj()
	g_MsgSync2 = CreateHudSyncObj()
	
	cvar_mp_friendlyfire = get_cvar_pointer("mp_friendlyfire")
	cvar_mp_freezetime = get_cvar_pointer("mp_freezetime")
	cvar_mp_roundtime = get_cvar_pointer("mp_roundtime")
	cvar_mp_buytime = get_cvar_pointer("mp_buytime")
	cvar_sv_restart = get_cvar_pointer("sv_restart")
	cvar_humans_join_team = get_cvar_pointer("humans_join_team")
	
	gPlayersLeft = get_pcvar_num(cvar_pLeft)
	
	get_configsdir(gPug_ini_file, 63);
	formatex(gPug_ini_file, 63, "%s/pug.ini", gPug_ini_file);
	get_configsdir(g_Maps_Ini_File, 63); 
	formatex(g_Maps_Ini_File, 63, "%s/maps.ini", g_Maps_Ini_File); 
	gMaxPlayers = get_maxplayers()
	SET_CONST_TASKID = scanForTaskID()
	formatex(gNotRdy, charsmax(gNotRdy), "%L:^n", LANG_PLAYER, "HUD_NOT_READY")
	formatex(gRdy, charsmax(gRdy), "%L:^n", LANG_PLAYER, "HUD_READY")
	
	register_cmd("rr", "Restart")
	register_cmd("restart", "RestartS")
	register_cmd("add", "Prepare")
	register_cmd("unadd", "unPrepare")
	register_cmd("credit", "credits")
	register_cmd("credits", "credits")
	register_cmd("ranks", "showRanks")
	register_cmd("rank", "showRanks")
	register_cmd("startmatch", "forcedStart_AdminCmd")
	register_cmd("stopmatch", "forcedStop_AdminCmd")
	register_cmd("showranks", "showRanks")
	register_cmd("xp", "showRanks")
	register_cmd("shop", "showRanks")
	register_cmd("level", "showRanks")
	register_cmd("cmd", "cmds")
	register_cmd("cmds", "cmds")
	register_cmd("commands", "cmds")
	register_cmd("menu", "player")
	register_clcmd("chooseteam", "handled")
	register_clcmd("jointeam", "handled")
	register_cmd("voteban", "voteban")
	register_cmd("score", "showscore")
	register_clcmd("say", "clcmd_say")
	register_clcmd("say_team", "clcmd_say")
	register_clcmd("amx_automix_settings", "openSettingsMenu")
	register_logevent("round_end", 2, "1=Round_End")  
	register_event("TeamScore", "Event_TeamScore", "a")
	register_event("DeathMsg", "Event_DeathMsg_Knife", "a", "1>0")
	register_event("CurWeapon", "Event_CurWeapon_NotKnife", "be", "1=1", "2!29")  
	register_forward(FM_ClientUserInfoChanged, "infochanged") 
	register_forward(FM_GetGameDescription, "Change" ); 
	register_clcmd("say !pm", "cmdPMMenu")
	register_clcmd("say_team !pm", "cmdPMMenu")
	register_clcmd("say !motd","motd_thingie")
	register_clcmd("motd","motd_thingie")
	register_clcmd("say motd","motd_thingie")
	register_logevent("logevent_round_start", 2, "1=Round_Start") 
	 
	register_clcmd("PrivateMessage", "cmd_player");
	register_clcmd("say !spec", "cmdSpec");
	register_clcmd("say !back", "cmdBack");  
	
	SpecTimes = register_cvar("amx_spectimes", "3");
	register_saycmd("pug_voteban", "Cmd_VoteBan", -1, "");
	register_clcmd("pug_voteban_reason", "Cmd_VoteBanReason", -1, "");
	   
	for(new i = 0 ; i < 3 ; i++)
	{
		g_iPcvar[i] = register_cvar(g_szCvarName[i], g_szCvarValue[i]);
	}

	RegisterHookChain(RG_CBasePlayer_HasRestrictItem, "RG_HasRestrictItem", false);
	RegisterHookChain(RG_CSGameRules_PlayerSpawn, "RG_PlayerSpawn", true);
	
	new szLogInfo[] = "amx_logdir";
	get_localinfo(szLogInfo, g_szLogFile, charsmax(g_szLogFile));
	add(g_szLogFile, charsmax(g_szLogFile), "/voteban");
	
	if(!dir_exists(g_szLogFile))
		mkdir(g_szLogFile);
		
	new szTime[32];
	get_time("%d-%m-%Y", szTime, charsmax(szTime));
	format(g_szLogFile, charsmax(g_szLogFile), "%s/%s.log", g_szLogFile, szTime)
}
public Change()
{
	if(g_IsStarted)
	{
		if(g_KnifeRound)
		{
			forward_return(FMV_STRING, "Knife Round!");
		}
		else if(g_VoteProg)
		{
			forward_return(FMV_STRING, "Team Voting!");
		}
		else
		{
			new temp[64];
			formatex(temp, charsmax(temp), "[A] %d - %d [B]", g_iScore[1], g_iScore[0]);
			forward_return(FMV_STRING, temp);
		}

	}
	else
	{
		forward_return(FMV_STRING, "Match Not Started!");
	}
	
	return FMRES_SUPERCEDE;
}

public Event_CurWeapon_NotKnife(id)
{
	if (g_Restart || !g_KnifeRound) 
		return 

	rg_give_item(id, "weapon_knife", GT_REPLACE);

}

public Restart(id) {
	
	if (is_user_admin(id))
		server_cmd("sv_restart 1")
	else
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "NOT_ADMIN");
}

public RestartS(id) {
	
	if (is_user_admin(id))
		server_cmd("restart")
	
	else
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "NOT_ADMIN");
}

public showscore(id) {
	if ( !get_pcvar_num(cvar_TeamTag) && g_IsStarted)
	{
		CrashAttempt(id)
		CromChat(0, "&x04%L", LANG_PLAYER, "SHOW_SCORE", g_iScore[0], g_iScore[1]);
		return PLUGIN_CONTINUE;
	}
			
	if (g_IsStarted)
	{
		if (g_Twon)
		{
			if (g_bSecondHalf)
				CromChat(0, "&x04%L",LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[0], g_iScore[1]);
		
			else
				CromChat(0, "&x04%L", LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[1], g_iScore[0]);
		}
		
		else
		{
			if (g_bSecondHalf)
				CromChat(0, "&x04%L",LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[1], g_iScore[0]);
			else
				CromChat(0, "&x04%L",LANG_PLAYER, "SHOW_SCORE_TAG", g_iScore[0], g_iScore[1]);
		}
	}
	
	else
	{
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "MATCH_NOT_STARTED")
	}
	return PLUGIN_CONTINUE
}

public Event_DeathMsg_Knife() 
{ 
	if ( g_Restart || !g_IsStarted ) 
			return 
		 
	new attacker = read_data(1) 
	new victim = read_data(2) 
	
	if ( !( 1 <= attacker <= gMaxPlayers ) || !( 1 <= victim <= gMaxPlayers) )
		return;
	
	if ( get_member(attacker, m_iTeam) == get_member(victim, m_iTeam) && attacker != victim )
	{
		CromChat(attacker, "&x04%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_TK", get_pcvar_num(cvar_TeamKillPoints))
		gPoints[attacker] -= get_pcvar_num(cvar_TeamKillPoints)
		SaveStats(attacker)
	}
	
	if( victim != attacker && get_member(attacker, m_iTeam) != get_member(victim, m_iTeam)) 
	{ 
		new weap[7]

		if( read_data(4, weap, charsmax(weap)) == 5 && equal(weap, "knife") ) 
		{ 
			new nameA[32] 
			new nameV[32] 
		 
			get_user_name(attacker, nameA, 31) 
			get_user_name(victim, nameV, 31) 
					 
			set_hudmessage(255, 255, 255, 0.04, 0.63, 0, 6.0, 12.0) 
			ShowSyncHudMsg(0, g_MsgSync5, "%L", LANG_PLAYER, "JUST_KNIFED", nameA, nameV) 
			gPoints[attacker] += get_pcvar_num(cvar_KnifePoints)
			gPoints[victim] -= get_pcvar_num(cvar_KnifeLosePoints)
			SaveStats(attacker)
			SaveStats(victim)
			
			if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KnifePoints))
				CromChat(attacker, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_KNIFE", get_pcvar_num(cvar_KnifePoints))
			if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KnifeLosePoints) )
				CromChat(victim, "&x04%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_KNIFE", get_pcvar_num(cvar_KnifeLosePoints))
		} 
		
		else
		{
			gPoints[attacker] += get_pcvar_num(cvar_KillPoints)
			gPoints[victim] -= get_pcvar_num(cvar_KillLosePoints)
			SaveStats(attacker)
			SaveStats(victim)
			
			if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KillPoints) )
				CromChat(attacker, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_KILL", get_pcvar_num(cvar_KillPoints))
			if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_KillLosePoints) )
				CromChat(victim, "&x04%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_KILL", get_pcvar_num(cvar_KillLosePoints))
		}
		
		g_KillsAce[attacker]++ 
		g_TotalKills[attacker]++
		g_TotalDeaths[victim]++
	} 
} 
 
public bomb_planted( planter )
{
	if ( g_IsStarted )
	{
		g_BombPlants[planter]++
		CromChat(planter, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_PLANT", get_pcvar_num(cvar_BombPlantPoints))
		gPoints[planter] += get_pcvar_num(cvar_BombPlantPoints)
		SaveStats(planter)
	}
}

public bomb_defused( defuser )
{
	if ( g_IsStarted )
	{
		g_KillsAce[defuser] -= 3
		g_BombDefusions[defuser]++
		CromChat(defuser, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_DEFUSE", get_pcvar_num(cvar_BombPlantPoints))
		gPoints[defuser] += get_pcvar_num(cvar_BombDefusePoints)
		SaveStats(defuser)
	}
}

No_Shield_Message(id)
{
	if ( !get_pcvar_num(cvar_AllowShield) || g_KnifeRound )
	{
		if ( g_KnifeRound )
			CromChat(id, "%L", LANG_PLAYER, "NO_SHIELD_KNIFEROUND")
		else
			CromChat(id, "%L", LANG_PLAYER, "NO_SHIELD")
		
	}
}

public client_damage(attacker, victim, damage, wpnindex, hitplace, TA) {
	if (!get_pcvar_num(cvar_DetectTK))
		return PLUGIN_CONTINUE
		
	if (attacker == victim)
	{
		damage = 0
	}
	
	if (g_IsStarted)
	{
		if (TA == 1)
		{
			g_LeftKills[attacker] += damage
			
			
			if (g_LeftKills[attacker] >= 100)
			{
				new nameofp[50]
				
				get_user_name(attacker, nameofp, 49)
				
				server_cmd("amx_banip #%d 10 ^"%L^"", get_user_userid(attacker), LANG_PLAYER, "YOU_HAVE_BEEN_WARNED", PREFIX)
				set_hudmessage(255, 0, 0, 0.32, 0.70, 0, 6.0, 12.0)
				show_hudmessage(0, "%L", LANG_PLAYER, "TK_BANNED", nameofp)
				CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_DISABLED")
				set_pcvar_num(cvar_mp_friendlyfire, 0)
				
				new players[32], pnum, tempid;

				get_players(players, pnum, "ch")

				for (new i ; i<pnum ; i++)
				{
					tempid = players[i]
					g_LeftKills[tempid] = 0
				}
				
				new taskId = scanForTaskID()
				
				set_task(100.0, "TurnItBackOn", taskId)
				return PLUGIN_HANDLED
			}
	
			
			if (g_LeftKills[attacker] - damage > 40)
				return PLUGIN_HANDLED
			
			else
			{
			
				if (g_LeftKills[attacker] < 40)
				{
					CromChat(attacker, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_WARNING")
				}
				
				if ( g_LeftKills[attacker] >= 40 && !g_givenChance[attacker] )
				{
					g_givenChance[attacker] = true
					CromChat(attacker, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_WARNING_FINAL")
					g_LeftKills[attacker] = 0
					set_hudmessage(255, 0, 0, 0.19, 0.35, 0, 6.0, 12.0)
					show_hudmessage(attacker, "%L", LANG_PLAYER, "TK_WARNING")
					CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_OFF")
					set_pcvar_num(cvar_mp_friendlyfire, 0)
					g_bFFTKStop = true
					
				}
			
				else if (g_LeftKills[attacker] >= 40)
				{
					new nameofp[50]
				
					get_user_name(attacker, nameofp, 49)
					
					new pplayers[32], ppnum, ptempid;
	
					get_players(pplayers, ppnum, "ch");

					for( new i; i<ppnum; i++ )
					{
						ptempid = pplayers[i]
			
						if (ptempid != attacker)
						{
							CromChat(ptempid, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_ANNOYING", nameofp)
							set_hudmessage(255, 0, 0, 0.32, 0.70, 0, 6.0, 12.0)
							show_hudmessage(ptempid, "%L", LANG_PLAYER, "TK_QUERY", nameofp)
							CromChat(ptempid, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_OFF")
							
						}	
					}
					
					set_pcvar_num(cvar_mp_friendlyfire, 0)
					g_bFFTKStop = true
				}
			}
		}
	}
	
	return PLUGIN_CONTINUE
}

public infochanged(id, buffer)  { 
	if ( ( g_IsStarted || g_KnifeRound ) && get_pcvar_num(cvar_TeamTag) )
	{
		if( is_user_connected(id) ) 
		{ 
			new name[32] 
			new val[32] 
			
			get_user_name(id, name, 31) 
			engfunc(EngFunc_InfoKeyValue, buffer, "name", val, 31) 
			
			new posA = contain(name, "[Team A]")
			new posB = contain(name, "[Team B]")
			
			if (g_bSecondHalf)
			{
				if (get_member(id, m_iTeam) == TEAM_TERRORIST)
				{
					if (posB == 0)
					{
						engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name) 
						return FMRES_SUPERCEDE
					}
				}
			
				else if (get_member(id, m_iTeam) == TEAM_CT)
				{
					if (posA == 0)
					{
						engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name) 
						return FMRES_SUPERCEDE
					}
				}
			}
			
			else
			{
				if (get_member(id, m_iTeam) == TEAM_TERRORIST)
				{
					if (posA == 0)
					{
						engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name) 
						return FMRES_SUPERCEDE
					}

				}
			
				else if (get_member(id, m_iTeam) == TEAM_CT)
				{
					if (posB == 0)
					{
						engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name) 
						return FMRES_SUPERCEDE
					}

				}
			}
			
			static a[65], b[65], a2[65], b2[65]
			formatex(a, charsmax(a), "%L", LANG_PLAYER, "TEAM_A")
			formatex(b, charsmax(b), "%L", LANG_PLAYER, "TEAM_B")
			formatex(a2, charsmax(a2), "%L", LANG_PLAYER, "TEAM_A")
			formatex(b2, charsmax(b2), "%L", LANG_PLAYER, "TEAM_B")
			
			if (((contain(val, a) == 0) && (contain(name, a2) == -1)) || ((contain(val, b) == 0) && (contain(name, b2) == -1)))
			{
				return FMRES_IGNORED 
			}
			
			if (((contain(val, b) == 0) && (contain(name, a2) == 0)) || ((contain(val, a) == 0) && (contain(name, b2) == 0)))
			{
				return FMRES_IGNORED 
			}
			
			if (equal(val, name)) 
			{
				return FMRES_IGNORED 
			}

			engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name) 
			return FMRES_SUPERCEDE 
		}
	}

	return FMRES_IGNORED
}
	

public TurnItBackOn() {
	set_pcvar_num(cvar_mp_friendlyfire, 1)
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_ON")
	return PLUGIN_HANDLED
}
				
public voteban(id) {
	
	if (g_LeftVotes[id] >= 1)
	{
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "FF_EXCEED")
		return PLUGIN_HANDLED
	}
	
	else if (g_VoteProg)
	{
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "VOTE_IN_PROGRESS")
		return PLUGIN_HANDLED
	}
	
	new menuTitle[64]
	formatex(menuTitle, charsmax(menuTitle), "%L", LANG_PLAYER, "CHOOSE_PLAYER_VOTEBAN")
	
	g_Menu = menu_create(menuTitle, "voteban_menu"); 
	new players[32], pnum, tempid; 
	new szName[32], szTempid[10]; 
	new added
  
	get_players(players, pnum, "ch"); 
		
	for( new i; i<pnum; i++ ) 
	{ 
		tempid = players[i];
		
		if (g_LeftKills[tempid] >= 40)
		{
			get_user_name(tempid, szName, 31); 
			num_to_str(tempid, szTempid, 9); 
			menu_additem(g_Menu, szName, szTempid, 0);
			added++
		}
	} 
	
	for ( new i ; i < sizeof(g_LeftBans) ; i++ )
	{
		if ( g_LeftBans[i][0] && g_RoundsLeft[i] != -1 )
		{
			num_to_str(i+32, szTempid, 9)
			menu_additem(g_Menu, g_LeftBans[i], szTempid, 0)
			added++
		}
	}
	
	if ( !added )
	{
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "FF_NO_ABUSERS")
		return PLUGIN_HANDLED
	}
 
	menu_display(id, g_Menu); 
	return PLUGIN_HANDLED; 
}

public voteban_menu(id, menu, item)  { 
	if( item == MENU_EXIT ) 
	{ 
		menu_destroy(menu); 
		return PLUGIN_HANDLED; 
	} 
	
	else if (g_VoteProg)
	{
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "VOTE_IN_PROGRESS")
		return PLUGIN_HANDLED
	}
	
	g_LeftVotes[id]++
	new data[6], iName[64]; 
	new access, callback; 
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); 
 
	new tempid = str_to_num(data);
	new name[50]
	
	if ( tempid < 32 && !is_user_connected(tempid) )
		return PLUGIN_HANDLED
		
	get_user_name(tempid, name, 49)
	
	votebanonplayer(tempid)
	
	menu_destroy(menu);
	return PLUGIN_HANDLED
}

public votebanonplayer(id) {
	g_VoteProg = true
	new nameofplayer[52]
	new banline[128]
	
	formatex(banline, charsmax(banline), "%L", LANG_PLAYER, "BAN")
	
	if ( id >= 32 )
	{
		id -= 32
		add(banline, 127, g_LeftBans[id])
		id += 32
	}
	
	else
	{
		get_user_name(id, nameofplayer, 51)
		add(banline, 127, nameofplayer)	
	}
	add(banline, 127, "?")
	
	new yesItem[10], noItem[10]
	formatex(yesItem, charsmax(yesItem), "%L", LANG_PLAYER, "MENU_ITEM_YES")
	formatex(noItem, charsmax(noItem), "%L", LANG_PLAYER, "MENU_ITEM_NO")
	
	g_abMenu = menu_create(banline, "votebanonplayer_menu");
	menu_additem(g_abMenu, yesItem)
	menu_additem(g_abMenu, noItem)
	
	new pplayers[32], ppnum, ptempid;
	
	if ( 1 <= id <= gMaxPlayers )
	{
		switch( get_member(id, m_iTeam) )
		{
			case TEAM_CT: get_players(pplayers, ppnum, "che", "CT");
			case TEAM_TERRORIST: get_players(pplayers, ppnum, "che", "TERRORIST");
		}
	}
	
	else
		get_players(pplayers, ppnum, "ch");
	

	for( new i; i<ppnum; i++ )
	{
		ptempid = pplayers[i]
		
		if (ptempid != id)
		{

			menu_display(ptempid, g_abMenu, 0)
		}	
	}
	

	set_task(7.0, "EndBanVote", id)
	
	return PLUGIN_HANDLED
}

public EndBanVote(id)
{ 
	g_VoteProg = false
	show_menu(0, 0, "^n", 1); 
	
	if(g_bVotes[0] >= g_bVotes[1]) 
	{ 
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "BAN_VOTE_SUCCESS")
		set_hudmessage(255, 0, 0, 0.32, 0.70, 0, 6.0, 12.0)
		
		if (id < 32)
		{
			server_cmd("amx_banip #%d 5 ^"%L^"", get_user_userid(id), LANG_PLAYER, "VOTED_TO_BAN", PREFIX)
			
			new nameofp[50]
					
			get_user_name(id, nameofp, 49)
			ShowSyncHudMsg(0, g_MsgSync6, "%s %L", nameofp, LANG_PLAYER, "VOTED_TO_BE_BANNED")
		}
		else
		{
			server_cmd("amx_banip ^"%s^" 15", g_LeftBansIPs[id-32])
			ShowSyncHudMsg(0, g_MsgSync6, "%s %L", g_LeftBans[id-32], LANG_PLAYER, "VOTED_TO_BE_BANNED")
			copy(g_LeftBans[id-32], charsmax(g_LeftBans[]), "")
			copy(g_LeftBansIPs[id-32], charsmax(g_LeftBansIPs[]), "")
			g_RoundsLeft[id-32] = -1
		}
			
		g_bVotes[0] = 0
		g_bVotes[1] = 0
		return PLUGIN_HANDLED
	} 
	
	else 
	{ 
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "BAN_VOTE_FAIL")	
		
		if (id >= 32)
		{
			copy(g_LeftBans[id-32], charsmax(g_LeftBans[]), "")
			copy(g_LeftBansIPs[id-32], charsmax(g_LeftBansIPs[]), "")
			g_RoundsLeft[id-32] = -1
		}
		
		else
		{
			g_bVotes[0] = 0
			g_bVotes[1] = 0
			g_LeftKills[id] = 0
		}
		return PLUGIN_HANDLED
	}

	return PLUGIN_HANDLED;
	// NO RETURN since code is unreachable here..
} 

public votebanonplayer_menu(id, menu, item) {
	if( item == MENU_EXIT )
		return PLUGIN_HANDLED;
	
	g_bVotes[item]++;
	return PLUGIN_HANDLED;
}

public handled(id) {
	if ( get_member(id, m_iTeam) == TEAM_UNASSIGNED )
		return PLUGIN_CONTINUE
		
	player(id)
	return PLUGIN_HANDLED
}

public openSettingsMenu(id)
	settingsMenu(id, 0)
	
public settingsMenu(id, page)
{
	if ( !is_user_admin(id) )
	{
		console_print(id, "Only admins can access the settings menu.")
		return PLUGIN_HANDLED
	}
	
	static enabled[35], disabled[35], title[79]
	formatex(enabled, charsmax(enabled), "\y%L\w", LANG_PLAYER, "ENABLED")
	formatex(disabled, charsmax(disabled), "\r%L\w", LANG_PLAYER, "DISABLED")
	formatex(title, charsmax(title), "\r[Auto-Mix]\w %L:", LANG_PLAYER, "SETTINGS_MENU_TITLE")
	
	new menu = menu_create(title, "settingsHandler")
	
	new item1[79], item2[79], item3[79], item4[79], item5[79], item6[79], item7[79]
	new item8[79], item9[79], item10[79], item11[79], item12[79], item13[79], item14[79]
	new item15[79], item16[79], item17[79], item18[79], item19[79]
	
	switch ( get_pcvar_num(cvar_pLeftMethod) )
	{
		case 0: format(item3, charsmax(item3), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM3", LANG_PLAYER, "HUD_NOT_READY")
		case 1: format(item3, charsmax(item3), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM3", LANG_PLAYER, "HUD_READY")
		case 2: format(item3, charsmax(item3), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM3", LANG_PLAYER, "BOTH")
	}
	
	formatex(item1, charsmax(item1), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM1", get_pcvar_num(cvar_pLeft) )
	formatex(item2, charsmax(item2), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM2", get_pcvar_num(cvar_TimeLeft) )
	formatex(item4, charsmax(item4), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM4", get_pcvar_num(cvar_FFvote) ? enabled : disabled )
	formatex(item5, charsmax(item5), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM5", get_pcvar_num(cvar_KnifeRound) ? enabled : disabled )
	formatex(item6, charsmax(item6), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM6", get_pcvar_num(cvar_DetectTK) ? enabled : disabled )
	formatex(item7, charsmax(item7), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM7", get_pcvar_num(cvar_MuteMenu) ? enabled : disabled )
	formatex(item8, charsmax(item8), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM8", get_pcvar_num(cvar_AllowShield) ? enabled : disabled )
	formatex(item9, charsmax(item9), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM9", get_pcvar_num(cvar_MapVote) ? enabled : disabled )
	formatex(item10, charsmax(item10), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM10", get_pcvar_num(cvar_Rankings) ? enabled : disabled )
	formatex(item11, charsmax(item11), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM11", get_pcvar_num(cvar_TeamTag) ? enabled : disabled )
	formatex(item12, charsmax(item12), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM12", get_pcvar_num(cvar_AceHud) ? enabled : disabled )
	formatex(item13, charsmax(item13), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM13", get_pcvar_num(cvar_AFKKick) ? enabled : disabled )
	formatex(item14, charsmax(item14), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM14")
	formatex(item15, charsmax(item15), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM15")
	formatex(item16, charsmax(item16), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM16", get_pcvar_num(cvar_RanksSystem) ? enabled : disabled )
	formatex(item17, charsmax(item17), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM17", ( get_pcvar_num(cvar_RanksSystem) && get_pcvar_num(cvar_RanksSystemMessages) ) ? enabled : disabled )
	formatex(item18, charsmax(item18), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM18")
	formatex(item19, charsmax(item19), "%L", LANG_PLAYER, "SETTINGS_MENU_ITEM19")
	
	menu_additem(menu, item1, .paccess = g_IsStarted ? ADMIN_NONE : 0 )
	menu_additem(menu, item2)
	menu_additem(menu, item3)
	menu_additem(menu, item4)
	menu_additem(menu, item5)
	menu_additem(menu, item6)
	menu_additem(menu, item7)
	menu_additem(menu, item8)
	menu_additem(menu, item9)
	menu_additem(menu, item10)
	menu_additem(menu, item11, .paccess = g_IsStarted ? ADMIN_NONE : 0 )
	menu_additem(menu, item12)
	menu_additem(menu, item13)
	menu_additem(menu, item14)
	menu_additem(menu, item15)
	menu_additem(menu, item16)
	menu_additem(menu, item17)
	menu_additem(menu, item18, .paccess = gChanging ? ADMIN_NONE : 0)
	menu_additem(menu, item19, .paccess = gChanging2 ? ADMIN_NONE : 0)
	
	menu_display(id, menu, page)
	return PLUGIN_HANDLED
}

public settingsHandler(id, menu, item)  { 
	if( item == MENU_EXIT ) 
	{ 
		menu_destroy(menu); 
		return PLUGIN_HANDLED; 
	} 
	
	new currentCvarNum
	
	switch ( item )
	{
		case 0:
		{
			new playersReady = -1
			
			if ( !( g_AfterRdy || g_IsStarted || g_MapChanged ) )
			{
				playersReady = 0
				
				for ( new i = 1 ; i <= gMaxPlayers ; i++ )
				{
					if ( !is_user_connected(i) )
						continue;
					
					if ( g_bIsReady[i] )
						playersReady++
				}
			}
			currentCvarNum = get_pcvar_num(cvar_pLeft)
			
			if ( playersReady == -1 )
			{
				if ( currentCvarNum + 2 <= gMaxPlayers )
					currentCvarNum += 2
				else
					currentCvarNum = 2
			}
			
			else
			{
				if ( currentCvarNum + 2 <= gMaxPlayers )
					currentCvarNum += 2
				else
				{
					new setToNum = 2
					
					while ( setToNum - playersReady <= 0)
						setToNum += 2
					currentCvarNum = setToNum
				}
			}
			
			set_pcvar_num(cvar_pLeft, currentCvarNum)
			gPlayersLeft = currentCvarNum
			
			if ( !( g_AfterRdy || g_IsStarted || g_MapChanged ) )
			{
				for ( new i = 1 ; i <= gMaxPlayers ; i++ )
				{
					if ( !is_user_connected(i) )
						continue;
					
					if ( g_bIsReady[i] )
						gPlayersLeft--
				}
			}
		}
		
		case 1:
		{
			currentCvarNum = get_pcvar_num(cvar_TimeLeft)
			
			if ( currentCvarNum + 5 <= TIME_MAX )
				currentCvarNum += 5
			else
				currentCvarNum = 30
			
			set_pcvar_num(cvar_TimeLeft, currentCvarNum)
		}
		
		case 2:
		{
			currentCvarNum = get_pcvar_num(cvar_pLeftMethod)
			
			if ( currentCvarNum != 2 )
				currentCvarNum++
			else
				currentCvarNum = 0
			
			set_pcvar_num(cvar_pLeftMethod, currentCvarNum)
		}
		
		case 3:
		{
			currentCvarNum = get_pcvar_num(cvar_FFvote)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
			
			set_pcvar_num(cvar_FFvote, currentCvarNum)
		}
		
		case 4:
		{
			currentCvarNum = get_pcvar_num(cvar_KnifeRound)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
				
			set_pcvar_num(cvar_KnifeRound, currentCvarNum)
		}
		
		case 5:
		{
			currentCvarNum = get_pcvar_num(cvar_DetectTK)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
				
			set_pcvar_num(cvar_DetectTK, currentCvarNum)
		}
		
		case 6:
		{
			currentCvarNum = get_pcvar_num(cvar_MuteMenu)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
				
			set_pcvar_num(cvar_MuteMenu, currentCvarNum)
		}
		
		case 7:
		{
			currentCvarNum = get_pcvar_num(cvar_AllowShield)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
				
			if ( !currentCvarNum )
			{
				new players[32], pnum, tempid
				get_players(players, pnum, "ch")
				
				for ( new i ; i < pnum ; i++ )
				{
					tempid = players[i]
					remove_shield( tempid )
				}
			}
				
			set_pcvar_num(cvar_AllowShield, currentCvarNum)
		}
		
		case 8:
		{
			currentCvarNum = get_pcvar_num(cvar_MapVote)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
				
			set_pcvar_num(cvar_MapVote, currentCvarNum)
		}
		
		case 9:
		{
			currentCvarNum = get_pcvar_num(cvar_Rankings)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
				
			set_pcvar_num(cvar_Rankings, currentCvarNum)
		}
		
		case 10:
		{
			currentCvarNum = get_pcvar_num(cvar_TeamTag)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
				
			set_pcvar_num(cvar_TeamTag, currentCvarNum)
		}
		
		case 11:
		{
			currentCvarNum = get_pcvar_num(cvar_AceHud)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
				
			set_pcvar_num(cvar_AceHud, currentCvarNum)
		}
		
		case 12:
		{
			currentCvarNum = get_pcvar_num(cvar_AFKKick)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
				
			set_pcvar_num(cvar_AFKKick, currentCvarNum)
		}
		
		case 13: ReadyPosMenu(id)
		case 14: NotReadyPosMenu(id)
		
		case 15:
		{
			currentCvarNum = get_pcvar_num(cvar_RanksSystem)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else 
				currentCvarNum = 1
			
			if ( !currentCvarNum )
				set_pcvar_num(cvar_RanksSystemMessages, 0)
			else
				set_pcvar_num(cvar_RanksSystemMessages, 1)
			set_pcvar_num(cvar_RanksSystem, currentCvarNum)
		}
		
		case 16:
		{
			currentCvarNum = get_pcvar_num(cvar_RanksSystemMessages)
			
			if ( currentCvarNum )
				currentCvarNum = 0
			else
				currentCvarNum = 1
				
			set_pcvar_num(cvar_RanksSystemMessages, currentCvarNum)
			
			if ( !get_pcvar_num(cvar_RanksSystem) )
				set_pcvar_num(cvar_RanksSystemMessages, 0)
		}
		
		case 17: PointsPricesMenu(id)
		case 18: RanksPricesMenu(id)
			
			
	}
	
	if ( item == 13 || item == 14 || item == 17 || item == 18 )
		return PLUGIN_HANDLED
		
	if ( item >= 7 && item <= 13 )
		settingsMenu(id, 1)
	else if ( item >= 14 && item <= 20 )
		settingsMenu(id, 2)
	else
		settingsMenu(id, 0)
	return PLUGIN_HANDLED
}

public ReadyPosMenu(id)
{
	if ( !is_user_connected(id) )
		return;
		
	new Title[125]
	formatex(Title, charsmax(Title), "%L", LANG_PLAYER, "READY_POS_TITLE", get_pcvar_float(cvar_ReadyXPos), get_pcvar_float(cvar_ReadyYPos))
	new rPosMenu = menu_create(Title, "ReadyPosHandler")
	
	new item[16]
	
	formatex(item, charsmax(item), "%L", LANG_PLAYER, "UP")
	menu_additem(rPosMenu, item)
	formatex(item, charsmax(item), "%L", LANG_PLAYER, "DOWN")
	menu_additem(rPosMenu, item)
	formatex(item, charsmax(item), "%L", LANG_PLAYER, "RIGHT")
	menu_additem(rPosMenu, item)
	formatex(item, charsmax(item), "%L", LANG_PLAYER, "LEFT")
	menu_additem(rPosMenu, item)
	
	formatex(item, charsmax(item), "%L", LANG_PLAYER, "BACK")
	menu_setprop(rPosMenu, MPROP_EXITNAME, item)
	menu_display(id, rPosMenu)
}

public ReadyPosHandler(id, menu, item)  { 
	if( item == MENU_EXIT ) 
	{ 
		settingsMenu(id, 1)
		return PLUGIN_HANDLED; 
	}  
 
	new Float:setCvarNum
	
	switch ( item )
	{
		case 0: setCvarNum = get_pcvar_float(cvar_ReadyYPos) - 0.01
		case 1: setCvarNum = get_pcvar_float(cvar_ReadyYPos) + 0.01
		case 2: setCvarNum = get_pcvar_float(cvar_ReadyXPos) + 0.01
		case 3: setCvarNum = get_pcvar_float(cvar_ReadyXPos) - 0.01
	}
	
	set_pcvar_float(cvar_ReadyYPos, setCvarNum)
	
	ReadyPosMenu(id)
	return PLUGIN_HANDLED
}

public NotReadyPosMenu(id)
{
	if ( !is_user_connected(id) )
		return;
		
	new Title[125]
	
	formatex(Title, charsmax(Title), "%L", LANG_PLAYER, "NOTREADY_POS_TITLE", get_pcvar_float(cvar_NotReadyXPos), get_pcvar_float(cvar_NotReadyYPos)) 
	new rPosMenu = menu_create(Title, "NotReadyPosHandler")
	
	new item[16]
	
	formatex(item, charsmax(item), "%L", LANG_PLAYER, "UP")
	menu_additem(rPosMenu, item)
	formatex(item, charsmax(item), "%L", LANG_PLAYER, "DOWN")
	menu_additem(rPosMenu, item)
	formatex(item, charsmax(item), "%L", LANG_PLAYER, "RIGHT")
	menu_additem(rPosMenu, item)
	formatex(item, charsmax(item), "%L", LANG_PLAYER, "LEFT")
	menu_additem(rPosMenu, item)
	
	formatex(item, charsmax(item), "%L", LANG_PLAYER, "BACK")
	menu_setprop(rPosMenu, MPROP_EXITNAME, item)
	
	menu_display(id, rPosMenu)
}

public NotReadyPosHandler(id, menu, item)  { 
	if( item == MENU_EXIT ) 
	{ 
		settingsMenu(id, 2)
		return PLUGIN_HANDLED; 
	} 

	new Float:setCvarNum
	
	switch ( item )
	{
		case 0: setCvarNum = get_pcvar_float(cvar_NotReadyYPos) - 0.01
		case 1: setCvarNum = get_pcvar_float(cvar_NotReadyYPos) + 0.01
		case 2: setCvarNum = get_pcvar_float(cvar_NotReadyXPos) + 0.01
		case 3: setCvarNum = get_pcvar_float(cvar_NotReadyXPos) - 0.01
	}
	
	set_pcvar_float(cvar_NotReadyYPos, setCvarNum)
	
	NotReadyPosMenu(id)
	return PLUGIN_HANDLED
}

public PointsPricesMenu(id)
{
	if ( !is_user_connected(id) )
		return;
	
	new menuTitle[65]
	formatex(menuTitle, charsmax(menuTitle), "\y[Auto-Mix]\w %L", LANG_PLAYER, "POINTS_PRICES_MENU_TITLE")
	new pointsMenu = menu_create(menuTitle, "pointsHandler")
	
	new item1[79], item2[79], item3[79], item4[79], item5[79], item6[79], item7[79]
	new item8[79], item9[79], item10[79], item11[79], item12[79]
	
	formatex(item1, charsmax(item1), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM1", get_pcvar_num(cvar_KillPoints))
	formatex(item2, charsmax(item2), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM2", get_pcvar_num(cvar_KnifePoints))
	formatex(item3, charsmax(item3), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM3", get_pcvar_num(cvar_WinsMatchPoints))
	formatex(item4, charsmax(item4), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM4", get_pcvar_num(cvar_PlaysUntilEndPoints))
	formatex(item5, charsmax(item5), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM5", get_pcvar_num(cvar_LeavesMatchPoints))
	formatex(item6, charsmax(item6), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM6", get_pcvar_num(cvar_LeavesMatchTime))
	formatex(item7, charsmax(item7), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM7", get_pcvar_num(cvar_TeamKillPoints))
	formatex(item8, charsmax(item8), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM8", get_pcvar_num(cvar_BombPlantPoints))
	formatex(item9, charsmax(item9), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM9", get_pcvar_num(cvar_BombDefusePoints))
	formatex(item10, charsmax(item10), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM10", get_pcvar_num(cvar_KillLosePoints))
	formatex(item11, charsmax(item11), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM11", get_pcvar_num(cvar_KnifeLosePoints))
	formatex(item12, charsmax(item12), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_ITEM12", get_pcvar_num(cvar_LosesMatchPoints))
	
	menu_additem(pointsMenu, item1)
	menu_additem(pointsMenu, item2)
	menu_additem(pointsMenu, item3)
	menu_additem(pointsMenu, item4)
	menu_additem(pointsMenu, item5)
	menu_additem(pointsMenu, item6)
	menu_additem(pointsMenu, item7)
	menu_additem(pointsMenu, item8)
	menu_additem(pointsMenu, item9)
	menu_additem(pointsMenu, item10)
	menu_additem(pointsMenu, item11)
	menu_additem(pointsMenu, item12)
	
	new ExitButton[16]
	formatex(ExitButton, charsmax(ExitButton), "%L", LANG_PLAYER, "MENU_ITEM_BACK")
	menu_setprop(pointsMenu, MPROP_EXITNAME, ExitButton)
	menu_display(id, pointsMenu)
}
	
public pointsHandler(id, menu, item)  { 
	if( item == MENU_EXIT ) 
	{ 
		settingsMenu(id, 2)
		return PLUGIN_HANDLED; 
	} 
	
	gChanging = item
	gChangerID = id
	
	new menuTitle[128], menuTitle2[128]
	formatex(menuTitle, charsmax(menuTitle), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_DIRECTIONS")
	formatex(menuTitle2, charsmax(menuTitle2), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_DIRECTIONS2")
	show_menu(id, MENU_KEY_0, ( item == 6 ) ? menuTitle : menuTitle2, -1, "setprices menu")
	return PLUGIN_HANDLED
}

public RanksPricesMenu(id)
{
	if ( !is_user_connected(id) )
		return;
	
	new menuTitle[65]
	formatex(menuTitle, charsmax(menuTitle), "\y[Auto-Mix]\w %L", LANG_PLAYER, "RANKS_PRICES_MENU_TITLE")
	new pointsMenu = menu_create(menuTitle, "ranksHandler")
	
	new item1[79], item2[79], item3[79], item4[79], item5[79]
	
	formatex(item1, charsmax(item1), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1", get_pcvar_num(cvar_BeginnerPoints))
	formatex(item2, charsmax(item2), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM2", get_pcvar_num(cvar_RegularPoints))
	formatex(item3, charsmax(item3), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM3", get_pcvar_num(cvar_VeteranPoints))
	formatex(item4, charsmax(item4), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM4", get_pcvar_num(cvar_ProPoints))
	formatex(item5, charsmax(item5), "%L [\y%d\w]", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM5", get_pcvar_num(cvar_HardCorePoints))
	
	menu_additem(pointsMenu, item1)
	menu_additem(pointsMenu, item2)
	menu_additem(pointsMenu, item3)
	menu_additem(pointsMenu, item4)
	menu_additem(pointsMenu, item5)
	
	new ExitButton[16]
	formatex(ExitButton, charsmax(ExitButton), "%L", LANG_PLAYER, "MENU_ITEM_BACK")
	menu_setprop(pointsMenu, MPROP_EXITNAME, ExitButton)
	menu_display(id, pointsMenu)
}
	
public ranksHandler(id, menu, item)  { 
	if( item == MENU_EXIT ) 
	{ 
		settingsMenu(id, 2)
		return PLUGIN_HANDLED; 
	} 
	
	new data[6], iName[64]; 
	new access, callback; 
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); 
	
	new helpText[78]
	formatex(helpText, charsmax(helpText), "%L", LANG_PLAYER, "POINTS_PRICES_MENU_DIRECTIONS2")
	new menuOption = str_to_num(data)
	gChanging2 = menuOption
	gChangerID2 = id
	show_menu(id, MENU_KEY_0, helpText, -1, "setprices menu")
	return PLUGIN_HANDLED
}


public menuHandler(id, key)
{
	gChanging = 0
	gChanging2 = 0
	gChangerID = 0
	gChangerID2 = 0
	return PLUGIN_HANDLED
}
	
public plugin_cfg() {
	SetCheckFilled()
	server_cmd("exec practice.cfg")
	DisplayCommands()
	set_pcvar_string(cvar_humans_join_team, "")
	
	if (!file_exists(gPug_ini_file))
	{
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PUG_INI_ERROR")
		return PLUGIN_HANDLED
	}
	
	switch ( get_pug_state() )
	{
		case 0:
		{
			gEntShowLeft = create_entity("info_target")
			entity_set_string(gEntShowLeft, EV_SZ_classname, "show_left_ent")
			register_think("show_left_ent", "ShowLeft")
			entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 1.0)
			return PLUGIN_HANDLED
		}
		
		case 1:
		{
			g_MapChanged = true
			new taskId = scanForTaskID()
			set_task(20.0, "TeamsVote", taskId)
		}
		
		case 2:
		{
			g_MapChanged = true
			g_CustomGame = true
			set_pug_state(1)
			new taskId = scanForTaskID()
			set_task(20.0, "TeamsVote", taskId)
		}
	}
	
	return PLUGIN_CONTINUE
}

public SetCheckFilled() {
	new taskId = scanForTaskID()
	set_task(5.0, "CheckFilled", taskId)
}

public CheckFilled() {
	
	new players = get_playersnum()
	
	for ( new i = 1 ; i <= gMaxPlayers ; i++ )
	{
		if ( !is_user_connected(i) )
			continue;
		
		if ( is_user_hltv(i) || is_user_bot(i) )
			players--
	}
	
	if (players >= get_pcvar_num(cvar_pLeft))
	{
		new rnd = random_num(99, 9999)
		new pass[10]
		
		num_to_str(rnd, pass, 9)
		
		 
		new tokick = players - get_pcvar_num(cvar_pLeft)
		
		for (new kick; kick<tokick ; kick++)
		{
			new playeract = random(get_pcvar_num(cvar_pLeft))
			
			while ( !is_user_connected(playeract) || !is_user_bot(playeract) || !is_user_hltv(playeract) )
			{
				playeract = random(get_pcvar_num(cvar_pLeft))
			}
			
			server_cmd("kick # %d %s %L", get_user_userid(playeract), PREFIX, LANG_PLAYER, "SERVER_FULL")
		}
		
	}
	
	return PLUGIN_CONTINUE
}


public DisplayCommands() {
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "SHOW_INFO")
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "SHOW_INFO_2")
	new taskId = scanForTaskID()
	set_task(g_IsStarted ? 50.0 : 300.0, "DisplayCommands", taskId)
}

public round_end() {
	if ( g_Restart )
		return PLUGIN_HANDLED
		
	TKRoundsLeft()
	
	if ( g_bFFTKStop )
	{
		g_bFFTKStop = false
		set_pcvar_num(cvar_mp_friendlyfire, 1)
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_ON")
	}
		
	if (g_KnifeRound)
	{
		new Players[32], pNum, ptn, pctn;
		get_players(Players, pNum, "ch")
		for ( new i ; i < pNum ; i++ ) {
			new tempid = Players[i]
			if ( !is_user_alive(tempid) )
				continue;
			else if ( get_member(tempid, m_iTeam) == TEAM_TERRORIST )
				ptn++;
			else if ( get_member(tempid, m_iTeam) == TEAM_CT )
				pctn++;
		}
		
		new WinningTeam
		
		if (ptn > pctn)
		{
			CromChat(0, "&x04%s %L %L", PREFIX, LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_C" : "TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WON")
			set_hudmessage(255, 0, 0, 0.40, 0.71, 0, 6.0, 12.0)
			ShowSyncHudMsg(0, g_MsgSync6, "%L - %L", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_C" : "TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WINNERS")
	
			g_Twon = true
			WinningTeam = T_WIN
		}
		
		else if (pctn > ptn)
		{		
			CromChat(0, "&x04%s %L %L", PREFIX, LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_D" : "COUNTER_TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WON")
			set_hudmessage(255, 0, 0, 0.40, 0.71, 0, 6.0, 12.0)
			ShowSyncHudMsg(0, g_MsgSync6, "%L - %L", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_D" : "COUNTER_TERRORISTS" ), LANG_PLAYER, "KNIFE_ROUND_WINNERS")
			WinningTeam = CT_WIN		
		}
		
		else
		{
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_WITHDRAW")
			set_hudmessage(255, 0, 0, 0.40, 0.71, 0, 6.0, 12.0)
			ShowSyncHudMsg(0, g_MsgSync6, "%L", LANG_PLAYER, "KNIFE_ROUND_WITHDRAWN_HUD")
			new taskId = scanForTaskID()
			set_task(3.0, "SettingsAfter", taskId)
			return PLUGIN_CONTINUE
		}
		KnifeSwitch(WinningTeam)
		return PLUGIN_CONTINUE
	}			
					
	if (g_IsStarted)
	{
		new players[32], pnum, tempid;
	
		new numTt, numCtt;
		
		get_players(players, pnum, "ch")
		
		if ( !( (get_playersnum() != get_pcvar_num(cvar_pLeft)) || (get_pcvar_num(cvar_pLeft) != 10) ) ) 
		{
			for ( new i ; i < pnum ; i++ )
			{
				tempid = players[i]
				
				switch ( get_member(tempid, m_iTeam) )
				{
					case TEAM_TERRORIST: numTt++
					case TEAM_CT: numCtt++
				}
			}
			
			for (new i ; i < pnum ; i++)
			{
				tempid = players[i]
				g_LeftKills[tempid] = (g_LeftKills[tempid]/3)*2
				
				if ( g_KillsAce[tempid] < 4 || get_playersnum() != 10 || !get_pcvar_num(cvar_AceHud) )
				{
					g_KillsAce[tempid] = 0
					continue;
				}
			
				if ( get_member(tempid, m_iTeam) == TEAM_TERRORIST || get_member(tempid, m_iTeam) == TEAM_CT )
				{
					if (g_KillsAce[tempid] == 4)
					{
						new name[32]
						get_user_name(tempid, name, 31)
					
						set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 12.0)
						show_hudmessage(0, "%L", LANG_PLAYER, "DID_A_MINIACE", name)
					}
				
					else if (g_KillsAce[tempid] == 5)
					{
						new name[32]
						get_user_name(tempid, name, 31)
					
						set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 12.0)
						show_hudmessage(0, "%L", LANG_PLAYER, "DID_AN_ACE", name)
					}
				}
				
				g_KillsAce[tempid] = 0
			}
		}
	}
	
	if ( !g_CustomGame || true )
	{
		if (g_IsStarted)
		{
			new numT, numCt;
		
			for ( new i = 1 ; i <= gMaxPlayers ; i++ )
			{
				if ( is_user_connected(i) )
				{
					if ( get_member(i, m_iTeam) == TEAM_TERRORIST )
						numT++
					else if ( get_member(i, m_iTeam) == TEAM_CT )
						numCt++
				}
			}
			
			if ( numT <= (get_pcvar_num(cvar_pLeft)/2) - 2 || numCt <= (get_pcvar_num(cvar_pLeft)/2) - 2 )
			{
				if ( g_NotBalanced == 2 )
				{
					if (numT > numCt)
						CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "T_AUTO_WON")
					else if (numCt > numT)
						CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CT_AUTO_WON")
					else if (numCt == numT)
						CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "NO_TEAM_WON")
					CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "ENDING_MATCH")
					new taskId = scanForTaskID()
					set_task(5.0, "EndMatch", taskId)
					g_NotBalanced = 0
				}

				else
				{
					CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "NOT_ENOUGH_TEAMMATES", (get_pcvar_num(cvar_pLeft)/2) - 2)
					CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "NOT_ENOUGH_TEAMMATES2", 2 - g_NotBalanced )
					g_NotBalanced++
				}
			}
			
			else
				g_NotBalanced = 0;
		}
	}
							
	return PLUGIN_HANDLED			
	
}

public TKRoundsLeft()
{
	for ( new i ; i < sizeof(g_RoundsLeft) ; i++ )
	{
		if ( g_RoundsLeft[i] != -1 )
			g_RoundsLeft[i]--
	}
}

public LR() {
	set_hudmessage(255, 255, 255, 0.07, 0.69, 0, 6.0, 12.0)
	ShowSyncHudMsg(0, g_MsgSync6, "%L", LANG_PLAYER, "LAST_ROUND")
}

public scndhalf() {
	server_cmd("sv_restart 1")
	new taskId = scanForTaskID()
	set_task(3.0, "showscnd", taskId)
}

public showscnd() {
	set_hudmessage(255, 255, 255, 0.06, 0.34, 0, 6.0, 18.0)
	ShowSyncHudMsg(0, g_MsgSync3, "%L", LANG_PLAYER, "SECOND_HALF_STARTED")
	return PLUGIN_HANDLED
}
	
	
		
public Event_TeamScore() {
	if ( g_Restart )
		return PLUGIN_HANDLED
		
	if (g_IsStarted) 
	{
		read_data(1, g_szTeamName, 1)
   
		g_iTeam = (g_szTeamName[0] == 'T') ? 0 : 1
		g_iAltScore = read_data(2)
		g_iScoreOffset = g_iAltScore - g_iLastTeamScore[g_iTeam]
	
		if(g_iScoreOffset > 0)
		{
			g_iScore[g_iTeam] += g_iScoreOffset
		}
	
		g_iLastTeamScore[g_iTeam] = g_iAltScore
		
		if (g_iScore[0] + g_iScore[1] == 14)
		{
			new taskId = scanForTaskID()
			set_task(10.0, "LR", taskId)
		}
		
		else if (g_iScore[0] + g_iScore[1] == 15)
		{
			if (g_bStop2)
			{
				return PLUGIN_HANDLED;
			}
			
			g_bStop2 = true
			SwitchTeams()
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "SWITCH_TEAMS")
			new taskId = scanForTaskID()
			set_task(10.0, "scndhalf", taskId)
		}
		
		else if ((g_iScore[0] == 16) || (g_iScore[1] == 16))
		{
			if (g_bStop)
			{
				return PLUGIN_HANDLED
			}
			
			g_bStop = true
			EndMatch()
			return PLUGIN_HANDLED
		}
		
		else if ((g_iScore[0] == 15) || (g_iScore[1] == 15))
		{
			new taskId = scanForTaskID()
			set_task(10.0, "LRFif", taskId)
			return PLUGIN_HANDLED
		}
		
		
		ClientCommand_SayScore()
	}

	return PLUGIN_HANDLED
}

public LRFif() {
	if ((g_iScore[1] == 16) || (g_iScore[0] == 16))
		return PLUGIN_HANDLED
	
	set_hudmessage(255, 255, 255, 0.06, 0.62, 0, 6.0, 12.0)
	
	ShowSyncHudMsg(0, g_MsgSync6, "%L (%L) %d - %d (%L)", LANG_PLAYER, "LAST_ROUND", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_C" : "COUNTER_TERRORISTS" ), g_iScore[g_Twon ? 0 : 1], g_iScore[g_Twon ? 1 : 0], LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_D" : "TERRORISTS" ) )
	return PLUGIN_HANDLED
}

public ClientCommand_SayScore() {
	if (g_Twon)
	{
		if (g_bSecondHalf)
		{
			if (g_bDidScore)
			{
				showscore(0)
				g_bDidScore = false
			}
			else
				g_bDidScore = true
		}
	
		else
		{
			if (g_bDidScore) 
			{
				showscore(0)
				g_bDidScore = false
			}
			else
				g_bDidScore = true
		}
	}
	
	else
	{
		
		if (g_bSecondHalf)
		{
			if (g_bDidScore)
			{
				showscore(0)
				g_bDidScore = false
			}
			else
				g_bDidScore = true
		}
	
		else
		{
			if (g_bDidScore)
			{
				showscore(0)
				g_bDidScore = false
			}
			else
				g_bDidScore = true
		}
	}
	
	return PLUGIN_HANDLED
	
}

public client_disconnect(id) {
	if ( is_user_bot(id) || is_user_hltv(id) || !( 1 <= id <= gMaxPlayers ) )
		return PLUGIN_HANDLED
		
	if ( id == gChangerID )
	{
		gChangerID = 0
		gChanging = 0
	}
	
	else if ( id == gChangerID2 )
	{
		gChangerID2 = 0
		gChanging2 = 0
	}
	
	if ( g_IsStarted )
	{
		g_PugLeaves++
		DidTK(id)
		
		if ( get_pcvar_num(cvar_RanksSystem) )
		{
			gPoints[id] -= get_pcvar_num(cvar_LeavesMatchPoints)
			enterLeaveRecord(id)
		}
	}
		
	clear_list(id)
	gDidPlayUntilEnd[id] = false
	g_LeftVotes[id] = 0
	g_TotalKills[id] = 0
	g_TotalDeaths[id] = 0
	g_BombPlants[id] = 0
	g_BombDefusions[id] = 0
	
	if ( g_givenChance[id] )
		get_user_authid(id, g_givenChanceSteamIDs[g_givenTimes++], charsmax(g_givenChanceSteamIDs[]))
	g_givenChance[id] = false
	
	if (g_bIsReady[id])
	{
		gPlayersLeft++
	}
	
	g_bIsReady[id] = false
	remove_task(id)
	remove_task(id+SET_CONST_TASKID)
	
	return PLUGIN_HANDLED
}
		
public client_connect(id)
{
	if (is_user_bot(id) || is_user_hltv(id) || (!is_user_connected(id) && !is_user_connecting(id)) || !(1 <= id <= gMaxPlayers))
		return PLUGIN_HANDLED;
	
	g_afktime[id] = 0.0
	g_LeftVotes[id] = 0
	gTypedCommand[id] = 0.0
	g_KillsAce[id] = 0
	
	if (!file_exists(gPug_ini_file))
	{
		CromChat(0, "&x04%s %L", PREFIX, "PUG_INI_ERROR")
		return PLUGIN_HANDLED
	}
		
	if (get_pug_state() == 1)
	{
		g_LeftKills[id] = 0
		return PLUGIN_HANDLED
	}
	
	if (g_bCpt && is_user_connected(id))
	{
		if (get_member(id, m_iTeam) != TEAM_UNASSIGNED)
		{
			rg_set_user_team(id, TEAM_SPECTATOR);
			rg_set_user_team(id, TEAM_SPECTATOR)
			return PLUGIN_HANDLED
		}
		
		else
			set_task(1.0, "client_connect", id)
		return PLUGIN_HANDLED
	}
	
	if ( !( g_AfterRdy || g_IsStarted ) )
	{
		g_bIsReady[id] = false
		remove_task(id)
		g_iTimeLeft[id] = get_pcvar_num(cvar_TimeLeft)
		g_LeftKills[id] = 0
		ToSetTaskToInfo(id)
	}
	
	return PLUGIN_HANDLED
}

public client_authorized(id)
{
	if ( is_user_hltv(id) || is_user_bot(id) )
		return;
		
	LoadStats(id)
	
	new authID[64]
	get_user_authid(id, authID, charsmax(authID))
	
	for ( new i ; i < g_givenTimes ; i++ )
	{
		if ( equal(authID, g_givenChanceSteamIDs[i]) )
		{
			for ( new z ; z < sizeof(g_givenChanceSteamIDs[]) ; z++ )
				g_givenChanceSteamIDs[i][z] = 0
			
			for ( new z = i ; z < g_givenTimes ; z++ )
				copy(g_givenChanceSteamIDs[z], charsmax(g_givenChanceSteamIDs[]), g_givenChanceSteamIDs[z+1])
			
			for ( new z ; z < sizeof(g_givenChanceSteamIDs[]) ; z++ )
				g_givenChanceSteamIDs[g_givenTimes][z] = 0
			
			g_givenTimes--
			g_givenChance[id] = true
		}
	}
	
	if ( g_IsStarted )
		set_task(0.1, "returnPointsIfDeserves", id)
}

public DidTK(id)
{
	if ( g_LeftKills[id] >= 40 )
	{
		new ip[64], name[64], szAdd[128]
		get_user_ip(id, ip, charsmax(ip), 1)
		get_user_name(id, name, charsmax(name))
		
		for ( new i ; i < sizeof(g_LeftBans) ; i++ )
		{
			if ( equali(g_LeftBansIPs[i], ip) )
				break;
				
			else if ( !g_LeftBans[i][0] && !g_LeftBansIPs[i][0] )
			{
				formatex(szAdd, charsmax(szAdd), "%s - [\r%L\w]", name, LANG_PLAYER, "TK_BAN_MENU_ITEM")
				copy(g_LeftBans[i], charsmax(g_LeftBans[]), szAdd)
				copy(g_LeftBansIPs[i], charsmax(g_LeftBansIPs[]), ip)
				g_RoundsLeft[id] = 3
			}
		}
	}
}	

public enterLeaveRecord(id)
{
	get_user_authid(id, gLeftSteamIDs[gLeftTimes], charsmax(gLeftSteamIDs[]))
	gLastTime[gLeftTimes++] = get_systime()
}
	
public returnPointsIfDeserves(id)
{
	if ( !is_user_connected(id) || !( 1 <= id <= gMaxPlayers ) )
		return;
		
	new authid[64]
	get_user_authid(id, authid, charsmax(authid))
	for ( new i ; i < gLeftTimes ; i++ )
	{
		if ( equali(authid, gLeftSteamIDs[i]) )
		{		
			if ( get_systime() - gLastTime[i] <= get_pcvar_num(cvar_LeavesMatchTime) )
			{
				gPoints[id] += get_pcvar_num(cvar_LeavesMatchPoints)
				SaveStats(id)
			}
			
			for ( new z ; z < sizeof(gLeftSteamIDs[]) ; z++ )
				gLeftSteamIDs[i][z] = 0
			
			for ( new z = i ; z < gLeftTimes ; z++ )
				copy(gLeftSteamIDs[z], charsmax(gLeftSteamIDs[]), gLeftSteamIDs[z+1])
			
			for ( new z ; z < sizeof(gLeftSteamIDs[]) ; z++ )
				gLeftSteamIDs[gLeftTimes][z] = 0
			
			for ( new z = i ; z < sizeof(gLastTime) ; z++ )
				gLastTime[z] = gLastTime[z+1]
				
			gLastTime[gLeftTimes--] = 0
		}
	}
}	

public CheckFull(id) {
	if (get_maxplayers() == get_pcvar_num(cvar_pLeft))
		return PLUGIN_HANDLED
		
	new players[32], pnum
	get_players(players, pnum, "ch")
	
	if ( pnum == get_pcvar_num(cvar_pLeft) && get_playersnum() != get_maxplayers() )
	{
		new rnd = random_num(99, 9999)
		new pass[10]
		
		num_to_str(rnd, pass, 9)
		
		
		new players[32], pnum, tempid;
		
		get_players(players, pnum, "ch")
		
		for (new full; full<pnum ; full++)
		{
			players[full] = tempid
			
			if (is_user_connecting(tempid))
				server_cmd("kick # %d %s %L", get_user_userid(tempid), PREFIX, LANG_PLAYER, "SERVER_FULL")
				
		}
				
	}
	
	else if (pnum > get_pcvar_num(cvar_pLeft))
	{
		server_cmd("kick # %d %s %L", get_user_userid(id), PREFIX, LANG_PLAYER, "SERVER_FULL")
	}
	
	return PLUGIN_HANDLED
}

public CheckNow() {
	CromChat(0, "&x04get_playersnum() == %d", get_playersnum())
	
	if (get_playersnum() > get_pcvar_num(cvar_pLeft))
	{
		new tokick = get_playersnum() - get_pcvar_num(cvar_pLeft)
		
		for (new kick; kick<tokick ; kick++)
		{
			new playeract = random(get_pcvar_num(cvar_pLeft))
			
			while (!is_user_connected(playeract))
			{
				playeract = random(get_pcvar_num(cvar_pLeft))
			}
			
			server_cmd("kick %d %s %L", get_user_userid(playeract), PREFIX, LANG_PLAYER, "SERVER_FULL")
		}
	}
	
	new rnd = random_num(99, 9999)
	new pass[10]
		
	num_to_str(rnd, pass, 9)
		
	return PLUGIN_CONTINUE
}
		
public DoAgain(id) {
	
	if ( !is_user_connected(id) || !( 1 <= id <= gMaxPlayers ) )
		return PLUGIN_HANDLED
	if (!file_exists(gPug_ini_file))
	{
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PUG_INI_ERROR")
		return PLUGIN_HANDLED
	}
		
	if (get_pug_state() == 1)
	{
		g_LeftKills[id] = 0
		return PLUGIN_HANDLED
	}
	
	if ( !g_AfterRdy && !g_IsStarted)
	{
		g_KillsAce[id] = 0
		g_bIsReady[id] = false
		remove_task(id)
		g_iTimeLeft[id] = get_pcvar_num(cvar_TimeLeft)
		g_LeftKills[id] = 0
		ToSetTaskToInfo(id)
	}
	
	return PLUGIN_HANDLED
}

public client_putinserver(id) {		
		  
	g_afktime[id] = 0.0
	
	if (is_user_bot(id) || is_user_hltv(id))
		return PLUGIN_HANDLED;
		
	if ( get_playersnum() == 1 && ( g_IsStarted || g_AfterRdy || g_KnifeRound ) )
	{
		server_cmd("restart")
		return PLUGIN_HANDLED
	}
	
	if ( get_playersnum() == 1 && !g_AfterRdy && !g_IsStarted )
		entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 1.0)
		
	CheckFull(id)	
	clear_list(id)
	
	if (g_IsStarted || g_AfterRdy || g_KnifeRound)
	{
		g_LeftKills[id] = 0
		MoveFromSpec(id) 
		return PLUGIN_HANDLED
	}	
	set_task(10.0, "say_add", id)
	set_task(30.0, "CheckUnAssigned", id)
	return PLUGIN_HANDLED
}

public say_add(id)
{
	client_cmd(id,"say !add")
}

public CheckUnAssigned(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED
		
	if(get_member(id, m_iTeam) == TEAM_UNASSIGNED)
	{
		new name[50]
		
		get_user_name(id, name, 49)
		
		server_cmd("kick # %d %s %L", get_user_userid(id), PREFIX, LANG_PLAYER, "AFK_LOGIN")
		CromChat(0, "&x04%s %s %L", PREFIX, name, LANG_PLAYER, "CLIENT_AFK_KICKED")
	}
	
	return PLUGIN_HANDLED
}

public ShowInfo(id)
{
	id -= SET_CONST_TASKID
	
	if (!is_user_connected(id) || !(1 <= id <= gMaxPlayers))
		return PLUGIN_HANDLED
	
	static hostname[64]
	
	get_cvar_string("hostname", hostname, 63)
	
	if (g_bIsReady[id] || g_IsStarted || g_AfterRdy || g_iTimeLeft[id] < 0)
	{
		remove_task(id+SET_CONST_TASKID)
		remove_task(id)
		return PLUGIN_HANDLED
	}
	
	set_hudmessage(0, 212, 255, 0.23, 0.265, 0, 6.0, 1.0)
	ShowSyncHudMsg(id, g_MsgSync4, "%L", LANG_PLAYER, "PLAYER_PERSONAL_INFO", hostname, g_iTimeLeft[id])
	return PLUGIN_CONTINUE
}

public Continue(id)
{
	if ( !is_user_connected(id) || !( 1 <= id <= gMaxPlayers ) || is_user_bot(id) || is_user_hltv(id) )
		return PLUGIN_HANDLED
		
	if (g_IsStarted || g_AfterRdy)
	{
		return PLUGIN_HANDLED
	}
	
	if (g_bIsReady[id])
	{
		return PLUGIN_HANDLED
	}
	g_iTimeLeft[id] -= 1
	
	
	switch(g_iTimeLeft[id]) {
		case 120: CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
		case 90: CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
		case 60: CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
		case 30: {
			CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
			set_hudmessage(42, 127, 255, 0.07, 0.70, 0, 6.0, 12.0)
			ShowSyncHudMsg(id, g_MsgSync, "30 %L", LANG_PLAYER, "TYPE_READY_HUD")
		}
		case 10: {
			CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "TYPE_READY", g_iTimeLeft[id])
			set_hudmessage(42, 127, 255, 0.07, 0.70, 0, 6.0, 12.0)
			ShowSyncHudMsg(id, g_MsgSync, "10 %L", LANG_PLAYER, "TYPE_READY_HUD")
		}
		case 0: {
			if ( is_user_connecting(id) )
				DoAgain(id)
			else {
				new playername[32]
				get_user_name(id, playername, 31)
				server_cmd("amx_banip #%d 1 ^"%s %L^"", get_user_userid(id), PREFIX, LANG_PLAYER, "ADD_TIME_OVER", get_pcvar_num(cvar_TimeLeft))
				CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CLIENT_ADD_KICKED", playername, get_pcvar_num(cvar_TimeLeft))
			}
		}
	}
	
	return PLUGIN_HANDLED
}

public CrashAttempt(id) {
	if ( !( 1 <= id <= gMaxPlayers ) || !is_user_connected(id) )
		return
		
	if ( get_gametime() - gTypedCommand[id] <= 1.0 ) {
		gTypedCommand[id] = get_gametime()
		return
	}
	
	gTypedCommand[id] = get_gametime()
}

public Prepare(id) {
	if (g_AfterRdy || g_IsStarted || g_MapChanged)  {
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "MATCH_ALREADY_STARTED")
		return PLUGIN_HANDLED
	}	
	if( g_bIsReady[id] ) {
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ALREADY_TYPED_ADD")
		return PLUGIN_HANDLED
	}
	else {
		CrashAttempt(id)
			
		new playername[32]
		get_user_name(id, playername, 31)
		g_bIsReady[id] = true
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "YOU_ARE_READY")
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "HE_IS_READY", playername)
		gPlayersLeft--
		remove_task(id)
	}
	if (gPlayersLeft != 0)
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PLAYERS_LEFT", gPlayersLeft)
	else {
		g_AfterRdy = true
		removeAllTasks()
		new taskId = scanForTaskID()
		
		if ( get_pcvar_num(cvar_MapVote) )
		{
			for ( new i ; i < 3 ; i++ )
				CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MAP_VOTE_BEGINS")
			set_task(10.0, "StartVote", taskId)
		}
		
		else
		{
			for ( new i ; i < 3 ; i++ )
				CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_BEGINS")
			set_task(10.0, "TeamsVote", taskId)
		}
	}

	
	return PLUGIN_HANDLED
}

public forcedStart_AdminCmd(id)
{
	if ( !is_user_admin(id) )
	{
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ADMINS_ONLY")
		return PLUGIN_HANDLED
	}
	
	new taskId = scanForTaskID()
	g_AfterRdy = true
	g_CustomGame = true
	
	if ( get_pcvar_num(cvar_MapVote) )
	{
		for ( new i ; i < 3 ; i++ )
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MAP_VOTE_BEGINS")
		set_task(10.0, "StartVote", taskId)
	}
		
	else
	{
		for ( new i ; i < 3 ; i++ )
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_BEGINS")
		set_task(10.0, "TeamsVote", taskId)
	}
	
	return PLUGIN_CONTINUE
}

public forcedStop_AdminCmd(id)
{
	if ( !is_user_admin(id) )
	{
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ADMINS_ONLY")
		return PLUGIN_HANDLED
	}
	
	new pName[64]
	get_user_name(id, pName, charsmax(pName))
	set_hudmessage(255, 0, 0, 0.28, 0.64, 1, 6.0, 12.0)
	show_hudmessage(id, "%L", LANG_PLAYER, "MATCH_STOPPED", pName)
	
	set_pug_state(0)
	EndMatch()
	return PLUGIN_CONTINUE
}

public ToSetTaskToInfo(id)
{
	set_task(1.0, "ShowInfo", id+SET_CONST_TASKID, .flags="a", .repeat=130)
	set_task(1.0, "Continue", id, .flags="a", .repeat=130)
}

public unPrepare(id) {
	if (g_AfterRdy || g_IsStarted || g_MapChanged)  {
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "MATCH_ALREADY_STARTED")
		return PLUGIN_HANDLED
	}
	
	if (g_bIsReady[id]) {
		CrashAttempt(id)
		
		gPlayersLeft++
		g_bIsReady[id] = false
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "YOU_ARE_NOT_READY")
		g_iTimeLeft[id] = get_pcvar_num(cvar_TimeLeft)
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PLAYERS_LEFT", gPlayersLeft)
		ToSetTaskToInfo(id)
	}
	
	else
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ADD_NOT_TYPED")
	
	return PLUGIN_HANDLED
}

public ShowLeft(ent) {
	if ( g_IsStarted || g_AfterRdy )
	{
		entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 99999999.0)
		return PLUGIN_HANDLED
	}
		
	if ( !get_playersnum() )
	{
		entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 99999999.0)
		return PLUGIN_HANDLED
	}
		
	if ( !get_pcvar_num(cvar_pLeftMethod) || get_pcvar_num(cvar_pLeftMethod) == 2 )
		showNotReady()
	if ( get_pcvar_num(cvar_pLeftMethod) )
		showReady()
		
	entity_set_float(gEntShowLeft, EV_FL_nextthink, halflife_time() + 1.0)
	return PLUGIN_HANDLED
}

public showNotReady()
{
	if (gPlayersLeft != 0) 
	{ 
		new players[32], pnum, tempid;  
		get_players(players, pnum, "ch"); 
		
		for( new i; i<pnum; i++ )  {  
			tempid = players[i];  
			if (g_bIsReady[tempid] == false) { 
				new playername[32]
				get_user_name(tempid, playername, 31)
				add( gNotRdy, charsmax( gNotRdy ), "^n" );
				add( gNotRdy, charsmax( gNotRdy ), playername );
			}
		} 
			 
	}
		
	else
		return;
		
	new playersl[2]
	new toadd[64]
	formatex(toadd, charsmax(toadd), " %L", LANG_PLAYER, "PLAYERS_LEFT_HUD")
	num_to_str(gPlayersLeft, playersl, 2)
	trim(playersl)
	add(gNotRdy, charsmax(gNotRdy), "^n^n")
	add(gNotRdy, charsmax(gNotRdy), playersl)
	add(gNotRdy, charsmax(gNotRdy), toadd)
	set_hudmessage(0, 255, 0, get_pcvar_float(cvar_NotReadyXPos), get_pcvar_float(cvar_NotReadyYPos), 0, 6.0, 1.0, _, _, 1)
	show_hudmessage(0, gNotRdy)
	formatex(gNotRdy, charsmax(gNotRdy), "%L:^n", LANG_PLAYER, "HUD_NOT_READY") 
}

public showReady()
{
	new readyPlayers
	
	if (gPlayersLeft != 0) 
	{ 
		new players[32], pnum, tempid;  
		get_players(players, pnum, "ch"); 
		
		for( new i; i<pnum; i++ )  {  
			tempid = players[i];  
			if ( g_bIsReady[tempid] ) { 
				new playername[32]
				readyPlayers++
				get_user_name(tempid, playername, 31)
				add( gRdy, charsmax( gRdy ), "^n" );
				add( gRdy, charsmax( gRdy ), playername );
			}
		} 
			 
	}
		
	else
		return;
	
	new playersl[2], toAdd[65]
	formatex(toAdd, charsmax(toAdd), " %L", LANG_PLAYER, "HUD_PLAYERS_READY")
	num_to_str(readyPlayers, playersl, 2)
	add(gRdy, charsmax(gNotRdy), "^n^n")
	add(gRdy, charsmax(gNotRdy), playersl)
	add(gRdy, charsmax(gNotRdy), toAdd)
	set_hudmessage(0, 255, 0, get_pcvar_float(cvar_ReadyXPos), get_pcvar_float(cvar_ReadyYPos), 0, 6.0, 1.0, _, _, 2)
	show_hudmessage(0, gRdy)
	formatex(gRdy, charsmax(gRdy), "%L:^n", LANG_PLAYER, "HUD_READY")
}

public credits(id) {
	CromChat(id, "%L", LANG_PLAYER, "CREDITS_1")
	CromChat(id, "%L", LANG_PLAYER, "CREDITS_2")
	return PLUGIN_CONTINUE
}

public cmds(id) {
	CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "CMDS_1")
	CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "CMDS_2")
	CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "CMDS_3")
	CromChat(id, "%L", LANG_PLAYER, "AUTO_MIX_BY", VERSION)
	return PLUGIN_HANDLED
}

public StartVote()  {  
	getmaps() 
	new rnd 
	while (g_DoneMaps != 4 && g_MapsCounter > 0) { 
		rnd = random(g_MapsCounter) 
		copy(g_MapsChosen[g_DoneMaps++], 19, g_MapsAvailable[rnd]) 
		g_MapsAvailable[rnd] = g_MapsAvailable[--g_MapsCounter] 
	}		 
		 
	new title[64], extend[64]
	formatex(title, charsmax(title), "\r%L", LANG_PLAYER, "CHANGE_MAP")
	formatex(extend, charsmax(extend), "&x01%L", LANG_PLAYER, "EXTEND_MAP")
	g_gVoteMenu = menu_create(title, "votemap"); 

	new num[11] 
	for(new i = 0; i < g_DoneMaps; i++)  { 
		num_to_str(i, num, 10) 
		menu_additem(g_gVoteMenu, g_MapsChosen[i], num, 0)
	}
	menu_additem(g_gVoteMenu, extend, "4", 0) 
	menu_setprop(g_gVoteMenu, MPROP_EXIT, MEXIT_NEVER)
	
	new players[32], pnum, tempid; 
	get_players(players, pnum, "ch"); 
	for( new i; i<pnum; i++ ) { 
		tempid = players[i]; 
		CromChat(tempid, "&x04%s %L", PREFIX, LANG_PLAYER, "PLEASE_VOTE_MAP") 
		menu_display(tempid, g_gVoteMenu); 
	}
	client_cmd(0, "spk ^"get red(e80) ninety(s45) to check(e20) use bay(s18) mass(e42) cap(s50)^"")  
	new taskId = scanForTaskID()
	set_task(10.0, "EndVote", taskId);  
	return PLUGIN_HANDLED; 
} 
 
 
public votemap(id, menu, item) {
	if( item == MENU_EXIT ) {
		menu_display(id, g_gVoteMenu)
		return PLUGIN_HANDLED;
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new voteid = str_to_num(data);
	new playerna[32]
	get_user_name(id, playerna, 31)
	
	if (voteid != 4)
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "VOTED_MAP", playerna, g_MapsChosen[voteid])
	else 
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "VOTED_EXTEND", playerna)
	
	g_gVotes[voteid]++;
	return PLUGIN_HANDLED;
}

public getmaps() { 
	new mapsfile = fopen(g_Maps_Ini_File, "r") 
	new linefortest[50] 
	 
	while (g_MapsCounter < sizeof(g_MapsAvailable) && !feof(mapsfile)) { 
		fgets(mapsfile, linefortest, 49) 
		trim(linefortest) 
		
		new getcurrentmap[32]
		get_mapname(getcurrentmap, 31)
		
		if ((is_map_valid(linefortest)) && (!equali(linefortest, getcurrentmap))) 
			copy(g_MapsAvailable[g_MapsCounter++], 24, linefortest)  
	} 
	 
	fclose(mapsfile) 
}  

public EndVote() { 
	show_menu(0, 0, "^n", 1); 
	new best = 0; 
	for(new i = 1; i < sizeof(g_gVotes); i++) { 
		if(g_gVotes[i] > g_gVotes[best]) 
		best = i; 
	}
	
	g_gVotes[0] = 0
	g_gVotes[1] = 0
	g_gVotes[2] = 0
	g_gVotes[3] = 0
	g_gVotes[4] = 0
	 
	if(best == 4) { 
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "EXTEND_FINAL"); 
		TeamsVote()
	} 
	else { 
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MAP_FINAL", g_MapsChosen[best]); 
		g_ChangeMapTo = best;
		
		if ( g_CustomGame )
			set_pug_state(2)
		else
			set_pug_state(1)
			
		new taskId = scanForTaskID()
		set_task(10.0, "ChangeMap", taskId); 
	} 
	
	return PLUGIN_HANDLED
}  

public ChangeMap() {
	new maptochangeto[25]
	
	copy(maptochangeto, 24, g_MapsChosen[g_ChangeMapTo])
	server_cmd("changelevel %s", maptochangeto)
	return PLUGIN_CONTINUE
}

public FriendlyFire() {
	new title[64]
	formatex(title, charsmax(title), "\r%L", LANG_PLAYER, "FF_MENU_TITLE")
	g_fVoteMenu = menu_create(title, "voteFF");
	
	new itemOn[10], itemOff[10]
	formatex(itemOn, charsmax(itemOn), "%L", LANG_PLAYER, "MENU_ITEM_ON")
	formatex(itemOff, charsmax(itemOff), "%L", LANG_PLAYER, "MENU_ITEM_OFF")
	
	menu_additem(g_fVoteMenu, itemOn)
	menu_additem(g_fVoteMenu, itemOff)
	
	new pplayers[32], ppnum, ptempid;
	
	get_players(pplayers, ppnum, "ch");

	for( new i; i<ppnum; i++ ){
		ptempid = pplayers[i]
		CromChat(ptempid, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_PICK")
		menu_display(ptempid, g_fVoteMenu, 0)
	}
	new taskId = scanForTaskID()
	set_task(10.0, "EndFFVote", taskId)
	return PLUGIN_HANDLED
}

public voteFF(id, menu, item) {
	if( item == MENU_EXIT ) {
		menu_display(id, g_fVoteMenu)
		return PLUGIN_HANDLED;
	}

	new playername[32]
	get_user_name(id, playername, 31)
	
	switch(item) {
		case 0:	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_VOTED_ON",playername)
		case 1:	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_VOTED_OFF", playername)
	}
	
	g_fVotes[item]++;
	return PLUGIN_HANDLED;
}

public EndFFVote() {
	show_menu(0, 0, "^n", 1); 
	new best = 0; 
	for(new i = 1; i < sizeof(g_fVotes); i++) { 
		if(g_fVotes[i] > g_fVotes[best]) 
			best = i; 
	}
	g_fVotes[0] = 0
	g_fVotes[1] = 0
	 
	switch(best){
		case 0:	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_BE_ON")
		case 1: {
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_BE_OFF") 
			g_bFFoff = true
		}
	}
	new taskId = scanForTaskID()
	set_task(5.0, "StartMatch", taskId)
	return PLUGIN_HANDLED
}


public TeamsVote() {	
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_START")
	new taskId = scanForTaskID()
	set_task(10.0, "TeamsVote2", taskId)
}
 
public TeamsVote2() { 	
	if ( !g_CustomGame ) {
		if (get_playersnum() < get_pcvar_num(cvar_pLeft) - 2) {
			if (g_DidWaitEnough == 16) {
				CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PLAYERS_NOT_JOINING")
				set_pug_state(0)
				g_IsStarted = false 
				g_AfterRdy = false
				new taskId = scanForTaskID()
				set_task(3.0, "MatchIsOver", taskId)
				return PLUGIN_HANDLED
			}
			
			new sum
			sum = g_DidWaitEnough * 15
			sum = 300 - sum
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_VOTE_DELAY")
			set_hudmessage(255, 0, 0, 0.35, 0.66, 0, 6.0, 12.0)
			ShowSyncHudMsg(0, g_MsgSync6, "%L", LANG_PLAYER, "TEAMS_VOTE_DELAY_HUD", sum)
			g_DidWaitEnough++
			new taskId = scanForTaskID()
			set_task(15.0, "TeamsVote2", taskId)
			return PLUGIN_HANDLED
		}
			
	}
	
	set_pug_state(0)
	g_MapChanged = false
	g_AfterRdy = true
	g_DidWaitEnough = 0
	
	new title[86]
	new option1[32], option2[35], option3[35]
	formatex(title, charsmax(title), "\r%L", LANG_PLAYER, "TEAMS_TITLE")
	formatex(option1, charsmax(option1), "%L", LANG_PLAYER, "SAME_TEAMS")
	formatex(option2, charsmax(option2), "%L", LANG_PLAYER, "RANDOM_CAPTAINS")
	formatex(option3, charsmax(option3), "%L", LANG_PLAYER, "RANDOM_TEAMS")
	g_rVoteMenu = menu_create(title, "voteteams");
	menu_additem(g_rVoteMenu, option1)
	menu_additem(g_rVoteMenu, option2)
	menu_additem(g_rVoteMenu, option3)
	
	new pplayers[32], ppnum, ptempid;
	get_players(pplayers, ppnum, "ch");

	for( new i; i<ppnum; i++ ) {
		ptempid = pplayers[i]
		CromChat(ptempid, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_PLEASE_VOTE")
		menu_display(ptempid, g_rVoteMenu)
	}

	client_cmd(0, "spk Gman/Gman_Choose1")
	new taskId = scanForTaskID()
	set_task(10.0, "EndTeamsVote", taskId)
	return PLUGIN_HANDLED
}

public voteteams(id, menu, item) {
	if( item == MENU_EXIT ) {
		menu_display(id, menu)
		return PLUGIN_HANDLED;
	}
	
	new players[32], pnum, tempid
	new bool:IsThereBot
	get_players(players, pnum, "h")
	
	for ( new i ; i < pnum ; i++ )
	{
		tempid = players[i]
		
		if ( is_user_bot(tempid) )
			IsThereBot = true
	}
	
	new playername[32]
	get_user_name(id, playername, 31)
	
	if ( IsThereBot && item == 1 )
	{
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "NOT_AVAILABLE_WITH_BOTS")
		menu_display(id, menu)
		return PLUGIN_HANDLED
	}
	
	switch(item) {
		case 0:	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "VOTED_SAME", playername)
		case 1:	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "VOTED_CAPTAINS", playername)
		case 2:	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "VOTED_RANDOM", playername)
	}
	g_rVotes[item]++;
	return PLUGIN_HANDLED;
}
	
public EndTeamsVote() {
	show_menu(0, 0, "^n", 1); 
	new best = 0; 
	for(new i = 1; i < sizeof(g_rVotes); i++) { 
		if(g_rVotes[i] > g_rVotes[best]) 
			best = i; 
	} 
	 
	switch(best) {
		case 0:
		{
			new playersT[32] , numT , playersCt[32] , numCt
			get_players( playersT , numT , "che" , "TERRORIST" )
			get_players( playersCt , numCt , "che" , "CT" ) 
			g_rVotes[0] = 0
			g_rVotes[1] = 0
			g_rVotes[2] = 0
			
			if (numT != numCt)
			{
				CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_NOT_BALANCED")
				new taskId = scanForTaskID()
				set_task(10.0, "RandomTeams", taskId)
				return PLUGIN_HANDLED
			}
			
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_WILL_REMAIN_SAME") 
			new taskId = scanForTaskID()
			set_task(10.0, "CurrentTeams", taskId)
		}
		case 1: 
		{
			g_rVotes[0] = 0
			g_rVotes[1] = 0
			g_rVotes[2] = 0
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_WILL_BE_CAPTAINS") 
			new taskId = scanForTaskID()
			set_task(10.0, "RandomCpt", taskId) 
		}
		case 2:
		{
			g_rVotes[0] = 0
			g_rVotes[1] = 0
			g_rVotes[2] = 0
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_WILL_BE_RANDOM") 
			new taskId = scanForTaskID()
			set_task(10.0, "RandomTeams", taskId)
		}
	}
	
	return PLUGIN_HANDLED
}

public CurrentTeams() {
	new players[32], pnum, tempid;
	get_players(players, pnum, "ch"); 
		
	for( new i; i<pnum; i++ ) {  
		tempid = players[i]
		if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR)
			set_task(1.0, "MoveFromSpec", tempid)
	}
	StartMatch()
}


public MoveFromSpec(id) {
	new playersT[ 32 ] , numT , playersCt[ 32 ] , numCt
	get_players( playersT , numT , "che" , "TERRORIST" )
	get_players( playersCt , numCt , "che" , "CT" )	
	
	if (g_Twon) {
		if (g_bSecondHalf) {
			if( numT > numCt )
			{
				set_pcvar_string(cvar_humans_join_team, "CT")
				client_cmd(id, "slot1")
				ChangeTagB(id)
			}

			else
			{
				set_pcvar_string(cvar_humans_join_team, "T")
				client_cmd(id, "slot1")
				ChangeTagA(id)
			}
		}
		
		else
		{
			if( numT > numCt )
			{
				set_pcvar_string(cvar_humans_join_team, "CT")
				client_cmd(id, "slot1")
				ChangeTagA(id)
			}

			else
			{
				set_pcvar_string(cvar_humans_join_team, "T")
				client_cmd(id, "slot1")
				ChangeTagB(id)
			}	
		}
	}
	
	else
	{
		if (g_bSecondHalf)
		{
			if( numT > numCt )
			{
				set_pcvar_string(cvar_humans_join_team, "CT")
				client_cmd(id, "slot1")
				ChangeTagA(id)
			}

			else
			{
				set_pcvar_string(cvar_humans_join_team, "T")
				client_cmd(id, "slot1")
				ChangeTagB(id)
			}
		}
		
		else
		{
			if( numT > numCt )
			{
				set_pcvar_string(cvar_humans_join_team, "CT")
				client_cmd(id, "slot1")
				ChangeTagB(id)
			}

			else
			{
				set_pcvar_string(cvar_humans_join_team, "T")
				client_cmd(id, "slot1")
				ChangeTagA(id)
			}	
		}
	}
	
	if (g_bCpt) {
		client_cmd(id, "kill")
		rg_set_user_team(id, TEAM_SPECTATOR)
	}
	
	return PLUGIN_CONTINUE
}

public RandomCpt() {
	set_pcvar_num(cvar_mp_freezetime, 9999)
	new players[32], pnum, tempid;
	get_players(players, pnum, "ch");
	new specialCount

	for( new i; i<pnum; i++ ) {
		tempid = players[i];
		client_cmd(tempid, "kill")
		
		if ( get_member(tempid, m_iTeam) != TEAM_UNASSIGNED )
		{
			specialCount++
			user_kill(tempid);
			rg_set_user_team(tempid, TEAM_SPECTATOR)
		} 
			
	}
	log_amx("RandomCpt stage 1")
	
	if (specialCount < 2) {
		if (g_CustomGame) {
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "LESS_PLAYERS_CUSTOM")
			new taskId = scanForTaskID()
			set_task(3.0, "RandomTeams", taskId)
		}
		
		else {
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "LESS_PLAYERS")
			new taskId = scanForTaskID()
			set_task(5.0, "EndMatch", taskId)
		}
		return;
	}
	log_amx("RandomCpt stage 2")
		
	new z = random(pnum)
	while (get_member(players[z], m_iTeam) == TEAM_UNASSIGNED)
		z = random(pnum)
	rg_set_user_team(players[z], TEAM_TERRORIST)
	gCptT = players[z]
	
	new q = random(pnum)
	while ( (q == z) || get_member(players[q], m_iTeam) == TEAM_UNASSIGNED )
		q = random(pnum)
		
	log_amx("RandomCpt stage 3")
	rg_set_user_team(players[q], TEAM_CT) 
	gCptCT = players[q]
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "RANDOM_CAPTAINS_CHOSEN")
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TERROR_CAPTAIN_FIRST")
	g_bCpt = true
	log_amx("RandomCpt stage 4")
	moveT()
	return;
}

public kickhimout(id) {
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CAPTAINS_AFK")
	set_hudmessage(255, 0, 0, 0.40, 0.32, 0, 6.0, 12.0)
	ShowSyncHudMsg(0, g_MsgSync2, "%L", LANG_PLAYER, "CAPTAINS_AFK")
	show_menu(0, 0, "^n", 1);
	g_bCpt = false
	new taskId = scanForTaskID()
	set_task(5.0, "RandomTeams", taskId)
	return PLUGIN_HANDLED
}
	

public moveT() {
	log_amx("moveT stage 1")
	TeamsInfo()
	log_amx("moveT stage 2")
	new title[64]
	formatex(title, charsmax(title), "%L", LANG_PLAYER, "CHOOSE_PLAYER")
	g_PlayersMenu = menu_create(title, "moveT_menu"); 
	new players[32], pnum, tempid;
	new Tplayers[32], Tpnum;
	new szName[32], szTempid[10]; 
	new pickisdone, check
	get_players(players, pnum, "ch"); 
	
	if ( !pnum )
		return PLUGIN_HANDLED
		
	get_players(Tplayers, Tpnum, "che", "TERRORIST");
	log_amx("moveT stage 3")
		
	for( new i; i<pnum; i++ ) 
	{ 
		tempid = players[i];
		
		if ((tempid == gCptT) || (tempid == gCptCT))
			check++
		
		if (get_member(tempid, m_iTeam) == TEAM_UNASSIGNED)
			continue;
		
		else if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR) {
			get_user_name(tempid, szName, 31); 
			num_to_str(tempid, szTempid, 9); 
			menu_additem(g_PlayersMenu, szName, szTempid);
			pickisdone++
		}
	} 
	
	log_amx("moveT stage 4")
	if (check != 2) {
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CAPTAINS_DISCONNECTED")
		g_bCpt = false
		removeAllTasks()
		new taskId = scanForTaskID()
		set_task(3.0, "RandomTeams", taskId)
		return PLUGIN_HANDLED
	}
	
	if (pickisdone == 0) {
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_ARE_SET")
		g_bCpt = false
		removeAllTasks()
		new taskId = scanForTaskID()
		set_task(10.0, "StartMatch", taskId)
		return PLUGIN_HANDLED
	}
	
	if (Tpnum >= get_pcvar_num(cvar_pLeft)/2 ) {
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TERROR_TEAM_FULL")
		moveCT()
		return PLUGIN_HANDLED
	}
	
	log_amx("moveT stage 5")
 
	menu_display(gCptT, g_PlayersMenu)
	set_task(25.0, "kickhimout", gCptT)
	log_amx("moveT stage 6")
	return PLUGIN_HANDLED; 
}

public moveT_menu(id, g_PlayersMenu, item) { 
	if( item == MENU_EXIT ) 
	{ 
		menu_display(id, g_PlayersMenu)
		return PLUGIN_HANDLED; 
	} 
 
	remove_task(gCptT)
	new data[6], iName[64]; 
	new access, callback; 
	menu_item_getinfo(g_PlayersMenu, item, access, data,5, iName, 63, callback); 
	new tempid = str_to_num(data);
	new name[32]
	new g_bCptNm[64]
	get_user_name(gCptT, g_bCptNm, 63)
	get_user_name(tempid, name, 31)
	rg_set_user_team(tempid, TEAM_TERRORIST)
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CHOSEN_IN_TEAM_TERRORISTERROR", name, g_bCptNm)
	menu_destroy(g_PlayersMenu);
	remove_task(gCptT);
	moveCT()
	return PLUGIN_HANDLED
} 


public moveCT() {
	new title[64]
	formatex(title, charsmax(title), "%L", LANG_PLAYER, "CHOOSE_PLAYER")
	g_PlayersMenu = menu_create(title, "moveCT_menu"); 
	new players[32], pnum, tempid; 
	new CTplayers[32], CTpnum;
	new szName[32], szTempid[10]; 
	new pickisdone, check
	get_players(players, pnum, "ch"); 
	get_players(CTplayers, CTpnum, "che", "CT");
		
	for( new i; i<pnum; i++ ) 
	{ 
		tempid = players[i];
		
		if ((tempid == gCptT) || (tempid == gCptCT))
			check++
		
		if (get_member(tempid, m_iTeam) == TEAM_UNASSIGNED)
			continue;
		
		else if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR) {
			get_user_name(tempid, szName, 31); 
			num_to_str(tempid, szTempid, 9); 
			menu_additem(g_PlayersMenu, szName, szTempid);
			pickisdone++
		}
	} 
	
	if (check != 2) {
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CAPTAINS_DISCONNECTED")
		g_bCpt = false
		new taskId = scanForTaskID()
		set_task(3.0, "RandomTeams", taskId)
		return PLUGIN_HANDLED
	}
	
	if (pickisdone == 0) {
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_ARE_SET")
		g_bCpt = false
		new taskId = scanForTaskID()
		set_task(10.0, "StartMatch", taskId)
		return PLUGIN_HANDLED
	}
	
	if (CTpnum >= get_pcvar_num(cvar_pLeft)/2 ) {
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CT_TEAM_FULL")
		moveT()
		return PLUGIN_HANDLED
	}
 
	menu_display(gCptCT, g_PlayersMenu)
	set_task(20.0, "kickhimout", gCptCT)
	return PLUGIN_HANDLED; 
}

public moveCT_menu(id, g_PlayersMenu, item) { 
	if( item == MENU_EXIT )  { 
		menu_display(id, g_PlayersMenu)
		return PLUGIN_HANDLED; 
	} 
	
	remove_task(gCptCT)
	new data[6], iName[64]; 
	new access, callback; 
	menu_item_getinfo(g_PlayersMenu, item, access, data,5, iName, 63, callback); 
	new tempid = str_to_num(data);
	new name[32]
	new g_bCptNm[64]
	get_user_name(gCptCT, g_bCptNm, 63)
	get_user_name(tempid, name, 31)
	rg_set_user_team(tempid, TEAM_CT)
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "CHOSEN_IN_TEAM_CT", name, g_bCptNm)
	menu_destroy(g_PlayersMenu);
	remove_task(gCptCT);
	moveT()
	return PLUGIN_HANDLED
} 

public TeamsInfo() {
	log_amx("TeamsInfo stage 1")
	if (g_bCpt) {
		log_amx("TeamsInfo stage 2")
		new nameCT[70], nameT[70]
		new infoT[500]
		new infoCT[500]
		new players[32], pnum, tempid;
		new toapprove
		
		get_players(players, pnum, "ch")
		get_user_name(gCptT, nameT, 69)
		get_user_name(gCptCT, nameCT, 69)
		formatex(infoT, 499, "%L^n-------------^n%L^n^n", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_C" : "TERRORISTS" ), LANG_PLAYER, "TEAM_INFO_CAPTAINS", nameT)
		formatex(infoCT, 499, "%L^n-------------^n%L^n^n", LANG_PLAYER, ( get_pcvar_num(cvar_TeamTag) ? "TEAM_D" : "COUNTER_TERRORISTS" ), LANG_PLAYER, "TEAM_INFO_CAPTAINS", nameCT)
		log_amx("TeamsInfo stage 3")
		
		for (new i ; i < pnum ; i++)
		{
			tempid = players[i]
			
			if ((get_member(tempid, m_iTeam) == TEAM_TERRORIST) && (tempid != gCptT))
			{
				new nameofp[70]
				
				get_user_name(tempid, nameofp, 69)
				add(infoT, 499, nameofp)
				add(infoT, 499, "^n")
			}
			
			else if ((get_member(tempid, m_iTeam) == TEAM_CT) && (tempid != gCptCT))
			{
				new nameofCTp[70]
				
				get_user_name(tempid, nameofCTp, 69)
				add(infoCT, 499, nameofCTp)
				add(infoCT, 499, "^n")
			}
			
			if ((get_member(tempid, m_iTeam) == TEAM_TERRORIST) && (tempid == gCptT))
				toapprove++
			
			else if ((get_member(tempid, m_iTeam) == TEAM_CT) && (tempid == gCptCT))
			{
				toapprove++
			}
		}
		
		if (toapprove != 2) {
			set_hudmessage(255, 0, 0, 0.40, 0.32, 0, 6.0, 12.0)
			ShowSyncHudMsg(0, g_MsgSync2, "%L", LANG_PLAYER, "CAPTAINS_DISCONNECTED_HUD")
			new taskId = scanForTaskID()
			set_task(5.0, "RandomTeams", taskId)
			return PLUGIN_HANDLED
		}
		
		set_hudmessage(27, 162, 229, 0.28, 0.32, 0, 6.0, 1.0)
		ShowSyncHudMsg(0, g_MsgSync8, infoT)
		log_amx("TeamsInfo stage 4")
		
		set_hudmessage(27, 162, 229, 0.58, 0.32, 0, 6.0, 1.0)
		ShowSyncHudMsg(0, g_MsgSync2, infoCT)
		new taskId = scanForTaskID()
		set_task(1.0, "TeamsInfo", taskId)
	}
	
	else
	{
		set_hudmessage(0, 255, 0, 0.40, 0.32, 0, 6.0, 12.0)
		ShowSyncHudMsg(0, g_MsgSync2, "%L", LANG_PLAYER, "TEAMS_ARE_SET_HUD")
		return PLUGIN_CONTINUE
	}
	
	return PLUGIN_CONTINUE
}


public RandomTeams()
{
	new players[32], pnum, tempid;
	
	get_players(players, pnum, "h");

	for( new i; i<pnum; i++ ) {
		tempid = players[i];
		client_cmd(tempid, "kill")
		
		if (get_member(tempid, m_iTeam) == TEAM_UNASSIGNED)
			continue;
		rg_set_user_team(tempid, TEAM_SPECTATOR)
	}
	
	new topick, idop
	
	while (AnyoneInSpec()) {
		if (get_member(players[idop], m_iTeam) == TEAM_UNASSIGNED)
		{
			idop++
			continue;
		}
		
		topick = random(2)
		
		if (topick == 1)
		{
			rg_set_user_team(players[idop], TEAM_TERRORIST)
		}
		
		else
		{
			rg_set_user_team(players[idop], TEAM_CT)
		}
		
		new pplayers[32], ppnum, tempid;
		new ppplayers[32], pppnum;
		new temppnum
		
		get_players(players, pnum, "h");
		get_players(pplayers, ppnum, "he", "CT")
		get_players(ppplayers, pppnum, "he", "TERRORIST")
		
		if (ppnum == pnum/2)
		{
			get_players(players, temppnum, "h");
			
			for( new i; i<temppnum; i++ )
			{
				tempid = players[i];
				
				if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR)
				{
					rg_set_user_team(tempid, TEAM_TERRORIST)
				}
			}
		}
		
		else if (pppnum == pnum/2)
		{
			get_players(players, temppnum, "h");
			
			for( new i; i<temppnum; i++ )
			{
				tempid = players[i];
				
				if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR)
				{
					rg_set_user_team(tempid, TEAM_CT)
				}
			}
		}
		
		idop++
	}
	new taskId = scanForTaskID()
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "TEAMS_RANDOMIZED")
	set_task(5.0, "StartMatch", taskId)
}

public AnyoneInSpec() {
	new players[32], pnum, tempid;
	get_players(players, pnum, "ch");

	for( new i; i<pnum; i++ )
	{
		tempid = players[i];
		
		if (get_member(tempid, m_iTeam) == TEAM_SPECTATOR)
			return true
	}
	
	return false
}


public StartMatch() {
	if(get_pcvar_num(cvar_FFvote) && (g_bDidVoteFF == false))
	{
		g_bDidVoteFF = true
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "FF_VOTE_START")
		new taskId = scanForTaskID()
		set_task(5.0, "FriendlyFire", taskId)
		return PLUGIN_HANDLED
	}
	
	new players[32], pnum, tempid;
	
	get_players(players, pnum, "ch")
	
	if (pnum < get_pcvar_num(cvar_pLeft) - 2)
	{
		if ( !g_CustomGame )
		{
			if (g_DidWaitEnough < 8)
			{
				CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_DELAYED")
				g_DidWaitEnough++
				new taskId = scanForTaskID()
				set_task(15.0, "StartMatch", taskId)
				return PLUGIN_HANDLED
			}
			
			set_pcvar_string(cvar_humans_join_team, "")
			g_iScore[0] = 0
			g_iScore[1] = 0
			g_AfterRdy = false
			g_IsStarted = false
			g_bDidVoteFF = false
			g_DidWaitEnough = 0
			gPlayersLeft = get_maxplayers()
			
			client_print(0, print_chat, "TESTASEASESDSA");
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "NO_MINIMUM", get_pcvar_num(cvar_pLeft) - 2)
			CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "NO_MINIMUM_CONTINUE")
			entity_set_float(gEntShowLeft, EV_FL_nextthink, 1.0)
			server_cmd("exec practice.cfg")
			server_exec()
			
			for( new i; i<pnum; i++ )	{
				tempid = players[i];
				g_bIsReady[tempid] = false
				remove_task(tempid)
				g_iTimeLeft[tempid] = get_pcvar_num(cvar_TimeLeft)
				g_LeftKills[tempid] = 0
				g_bSecondHalf = false
				ToSetTaskToInfo(tempid)
			}
			return PLUGIN_HANDLED
		}
	}
		
	for (new x ; x<pnum ; x++)
	{
		tempid = players[x]
		
		switch( get_member(tempid, m_iTeam) ) {
			case TEAM_UNASSIGNED: continue;
			case TEAM_SPECTATOR: server_cmd("kick # %d", get_user_userid(tempid))
			case TEAM_TERRORIST: ChangeTagA(tempid)
			case TEAM_CT: ChangeTagB(tempid)
		}
	}

	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MIX_SETTINGS_LOADED")
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MIX_SETTINGS_LOADED")
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MIX_SETTINGS_LOADED")
	new taskId = scanForTaskID()
	set_task(4.0, "Settings", taskId)
	
	return PLUGIN_HANDLED
}

public ChangeTagA(id) {
	if ( !( 1 <= id <= gMaxPlayers ) || !get_pcvar_num(cvar_TeamTag) )
		return;
		
	new pname[65]
	new newname[70]
	get_user_name(id, pname, 64)		
	pname = RemoveOldTag(pname, strlen(pname))
	formatex(newname, 69, "%L %s", LANG_PLAYER, "TEAM_A", pname)
	set_user_info(id, "name", newname)
}

public ChangeTagB(id) {
	if ( !( 1 <= id <= gMaxPlayers ) || !get_pcvar_num(cvar_TeamTag) )
		return;
		
	new pname[65]
	new newname[70]
	get_user_name(id, pname, 64)		
	pname = RemoveOldTag(pname, strlen(pname))
	formatex(newname, 69, "%L %s", LANG_PLAYER, "TEAM_B", pname)
	set_user_info(id, "name", newname)
}

public RemoveOldTag(pname[65], p_len) { // SUPPORTS ONLY DEFAULT GIVEN NAMES (TEAM A AND TEAM B)
	
	if (containi(pname, "[TEAM A]") != -1 || containi(pname, "[TEAM B]") != -1 )
	{
		new newName[64], indicator
		new pos = containi(pname, "[TEAM A]")
		
		if ( pos == -1 )
			pos = containi(pname, "[TEAM B]")
			
		for ( new i = pos+9 ; i < p_len ; i++ )
			newName[indicator++] = pname[i]
			
		trim(newName)
		formatex(pname, charsmax(pname), "%s", newName)
		return pname
	}
	
	return pname
}

public SwitchTeams() {
	new supportvariable
	
	supportvariable = g_iScore[0]
	g_iScore[0] = g_iScore[1]
	g_iScore[1] = supportvariable
	
	new players[32], pnum, tempid;
	get_players(players, pnum, "ch");

	for( new i; i<pnum; i++ ) {
		tempid = players[i];
		switch( get_member(tempid, m_iTeam) ) {
			case TEAM_TERRORIST: rg_set_user_team(tempid, TEAM_CT)
			case TEAM_CT: rg_set_user_team(tempid, TEAM_TERRORIST)
		}
	}
	
	g_bSecondHalf = true
	return PLUGIN_HANDLED
}

public KnifeSwitch(WinningTeam) {	
	new players[32], pnum;
	
	switch ( WinningTeam ) {
		case T_WIN: get_players(players, pnum, "che", "TERRORIST")
		case CT_WIN: get_players(players, pnum, "che", "CT")
	}
	
	new menuTitle[78], options[78]
	formatex(menuTitle, charsmax(menuTitle), "[Auto-Mix]\w %L", LANG_PLAYER, "KNIFE_MENU_TITLE")
	g_switchmenu = menu_create(menuTitle, "handleSwitch")
	formatex(options, charsmax(options), "%L", LANG_PLAYER, "KNIFE_MENU_STAY")
	menu_additem(g_switchmenu, options)
	formatex(options, charsmax(options), "%L", LANG_PLAYER, "KNIFE_MENU_SWAP")
	menu_additem(g_switchmenu, options)
	
	for ( new i ; i < pnum ; i++ )
		menu_display(players[i], g_switchmenu)
		
	new intParam[1]
	new taskId = scanForTaskID()
	intParam[0] = WinningTeam
	set_task(8.0, "declareSwitch", taskId, intParam, 1)
}

public handleSwitch(id, menu, item) {
	if( item == MENU_EXIT ) {
		menu_display(id, g_switchmenu)
		return PLUGIN_HANDLED;
	}
	
	g_switchVotes[item]++
	switch ( item ) {
		case 0: CromChat(id, "%s You have voted to: Stay.", PREFIX)
		case 1: CromChat(id, "%s You have voted to: Swap.", PREFIX)
	}
	return PLUGIN_CONTINUE
}

public declareSwitch(recvParam[], prevTaskId) {
	new taskId = scanForTaskID()
	
	if ( g_switchVotes[0] > g_switchVotes[1] ) {
		CromChat(0, "&x04%s %L ---> %L.", PREFIX, LANG_PLAYER, "KNIFE_MENU_RESULT", LANG_PLAYER, "KNIFE_MENU_STAY")
		g_Twon = false
		set_task(3.0, "SettingsAfter", taskId)
		return PLUGIN_HANDLED
	}
	else
		CromChat(0, "&x04%s %L ---> %L.", PREFIX, LANG_PLAYER, "KNIFE_MENU_RESULT", LANG_PLAYER, "KNIFE_MENU_SWAP")
	
	g_Twon = true
	
	rg_swap_all_players();
	
	set_task(3.0, "SettingsAfter", taskId)
	return PLUGIN_CONTINUE
}


public Settings() {
	if (get_pcvar_num(cvar_KnifeRound)) {
		g_KnifeRound = true
		set_pcvar_float(cvar_mp_roundtime, 1.75)
		set_pcvar_num(cvar_mp_freezetime, 7)
		set_pcvar_float(cvar_mp_buytime, 0.1)
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_START")
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_START")
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "KNIFE_ROUND_START")
		set_pcvar_num(cvar_sv_restart, 3)
		new taskId = scanForTaskID()
		set_task(4.0, "TSAYKnife", taskId)
	}
	
	else
	{
		g_KnifeRound = false
		server_cmd("exec pug.cfg")
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
		server_cmd("sv_restart 1")
		new taskId = scanForTaskID()
		set_task(2.0, "Started", taskId)
	}
	
}

public TSAYKnife() {
	
	for ( new i = 1 ; i <= gMaxPlayers ; i++ )
	{
		if ( is_user_alive(i) )
			engclient_cmd(i, "weapon_knife")
	}
	
	set_hudmessage(255, 255, 255, 0.06, 0.34, 0, 6.0, 15.0)
	ShowSyncHudMsg(0, g_MsgSync7, "%L", LANG_PLAYER, "KNIFE_ROUND_ATTENTION")
}

public SettingsAfter() {
	g_KnifeRound = false
	g_bCpt = false
	server_cmd("exec pug.cfg")
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_START")
	set_pcvar_num(cvar_sv_restart, 1)
	new taskId = scanForTaskID()
	set_task(5.0, "Started", taskId)
}

public Started() {
	if (g_bFFoff)
		set_pcvar_num(cvar_mp_friendlyfire, 0)
	else
		set_pcvar_num(cvar_mp_friendlyfire, 1)
	set_hudmessage(255, 255, 255, 0.06, 0.34, 0, 6.0, 20.0)
	ShowSyncHudMsg(0, g_MsgSync3, "%L", LANG_PLAYER, "FIRST_HALF_STARTED")
	
	for ( new i = 1 ; i <= gMaxPlayers ; i++ )
	{
		if ( is_user_connected(i) && get_member(i, m_iTeam) != TEAM_SPECTATOR && !is_user_hltv(i) && !is_user_bot(i) )
			gDidPlayUntilEnd[i] = true
	}
	
	g_IsStarted = true
	g_AfterRdy = false
}


public EndMatch() {
	set_hudmessage(0, 212, 255, 0.06, 0.34, 0, 6.0, 15.0)
	ShowSyncHudMsg(0, g_MsgSync3, "%L", LANG_PLAYER, "MATCH_OVER", g_iScore[0], g_iScore[1])
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_OVER2")
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "MATCH_OVER3")
	CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "PLUGIN_RESTART")
	g_Restart = true
	
	sortPoints()
	
	if ( get_pcvar_num(cvar_Rankings) )
		doRankings()
		
	new taskId = scanForTaskID()
	set_task(15.0, "MatchIsOver", taskId)
}

public sortPoints()
{
	for ( new i = 1 ; i <= gMaxPlayers ; i++ )
	{
		if ( !is_user_connected(i) || ( g_iScore[0] != 16 && g_iScore[1] != 16 ) )
			continue;
		
		if ( gDidPlayUntilEnd[i] )
		{
			if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_PlaysUntilEndPoints) )
				CromChat(i, "&x04%s You have GAINED %d points for playing a full match.", PREFIX, get_pcvar_num(cvar_PlaysUntilEndPoints))
			gPoints[i] += get_pcvar_num(cvar_PlaysUntilEndPoints)
		}
			
		switch ( get_pcvar_num(cvar_TeamTag) )
		{
			case 0:
			{
				if ( g_iScore[0] > g_iScore[1] && get_member(i, m_iTeam) == TEAM_TERRORIST )
				{
					if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_WinsMatchPoints) )
						CromChat(i, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_WIN", get_pcvar_num(cvar_WinsMatchPoints))
					gPoints[i] += get_pcvar_num(cvar_WinsMatchPoints)
					
				}
				
				else if ( g_iScore[1] > g_iScore[0] && get_member(i, m_iTeam) == TEAM_CT )
				{
					if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_WinsMatchPoints) )
						CromChat(i, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_WIN", get_pcvar_num(cvar_WinsMatchPoints))
					gPoints[i] += get_pcvar_num(cvar_WinsMatchPoints)
				}
				
				else
				{
					if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_LosesMatchPoints) )
						CromChat(i, "&x04%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_LOSE", get_pcvar_num(cvar_LosesMatchPoints))
					gPoints[i] -= get_pcvar_num(cvar_LosesMatchPoints)
				}
			}
			
			case 1:
			{
				new TeamName:team
				
				switch ( g_Twon )
				{
					case 1:
					{
						if ( g_iScore[0] > g_iScore[1] )
							team = TEAM_TERRORIST
						else
							team = TEAM_CT
					}
					
					case 0:
					{
						if ( g_iScore[1] > g_iScore[0] )
							team = TEAM_CT
						else
							team = TEAM_TERRORIST
					}
				}
				
				if ( get_member(i, m_iTeam) == team )
				{
					if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_WinsMatchPoints) )
						CromChat(i, "&x04%s %L", PREFIX, LANG_PLAYER, "GAIN_POINTS_WIN", get_pcvar_num(cvar_WinsMatchPoints))
					gPoints[i] += get_pcvar_num(cvar_WinsMatchPoints)
				}
				
				else
				{
					if ( get_pcvar_num(cvar_RanksSystemMessages) && get_pcvar_num(cvar_LosesMatchPoints) )
						CromChat(i, "&x04%s %L", PREFIX, LANG_PLAYER, "LOSE_POINTS_LOSE", get_pcvar_num(cvar_WinsMatchPoints))
					gPoints[i] -= get_pcvar_num(cvar_LosesMatchPoints)
				}
			}
		}
		
		SaveStats(i)
	}
}		

public doRankings()
{
	new KillerName[256], DeathsName[256], BombPName[256], BombDName[256]
	new players[32], pnum, tempid
	new topKillerID, topDeathsID, topBombPID, topBombDID
	new topKills, topDeaths, topBombP, topBombD
	new winningTeam[65]
	get_players(players, pnum, "ch")
	
	switch ( get_pcvar_num(cvar_TeamTag) )
	{
		case 0:
		{
			if ( g_iScore[0] > g_iScore[1] )
				formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "T_FULL")
			else
				formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "CT_FULL")
		}
		
		case 1:
		{
			switch ( g_Twon )
			{
				case 1:
				{
					if ( g_iScore[g_bSecondHalf ? 0 : 1] > g_iScore[g_bSecondHalf ? 1 : 0] )
						formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_C")
					else
						formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_D")
				}
				
				case 0:
				{
					if ( g_iScore[g_bSecondHalf ? 1 : 0] > g_iScore[g_bSecondHalf ? 0 : 1] )
						formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_C")
					else
						formatex(winningTeam, charsmax(winningTeam), "%L", LANG_PLAYER, "TEAM_D")
				}
			}
		}
	}
				
			
	for ( new i ; i < pnum ; i++ )
	{
		tempid = players[i]
		
		if ( g_TotalKills[tempid] >= topKills && g_TotalKills[tempid] )
		{
			topKills = g_TotalKills[tempid]
			topKillerID = tempid
		}
		
		if ( g_TotalDeaths[tempid] >= topDeaths && g_TotalDeaths[tempid] )
		{
			topDeaths = g_TotalDeaths[tempid]
			topDeathsID = tempid
		}
		
		if ( g_BombPlants[tempid] >= topBombP && g_BombPlants[tempid] )
		{
			topBombP = g_BombPlants[tempid]
			topBombPID = tempid
		}
		
		if ( g_BombDefusions[tempid] >= topBombD && g_BombDefusions[tempid] )
		{
			topBombD = g_BombDefusions[tempid]
			topBombDID = tempid
		}
	}
	
	if ( 1 <= topKillerID <= gMaxPlayers )
		get_user_name(topKillerID, KillerName, charsmax(KillerName))
	if ( 1 <= topDeathsID <= gMaxPlayers )
		get_user_name(topDeathsID, DeathsName, charsmax(DeathsName))
	if ( 1 <= topBombPID <= gMaxPlayers )
		get_user_name(topBombPID, BombPName, charsmax(BombPName))
	if ( 1 <= topBombDID <= gMaxPlayers )
		get_user_name(topBombDID, BombDName, charsmax(BombDName))
	
	for ( new i ; i < pnum ; i++ )
	{
		tempid = players[i]
		
		if ( g_TotalKills[tempid] == topKills && tempid != topKillerID && g_TotalKills[tempid]  )
		{
			new lineToAdd[65] = ", "
			new pName[64]
			get_user_name(tempid, pName, charsmax(pName))
			add(lineToAdd, charsmax(lineToAdd), pName)
			add(KillerName, charsmax(KillerName) - strlen(BombDName) , lineToAdd)
		}
		
		if ( g_TotalDeaths[tempid] == topDeaths && tempid != topDeathsID && g_TotalDeaths[tempid]  )
		{
			new lineToAdd[65] = ", "
			new pName[64]
			get_user_name(tempid, pName, charsmax(pName))
			add(lineToAdd, charsmax(lineToAdd), pName)
			add(DeathsName, charsmax(DeathsName) - strlen(DeathsName) , lineToAdd)
		}
		
		if ( g_BombPlants[tempid] == topBombP && tempid != topBombPID && g_BombPlants[tempid]  )
		{
			new lineToAdd[65] = ", "
			new pName[64]
			get_user_name(tempid, pName, charsmax(pName))
			add(lineToAdd, charsmax(lineToAdd), pName)
			add(BombPName, charsmax(BombPName) - strlen(BombPName) , lineToAdd)
		}
		
		if ( g_BombDefusions[tempid] == topBombD && tempid != topBombDID && g_BombDefusions[tempid]  )
		{
			new lineToAdd[65] = ", "
			new pName[64]
			get_user_name(tempid, pName, charsmax(pName))
			add(lineToAdd, charsmax(lineToAdd), pName)
			add(BombDName, charsmax(BombDName) - strlen(BombDName) , lineToAdd)
		}
	}
	
	
	new msgToDisplay[456] = "%L"
	format(msgToDisplay, charsmax(msgToDisplay), msgToDisplay, LANG_PLAYER, "RANKING_TABLE", winningTeam, strlen(KillerName) ? KillerName : "NONE", topKills, strlen(DeathsName) ? DeathsName : "NONE", topDeaths,
			strlen(BombPName) ? BombPName : "NONE", topBombP, strlen(BombDName) ? BombDName : "NONE", topBombD, g_PugLeaves)
			
	new taskId = scanForTaskID()
	set_task(1.0, "displayRankingTable", taskId, msgToDisplay, strlen(msgToDisplay), "b")
}

public displayRankingTable(msgToDisplay[], taskId)
{
	set_hudmessage(135, 135, 135, 0.35, 0.21, 1, 6.0, 1.0)
	show_hudmessage(0, msgToDisplay)
}

public MatchIsOver()
{
	set_task(1.0, "restartServer", scanForTaskID())
}

public restartServer()
{
	server_cmd("restart")
}
	
public player(id) {
	if (g_bCpt) {
		CromChat(id, "%L", LANG_PLAYER, "MENU_BLOCK", PREFIX)
		return PLUGIN_HANDLED
	}
	
	new title[79]
	new item1[79], item2[79], item3[79], item4[79], item5[79], item6[79], item7[79]
	
	formatex(title, charsmax(title), "\y%L", LANG_PLAYER, "PLAYERS_MENU_TITLE")
	formatex(item1, charsmax(item1), "\y%L", LANG_PLAYER, "PLAYERS_MENU_ITEM1")
	formatex(item2, charsmax(item2), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM2")
	formatex(item3, charsmax(item3), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM3")
	formatex(item4, charsmax(item4), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM4")
	formatex(item5, charsmax(item5), "%L", LANG_PLAYER, "PLAYERS_MENU_ITEM5")
	formatex(item6, charsmax(item6), "\y%L", LANG_PLAYER, "PLAYERS_MENU_ITEM6")
	formatex(item7, charsmax(item7), "\r%L", LANG_PLAYER, "PLAYERS_MENU_ITEM7")
	new pVote = menu_create(title, "pmenu")
	
	menu_additem(pVote, item1)
	menu_additem(pVote, item2)
	menu_additem(pVote, item3)
	menu_additem(pVote, item4)
	menu_additem(pVote, item5)
	menu_additem(pVote, item6)	
	menu_additem(pVote, item7)
	menu_display(id, pVote)
	return PLUGIN_CONTINUE
}

public pmenu(id, menu, item) { 
	if( item == MENU_EXIT )
		return PLUGIN_HANDLED; 
 
	new playername[32]
	get_user_name(id, playername, 31)
	
	switch(item)
	{
		case 0: 
		{
			if(is_user_admin(id))
			{
				client_cmd(id, "amxmodmenu");
			}
			else
			{
				CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "NOT_ADMIN");
			}
		}
		case 1:
		{
			Prepare(id);			
			return PLUGIN_HANDLED
		}
		
		case 2:
		{
			display_mutemenu(id);
			return PLUGIN_HANDLED
		}
		
		case 3: {
			if ( !get_pcvar_num(cvar_RanksSystem) )
			{
				CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "RANK_SYSTEM_DISABLED");
				player(id)
				return PLUGIN_HANDLED
			}
			showRanks(id)
			return PLUGIN_HANDLED
		}
		
		case 4:
		{
			motd_thingie(id);
			return PLUGIN_HANDLED;
		}

		case 5:
		{
			Cmd_VoteBan(id)
			return PLUGIN_HANDLED
		}
		
		case 6: 
		{
			cmdSpec(id)
		}
	}
			
	player(id)	
	return PLUGIN_HANDLED
} 

public get_pug_state() {
		new file = fopen(gPug_ini_file, "r")
		fseek(file, -1, SEEK_END)
		new getchar = fgetc(file)
		fclose(file)
		return getchar - '0'
}

public set_pug_state(iState) {
		new file = fopen(gPug_ini_file, "w")
		fseek(file, -1, SEEK_END)
		fputc(file, iState + '0')
		fclose(file)
}


stock replace_it(string[], len, const what[], const with[])  { 
	new pos = 0; 
	 
	if ((pos = contain(string, what)) == -1) 
	{ 
		return 0; 
	} 
	 
	new total = 0; 
	new with_len = strlen(with); 
	new diff = strlen(what) - with_len; 
	new total_len = strlen(string); 
	new temp_pos = 0; 
	 
	while (replace(string[pos], len - pos, what, with) != 0) 
	{ 
		total++; 
		pos += with_len;  
		total_len -= diff; 
		 
		if (pos >= total_len) 
			break; 
		temp_pos = contain(string[pos], what); 
		 
		if (temp_pos == -1) 
			break; 
		pos += temp_pos; 
	} 
	return total; 
} 

clear_list(id) {
	for(new i = 0; i <= gMaxPlayers; ++i) 
		g_mute[id][i] = false
}

public clcmd_say(id) {
	static say_args[10]
	read_args(say_args, 9)
	remove_quotes(say_args)
	
	if ( 1 <= gChangerID <= gMaxPlayers && id == gChangerID )
	{
		new enteredValue = str_to_num(say_args)
		
		if ( enteredValue < 0 )
		{
			CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ENTER_POSITIVE_VALUE");
			return PLUGIN_HANDLED
		}
		
		switch ( gChanging )
		{
			case 0: set_pcvar_num(cvar_KillPoints, enteredValue)
			case 1: set_pcvar_num(cvar_KnifePoints, enteredValue)
			case 2: set_pcvar_num(cvar_WinsMatchPoints, enteredValue)
			case 3: set_pcvar_num(cvar_PlaysUntilEndPoints, enteredValue)
			case 4: set_pcvar_num(cvar_LeavesMatchPoints, enteredValue)
			case 5: set_pcvar_num(cvar_LeavesMatchTime, enteredValue)
			case 6: set_pcvar_num(cvar_TeamKillPoints, enteredValue)
			case 7: set_pcvar_num(cvar_BombPlantPoints, enteredValue)
			case 8: set_pcvar_num(cvar_BombDefusePoints, enteredValue)
			case 9: set_pcvar_num(cvar_KillLosePoints, enteredValue)
			case 10: set_pcvar_num(cvar_KnifeLosePoints, enteredValue)
			case 11: set_pcvar_num(cvar_LosesMatchPoints, enteredValue)
		}
		
		show_menu(id, 0, "^n", 0)
		gChanging = 0
		gChangerID = 0
		PointsPricesMenu(id)
		return PLUGIN_HANDLED
	}
	
	else if ( 1 <= gChangerID2 <= gMaxPlayers && id == gChangerID2 )
	{
		new enteredValue = str_to_num(say_args)
		
		if ( enteredValue < 0 )
		{
			CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "ENTER_POSITIVE_VALUE")
			return PLUGIN_HANDLED
		}
		
		switch ( gChanging )
		{
			case 0: set_pcvar_num(cvar_BeginnerPoints, enteredValue)
			case 1: set_pcvar_num(cvar_RegularPoints, enteredValue)
			case 2: set_pcvar_num(cvar_VeteranPoints, enteredValue)
			case 3: set_pcvar_num(cvar_ProPoints, enteredValue)
			case 4: set_pcvar_num(cvar_HardCorePoints, enteredValue)
		}
		
		show_menu(id, 0, "^n", 0)
		gChanging2 = 0
		gChangerID2 = 0
		RanksPricesMenu(id)
		return PLUGIN_HANDLED
	}
	
	if(say_args[0] == '!' && containi(say_args, "mute") != -1)
	{
		if ( !get_pcvar_num(cvar_MuteMenu) )
		{
			CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "MUTE_MENU_DISABLED")
			return PLUGIN_HANDLED
		}
		
		display_mutemenu(id);
		return PLUGIN_HANDLED_MAIN
	}
	return PLUGIN_CONTINUE
}

public fwd_voice_setclientlistening(receiver, sender, listen) 
{
	if(receiver == sender)
		return FMRES_IGNORED
		
	if(g_mute[receiver][sender]) {
		engfunc(EngFunc_SetClientListening, receiver, sender, 0)
		return FMRES_SUPERCEDE
	}
	return FMRES_IGNORED
}

display_mutemenu(id)
{
	static MENU_TITLE[64];
	formatex(MENU_TITLE, 511, "\r%s \w%L^n^n", PREFIX, LANG_PLAYER, "MUTE_MENU_TITLE");

	static iMenu
	iMenu = menu_create(MENU_TITLE, "mute_menu_handler");

	static team[11];
	get_user_team(id, team);

	static players[32], num, player;

	if(get_pcvar_num(cvar_alltalk))
	{
		get_players(players, num, "c");
	}
	else
	{
		get_players(players, num, "ce", team);
	}

	static szName[32], info[5];
	for(new i = 0; i < num; i++)
	{
		player = players[i]
		
		num_to_str(player, info, charsmax(info));
		get_user_name(player, szName, charsmax(szName));

		static ITEM_TITLE[64];

		if(player == id)
		{
			formatex(ITEM_TITLE, charsmax(ITEM_TITLE), "# Auto-Mix");
		}
		else
		{
			formatex(ITEM_TITLE, charsmax(ITEM_TITLE), "%s %s", szName, g_mute[id][player] ? "\r(Muted)" : "");
		}

		menu_additem(iMenu, ITEM_TITLE, info);
	}

	menu_display(id, iMenu);
}

public mute_menu_handler(id, iMenu, iKey)
{
	if(iKey == MENU_EXIT)
	{
		return PLUGIN_HANDLED;
	}

	static access, info[5], name[32], callback;
	menu_item_getinfo(iMenu, iKey, access, info, charsmax(info), name, charsmax(name), callback);

	static iMuteID;
	iMuteID = str_to_num(info);

	g_mute[id][iMuteID] = !(g_mute[id][iMuteID]);
	display_mutemenu(id);

	static szName[32];
	get_user_name(iMuteID, szName, charsmax(szName));
	
	CromChat(id, "You have %smuted %s", g_mute[id][iMuteID] ? "" : "un", szName);

	return PLUGIN_HANDLED
}

public showRanks(id)
{
	if ( !is_user_connected(id) || is_user_bot(id) || is_user_hltv(id) )
		return PLUGIN_HANDLED
		
	if ( !get_pcvar_num(cvar_RanksSystem) )
	{
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "RANK_SYSTEM_DISABLED")
		return PLUGIN_HANDLED
	}
	
	new title[64]
	formatex(title, charsmax(title), "\y[Auto-Mix]\w %L:", LANG_PLAYER, "RANKS_LIST_MENU_TITLE")
		
	new menu = menu_create(title, "ranksMenuHandler")
	
	new players[32], pnum, tempid
	get_players(players, pnum, "ch")
	
	for ( new i ; i < pnum ; i++ )
	{
		tempid = players[i]
		
		new szId[5]
		new pName[64], lineToDisplay[128] = "%s -\r "
		num_to_str(tempid, szId, charsmax(szId))
		get_user_name(tempid, pName, charsmax(pName))
		format(lineToDisplay, charsmax(lineToDisplay), lineToDisplay, pName)
		new toadd_rank[32]
		formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1")
		
		if ( gPoints[tempid] < get_pcvar_num(cvar_BeginnerPoints) )
			formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1")
		else if ( gPoints[tempid] < get_pcvar_num(cvar_RegularPoints) )
			formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM2")
		else if ( gPoints[tempid] < get_pcvar_num(cvar_VeteranPoints) )
			formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM3")
		else if ( gPoints[tempid] < get_pcvar_num(cvar_ProPoints) )
			formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM4")
		else if ( gPoints[tempid] < get_pcvar_num(cvar_HardCorePoints) )
			formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM5")
		else
			formatex(toadd_rank, charsmax(toadd_rank), "%L", LANG_PLAYER, "RANKS_PRICES_MENU_ITEM6")
			
		add(lineToDisplay, charsmax(lineToDisplay), toadd_rank)
		
		menu_additem(menu, lineToDisplay, szId, 0)
	}
	
	menu_display(id, menu)
	return PLUGIN_HANDLED
}	

public ranksMenuHandler(id, menu, item)  { 
	if( item == MENU_EXIT ) 
		return PLUGIN_HANDLED
	
	new data[6], iName[64]
	new access, callback 
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	new pickedId = str_to_num(data)
	
	if ( !is_user_connected(pickedId) )
		return PLUGIN_HANDLED
		
	new pName[64]
	get_user_name(pickedId, pName, charsmax(pName))
	new menuToDisplay[248]
	new lineToAdd[32]
	new keys = MENU_KEY_0
	
	if ( gPoints[pickedId] < get_pcvar_num(cvar_BeginnerPoints) )
		formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_BeginnerPoints))
	else if ( gPoints[pickedId] < get_pcvar_num(cvar_RegularPoints) )
		formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_RegularPoints))
	else if ( gPoints[pickedId] < get_pcvar_num(cvar_VeteranPoints) )
		formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_VeteranPoints))
	else if ( gPoints[pickedId] < get_pcvar_num(cvar_ProPoints) )
		formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_ProPoints))
	else if ( gPoints[pickedId] < get_pcvar_num(cvar_HardCorePoints) )
		formatex(lineToAdd, charsmax(lineToAdd), "%d\r /\w %d", gPoints[pickedId], get_pcvar_num(cvar_HardCorePoints))
	else
		formatex(lineToAdd, charsmax(lineToAdd), "%d", gPoints[pickedId])
	
	if ( gPoints[pickedId] < get_pcvar_num(cvar_BeginnerPoints) )
		formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM1", "1")
	else if ( gPoints[pickedId] < get_pcvar_num(cvar_RegularPoints) )
		formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM2", "2")
	else if ( gPoints[pickedId] < get_pcvar_num(cvar_VeteranPoints) )
		formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM3", "3")
	else if ( gPoints[pickedId] < get_pcvar_num(cvar_ProPoints) )
		formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM4", "4")
	else if ( gPoints[pickedId] < get_pcvar_num(cvar_HardCorePoints) )
		formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM5", "5")
	else
		formatex(menuToDisplay, charsmax(menuToDisplay), "%L", LANG_PLAYER, "RANKS_MENU_TITLE", pName, lineToAdd, LANG_PLAYER, "RANKS_PRICES_MENU_ITEM6", "MAX")
	
	show_menu(id, keys, menuToDisplay, -1, "ranks info")
	return PLUGIN_HANDLED
}

public ranks_showInfo(id, key)
{
	showRanks(id)
	return PLUGIN_HANDLED
}

public afkCheck_entThink(ent)
{
	if ( get_playersnum() && g_IsStarted && get_pcvar_num(cvar_AFKKick) )
		checkPlayers()
	entity_set_float(ent, EV_FL_nextthink, halflife_time() + CHECK_FREQ)
}
	
public checkPlayers() {
	for (new i = 1; i <= gMaxPlayers; i++) 
	{
		if (is_user_alive(i) && is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && g_spawned[i]) 
		{
			new newangle[3]
			get_user_origin(i, newangle)
		
			if ( newangle[0] == g_oldangles[i][0] && newangle[1] == g_oldangles[i][1] && newangle[2] == g_oldangles[i][2] )
			{
				g_afktime[i] += CHECK_FREQ
				check_afktime(i)
			} 
			
			else 
			{
				g_oldangles[i][0] = newangle[0]
				g_oldangles[i][1] = newangle[1]
				g_oldangles[i][2] = newangle[2]
				g_afktime[i] = 0.0
			}
		}
		
	}
	return PLUGIN_HANDLED
}

check_afktime(id) {	  
	new maxafktime = get_pcvar_num(cvar_mp_afktime)
	
	if (maxafktime < MIN_AFK_TIME) {
		log_amx("cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
		maxafktime = MIN_AFK_TIME
		set_pcvar_num(cvar_mp_afktime, MIN_AFK_TIME)
	}
		
	if ( maxafktime-WARNING_TIME <= floatround(g_afktime[id]) < maxafktime) {
		new timeleft = maxafktime - floatround(g_afktime[id])
		CromChat(id, "&x04%s &x01%L", PREFIX, LANG_PLAYER, "AFK_TIME_WARN", timeleft)
	}
	
	else if (floatround(g_afktime[id]) > maxafktime) {
		new name[32]
		get_user_name(id, name, 31)
		CromChat(0, "&x04%s %L", PREFIX, LANG_PLAYER, "AFK_KICKED", name, maxafktime)
		log_amx("%s was kicked for being AFK longer than %i seconds", name, maxafktime)
		server_cmd("kick #%d ^"%s %L^"", get_user_userid(id), PREFIX, LANG_PLAYER, "AFK_KICK", maxafktime)
	}
}


public RG_PlayerSpawn(id)
{	
	g_spawned[id] = true
	get_user_origin(id, g_oldangles[id])
}

register_cmd(const clcmd[], const function[], flags = -1, const info[] = "", FlagManager = -1)
{
	new cmdToRegister[6][64];
	
	formatex(cmdToRegister[0], charsmax(cmdToRegister[]), "say !%s", clcmd)
	formatex(cmdToRegister[1], charsmax(cmdToRegister[]), "say .%s", clcmd)
	formatex(cmdToRegister[2], charsmax(cmdToRegister[]), "say /%s", clcmd)
	formatex(cmdToRegister[3], charsmax(cmdToRegister[]), "say_team !%s", clcmd)
	formatex(cmdToRegister[4], charsmax(cmdToRegister[]), "say_team .%s", clcmd)
	formatex(cmdToRegister[5], charsmax(cmdToRegister[]), "say_team /%s", clcmd)
	
	for ( new i ; i < sizeof(cmdToRegister) ; i++ )
		register_clcmd(cmdToRegister[i], function, flags, info, FlagManager)
}
	
scanForTaskID()
{
	for ( new i = 1337 ; i < 1337*2 ; i++ )
	{
		if ( !task_exists(i) )
			return i
	}
	
	log_amx("Auto-Mix Task ID Error! Couldn't find a TASK ID!")
	return 0
}

removeAllTasks()
{
	for ( new i = 1337 ; i < 1337*2 ; i++ )
	{
		if ( task_exists(i) )
			remove_task(i)
	}
}

stock remove_shield(id)
{
	if ( !is_user_alive(id) || !( 1 <= id <= gMaxPlayers) )
		return 0;
		
	const m_iUserPrefs = 510;
	const USING_SHIELD = (1<<16);
	const HAS_SHIELD = (1<<24);
		
	new prefs = get_pdata_int(id, m_iUserPrefs) & ~USING_SHIELD;
	new model[64];
		
	if(prefs & HAS_SHIELD)
		pev(id, pev_viewmodel2, model, charsmax(model));
			
	if(equal(model, "models/shield/v_shield_", 23))
	{
		replace(model, charsmax(model), "shield/v_shield", "v");
			
		set_pev(id, pev_viewmodel2, model);
	}
			
	pev(id, pev_weaponmodel2, model, charsmax(model));
			
	if(equal(model, "models/shield/p_shield_", 23))
	{
		replace(model, charsmax(model), "shield/p_shield", "p");
			
		set_pev(id, pev_weaponmodel2, model);
	}	
	set_pdata_int(id, m_iUserPrefs, (prefs & ~HAS_SHIELD));
		
	return 1;
}

LoadStats(id)
{
	if ( is_user_hltv(id) || is_user_bot(id) )
		return;
		
	new authid[35]
	get_user_authid(id, authid, sizeof(authid) - 1)
	
	if (containi(authid, "_ID_") != -1)
		return
		
	new data[16]
	if( fvault_get_data(gPointsVault, authid, data, sizeof(data) - 1) )
		gPoints[id] = str_to_num(data)
	else
		gPoints[id] = 0
			
	return;
}

SaveStats(id)
{
	if ( is_user_hltv(id) || is_user_bot(id) || !get_pcvar_num(cvar_RanksSystem) )
		return;
		
	new authid[35]
	get_user_authid(id, authid, sizeof(authid) - 1)
	  
	if (gPoints[id] < 0)
		gPoints[id] = 0

	if (containi(authid, "_ID_") != -1)
		return
	
	new data[16]
	num_to_str(gPoints[id], data, sizeof(data) - 1)
	fvault_set_data(gPointsVault, authid, data)	
	  
	return;
}

public Cmd_VoteBan(id)
{
	get_players(g_iPlayers, g_iNum, "h");
	
	if(g_iNum < 3)
	{
		CromChat ( id, "&x04%s %L", PREFIX,LANG_PLAYER, "BAN_NO");
		return PLUGIN_HANDLED;
	}
	ShowBanMenu(id);
	return PLUGIN_CONTINUE;
}

public ShowBanMenu(id)
{
	new iMenu = menu_create("\rVOTEBAN \yMenu:", "VoteBan_menu_handler");
	static players[32], num;
	get_players(players, num, "h");
	
	static player, szName[32], info[5];
	
	for(new i = 0; i < num; i++)
	{
		player = players[i];
		get_user_name(player, szName, charsmax(szName));

		static ITEM_TITLE[64];
		formatex(ITEM_TITLE, charsmax(ITEM_TITLE), "%s \d(\r%d%%\d)", szName, get_percent(g_iVotes[player], g_iNum));

		num_to_str(player, info, charsmax(info));
		menu_additem(iMenu, ITEM_TITLE, info);
	}
	
	menu_display(id, iMenu);
	return PLUGIN_HANDLED;
}

public VoteBan_menu_handler(id, iMenu, iKey)
{
	if(iKey == MENU_EXIT)
	{
		return PLUGIN_HANDLED;
	}

	static access, info[5], szName[32], callback;

	menu_item_getinfo(iMenu, iKey, access, info, charsmax(info), szName, charsmax(szName), callback);
	
	static iVoteBanID;
	iVoteBanID = str_to_num(info);

	if(!is_user_connected(iVoteBanID))
	{
		ShowBanMenu(id);
		return PLUGIN_HANDLED;
	}
	else if(iVoteBanID == id)
	{
		CromChat ( id, "&x04%s %L", PREFIX,LANG_PLAYER, "BAN_YOURSELF");
		ShowBanMenu(id);
	}
	else if(g_iVotedPlayers[id] & (1 << iVoteBanID))
	{
		CromChat ( id, "&x04%s %L", PREFIX,LANG_PLAYER, "BAN_ALREADY");
		ShowBanMenu(id);
		
		return PLUGIN_HANDLED;
	}
		

	g_iVotes[iVoteBanID]++;
	g_iVotedPlayers[id] |= (1 << iVoteBanID);
			
	static szName2[2][32];
	get_user_name(id, szName2[0], charsmax(szName2[]));
	get_user_name(iVoteBanID, szName2[1], charsmax(szName2[]));
			
	CromChat ( 0, "&x04%s %L", PREFIX, LANG_PLAYER, "BAN_X_BAN_X", szName2[0], szName2[1]);
		
	CheckVotes(iVoteBanID, id);
	client_cmd(id, "messagemode pug_voteban_reason");
			
	ShowBanMenu(id);

	return PLUGIN_HANDLED;
}

public Cmd_VoteBanReason(id)
{
	if(!g_iVotedPlayers[id])
		return PLUGIN_HANDLED;
	
	new szArgs[64];
	read_argv(1, szArgs, charsmax(szArgs));
	
	if(szArgs[0])
	{
		formatex(g_szVoteReason[id], charsmax(g_szVoteReason[]), szArgs);
	}
	return PLUGIN_HANDLED;
}

public CheckVotes(id, voter)
{
	get_players(g_iPlayers, g_iNum, "h");
	new iPercent = get_percent(g_iVotes[id], g_iNum);
	
	if(iPercent >= get_pcvar_num(g_iPcvar[CVAR_PERCENT]))
	{
		switch(get_pcvar_num(g_iPcvar[CVAR_BANTYPE]))
		{
			case 1:
			{
				new szAuthid[32];
				get_user_authid(id, szAuthid, charsmax(szAuthid));
				server_cmd("kick #%d;wait;wait;wait;banid %d ^"%s^";wait;wait;wait;writeid", get_user_userid(id), get_pcvar_num(g_iPcvar[CVAR_BANTIME]), szAuthid);
			}
			case 2:
			{
				new szIp[32];
				get_user_ip(id, szIp, charsmax(szIp), 1);
				server_cmd("kick #%d;wait;wait;wait;addip %d ^"%s^";wait;wait;wait;writeip", get_user_userid(id), get_pcvar_num(g_iPcvar[CVAR_BANTIME]), szIp);
			}
		}
		g_iVotes[id] = 0;
		
		new szName[2][32];
		get_user_name(id, szName[0], charsmax(szName[]));
		get_user_name(id, szName[1], charsmax(szName[]));
		CromChat ( 0, "&x04%s %L", PREFIX,LANG_PLAYER, "BAN_BAN_BAN", szName[0], get_pcvar_num(g_iPcvar[CVAR_BANTIME]));
		
		log_to_file(g_szLogFile, "Player '%s' voted for banning '%s' for: %s", szName[1], szName[0], g_szVoteReason[voter]);
	}
}

stock get_percent(value, tvalue)
{	 
	return floatround(floatmul(float(value) / float(tvalue) , 100.0));
}

stock register_saycmd(saycommand[], function[], flags = -1, info[])
{
	static szTemp[64];
	formatex(szTemp, charsmax(szTemp), "say %s", saycommand);
	register_clcmd(szTemp, function, flags, info);
	formatex(szTemp, charsmax(szTemp), "say_team %s", saycommand);
	register_clcmd(szTemp, function, flags, info);
	formatex(szTemp, charsmax(szTemp), "say /%s", saycommand);
	register_clcmd(szTemp, function, flags, info);
	formatex(szTemp, charsmax(szTemp), "say .%s", saycommand);
	register_clcmd(szTemp, function, flags, info);
	formatex(szTemp, charsmax(szTemp), "say_team /%s", saycommand);
	register_clcmd(szTemp, function, flags, info);
	formatex(szTemp, charsmax(szTemp), "say_team .%s", saycommand);
	register_clcmd(szTemp, function, flags, info);
}


public cmdSpec(id) {
	if(is_user_admin(id)) {
		new pCvarSpecTimes
		pCvarSpecTimes = get_pcvar_num(SpecTimes);
		
		if(CountTime[id] >= pCvarSpecTimes) {
			CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER,"SPEC_TIME", pCvarSpecTimes);
			return PLUGIN_HANDLED;
		}
		
		if(get_member(id, m_iTeam) == TEAM_TERRORIST){
			TerroristTeam[id] = true;
		}
		else {
			TerroristTeam[id] = false;
		}
		
		if(get_member(id, m_iTeam) == TEAM_SPECTATOR) {
			CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER,"SPEC_SPEC");
			return PLUGIN_HANDLED;
		}
		else {
			rg_set_user_team(id, TEAM_SPECTATOR);
			user_kill(id, 1);
			CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER, "SPEC_ALD");
			CountTime[id]++;
			return PLUGIN_HANDLED;
		}
	}
	return PLUGIN_HANDLED;
}

public cmdBack(id)
{
	if(is_user_admin(id))
	{
		if(get_member(id, m_iTeam) != TEAM_SPECTATOR) {
			CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER,"SPEC_NON");
			return PLUGIN_HANDLED;
		}
		
		if(get_member(id, m_iTeam) == TEAM_SPECTATOR)
		{
			if(TerroristTeam[id] == true)
			{
				rg_set_user_team(id, TEAM_TERRORIST);
				CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER,"SPEC_TT");
				return PLUGIN_HANDLED;
			}
			else
			{
				rg_set_user_team(id, TEAM_CT);
				CromChat ( id, "&x04%s %L", PREFIX, LANG_PLAYER,"SPEC_CT");
				return PLUGIN_HANDLED;
			}
		}
	}
	return PLUGIN_HANDLED;
}
public cmdPMMenu(id)
{
	new menu = menu_create("Send PM To:", "handlePMMEnu")
	
	new players[32], num
	new szName[32], szTempid[32]
	
	get_players(players, num, "ach")
	
	for(new i; i < num; i++)
	{
		get_user_name(players[i], szName, charsmax(szName))
		
		num_to_str(get_user_userid(players[i]), szTempid, charsmax(szTempid))
		
		menu_additem(menu, szName, szTempid, 0)
	}
	
	menu_display(id, menu)
}

public handlePMMEnu(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	
	new szData[6], szName[64], iAccess, iCallback
	menu_item_getinfo(menu, item, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback)
	
	g_iTarget[id] = find_player("k", str_to_num(szData))
	
	client_cmd(id, "messagemode PrivateMessage")
	
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

public cmd_player(id)
{
	new say[300]
	read_args(say, charsmax(say))
	remove_quotes(say)
	
	if(!strlen(say))
		return PLUGIN_HANDLED
	
	new szSenderName[32], szReceiverName[32]
	get_user_name(id, szSenderName, charsmax(szSenderName))
	get_user_name(g_iTarget[id], szReceiverName, charsmax(szReceiverName))
	
	CromChat(id, "PM to %s: %s", szReceiverName, say)
	CromChat(g_iTarget[id], "&x04PM from %s: %s", szSenderName, say)
	
	return PLUGIN_CONTINUE
}
public motd_thingie(id) {
	show_motd(id,g_FileLocation,"MOTD:")
	return PLUGIN_HANDLED
} 
public logevent_round_start(id)
{		   
	if (get_pcvar_num(cvar_ScoreHud)!=1) 
		return PLUGIN_CONTINUE;
	
	
	if (g_IsStarted)
	{
		if (g_Twon)
		{
			if (g_bSecondHalf)
			{
				set_hudmessage(0, 212, 255, 0.52, 0.49, 1, 6.0, 12.0, 0.1, 0.2, -1)
				show_hudmessage(0, "%L",LANG_PLAYER, "SHOW_SCORE_HUD", g_iScore[0], g_iScore[1]);
			} 
			else
			{
				set_hudmessage(0, 212, 255, 0.52, 0.49, 1, 6.0, 12.0, 0.1, 0.2, -1)
				show_hudmessage(0, "%L",LANG_PLAYER, "SHOW_SCORE_HUD", g_iScore[1], g_iScore[0]);
			}
		} 
		else
		{
			if (g_bSecondHalf)
			{
				set_hudmessage(0, 212, 255, 0.52, 0.49, 1, 6.0, 12.0, 0.1, 0.2, -1)
				show_hudmessage(0, "%L",LANG_PLAYER, "SHOW_SCORE_HUD", g_iScore[1], g_iScore[0]);
			} 
			else
			{
				set_hudmessage(0, 212, 255, 0.52, 0.49, 1, 6.0, 12.0, 0.1, 0.2, -1)
				show_hudmessage(0, "%L",LANG_PLAYER, "SHOW_SCORE_HUD", g_iScore[0], g_iScore[1]);
			} 
			
		}
		
	}
	return PLUGIN_CONTINUE
}

public RG_HasRestrictItem(const id, const ItemID:item, ItemRestType:type)
{
	if(item == ITEM_SHIELDGUN && (!get_pcvar_num(cvar_AllowShield) || g_KnifeRound))
	{
		No_Shield_Message(id);
		SetHookChainReturn(ATYPE_INTEGER, 1);
		return HC_SUPERCEDE;
	}

	return HC_CONTINUE;
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}&x01\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 &x01\\ par }
*/
__________________
['O|s|G'] | Death Wins a.k.a Ish Chhabra was here

Last edited by ish12321; 07-14-2017 at 13:07.
ish12321 is offline
kristi
Senior Member
Join Date: Nov 2016
Old 07-14-2017 , 14:01   Re: Not printing message but just "s"
Reply With Quote #2

The issue is with CromChat include after the Counter-Strike 10 July update.
kristi is offline
Send a message via Skype™ to kristi
HamletEagle
AMX Mod X Plugin Approver
Join Date: Sep 2013
Location: Romania
Old 07-14-2017 , 14:10   Re: Not printing message but just "s"
Reply With Quote #3

Quote:
Originally Posted by kristi View Post
The issue is with CromChat include after the Counter-Strike 10 July update.
It's with all chat plugins...
__________________
HamletEagle is offline
Old 07-15-2017, 03:17
heroicpower7613
This message has been deleted by heroicpower7613. Reason: say double post
heroicpower7613
Member
Join Date: Nov 2016
Old 07-15-2017 , 03:18   Re: Not printing message but just "s"
Reply With Quote #5

Quote:
Originally Posted by HamletEagle View Post
It's with all chat plugins...
can it be fixed?
heroicpower7613 is offline
ish12321
Veteran Member
Join Date: May 2016
Old 07-15-2017 , 03:51   Re: Not printing message but just "s"
Reply With Quote #6

But when j replaced it with an old version which i dont have code of it worked..

And i didnt updated to the latest version using steamcmd as i use rehlds
__________________
['O|s|G'] | Death Wins a.k.a Ish Chhabra was here

Last edited by ish12321; 07-15-2017 at 03:51.
ish12321 is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 07-14-2017 , 15:30   Re: Not printing message but just "s"
Reply With Quote #7

The issue is with Steam staff not having anything better to do.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
HamletEagle
AMX Mod X Plugin Approver
Join Date: Sep 2013
Location: Romania
Old 07-14-2017 , 16:50   Re: Not printing message but just "s"
Reply With Quote #8

Quote:
Originally Posted by OciXCrom View Post
The issue is with Steam staff not having anything better to do.
They fixed exploits, lol. When they don't do anything people scream, when they do, people scream. I can understand that they don't care about plugins, only to get their game working.
__________________
HamletEagle is offline
Natsheh
Veteran Member
Join Date: Sep 2012
Old 07-15-2017 , 07:21   Re: Not printing message but just "s"
Reply With Quote #9

Quote:
Originally Posted by HamletEagle View Post
They fixed exploits, lol. When they don't do anything people scream, when they do, people scream. I can understand that they don't care about plugins, only to get their game working.
The best thing to do is to move on cs 1.6
__________________
@Jailbreak Main Mod v2.7.0 100%
@User Tag Prefix 100% done !
@Mystery Box 100% done !
@VIP System 100% done !

Natsheh is offline
Send a message via MSN to Natsheh Send a message via Skype™ to Natsheh
ish12321
Veteran Member
Join Date: May 2016
Old 07-15-2017 , 14:32   Re: Not printing message but just "s"
Reply With Quote #10

Quote:
Originally Posted by Natsheh View Post
The best thing to do is to move on cs 1.6
Could you please tell us the solution if you know
__________________
['O|s|G'] | Death Wins a.k.a Ish Chhabra was here
ish12321 is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 23:08.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode