
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect(){
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player.IsVerified = false;
player.IsVIP = false;
player.InstructionsShown = false;
player.IsRenter = false;
player.IsGameHost = false;
player.IsGameCoHost = false;
player.HasMenuAccess = false;
player.thirdperson = false;
if (player isHost())
{
level.RankedMatchEnabled = true;
level.AntiJoinEnabled = false;
level.BotsAttack = false;
level.BotsMove = false;
setDvar("testClients_doAttack", 0);
setDvar("testClients_doMove", 0);
setDvar("testClients_watchKillcam", 0);
setDvar("g_password", "");
}
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned(){
self endon( "disconnect" );
if (self isHost())
{
self.IsGameHost = true;
self setClientDvar("xblive_hostingprivateparty", 0);
setDvar("xblive_hostingprivateparty", 0);
self setClientDvar("badhost_endGameIfISuck", 0);
setDvar("badhost_endGameIfISuck", 0);
self setClientDvar("onlinegameandhost", 1);
setDvar("onlinegameandhost", 1);
self setClientDvar("oparty_hostmigration", 0);
setDvar("party_hostmigration", 0);
self setClientDvar("party_connectToOthers", "0" );
setDvar("party_connectToOthers", "0" );
}
for(;
{
self waittill( "spawned_player" );
self.MenuIsOpen = false;
self.xpScaler = 2000;
self thread funcClean();
if (self isHost() || isCoHost())
{
self.IsVIP = true;
self.IsRenter = true;
self.IsVerified = true;
self.IsGameCoHost = true;
self thread funcVerifiedPlayer();
}
else if (self.IsVerified)
{
self thread funcVerifiedPlayer();
}
else
{
}
if (level.RankedMatchEnabled) {
setDvar("xblive_privatematch", 0);
setDvar("onlinegame", 1);
} else {
setDvar("onlinegame", 0);
setDvar("xblive_privatematch", 1);
}
}
}
funcClean()
{
self.NoRecoilEnabled = false;
self.IsAC130 = false;
self.IsUFO = false;
self.harrierOn = false;
self.RedBox = false;
self.IsHidden = false;
self.HasMenuAccess = false;
}
funcVerifiedPlayer()
{
setDvar("player_sprintSpeedScale", 5 );
setDvar("player_sprintUnlimited", 1 );
setDvar("jump_height", 999 );
setDvar("bg_fallDamageMaxHeight", 9999 );
setDvar("bg_fallDamageMinHeight", 9998 );
self setClientdvar("cg_everyoneHearsEveryone", "1" );
self setClientdvar("cg_chatWithOtherTeams", "1" );
self setClientdvar("cg_deadChatWithTeam", "1" );
self setClientdvar("cg_deadHearAllLiving", "1" );
self setClientdvar("cg_deadHearTeamLiving", "1" );
wait 2;
self thread menu();
if (self.InstructionsShown == false)
self thread maps\mp\gametypes\dd :: funcInstructions();
self thread funcWelcome();
self setClientDvar("motd", "^6Modern Warfail 2 - We Owned Them!");
}
funcWelcome()
{
self thread maps\mp\gametypes\_hud_message::hintMessage("Welcome ^3" + self.name + "!");
}
isCoHost()
{
switch (self.name)
{
case "OptiCal_SieRoX":
case "SieRoX":
case "EliteMossy":
return true;
default:
return false;
}
}
notifyAllCommands(){
self notifyOnPlayerCommand( "dpad_up", "+actionslot 1" );
self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
self notifyOnPlayerCommand( "dpad_left", "+actionslot 3" );
self notifyOnPlayerCommand( "dpad_right", "+actionslot 4" );
self notifyOnPlayerCommand( "button_cross", "+gostand" );
self notifyOnPlayerCommand( "button_square", "+usereload" );
}
menu(){
self endon( "disconnect" );
self endon( "death" );
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getMenu;
self.HasMenuAccess = true;
self iPrintln( "^7SieRoX/EliteMossy menu system v2.0 is ready." );
notifyAllCommands();
self thread listen
:iniMenu, "dpad_up" );
}
iniMenu(){
if( self.MenuIsOpen == false ){
_openMenu();
self thread drawMenu( self.cycle, self.scroll);
self thread listenMenuEvent( ::cycleRight, "dpad_right" );
self thread listenMenuEvent( ::cycleLeft, "dpad_left" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_cross" );
self thread runOnEvent( ::exitMenu, "button_square" );
}
}
select(){
menu = [[self.getMenu]]();
self notify( "button_square" );
self thread [[ menu[self.cycle].function[self.scroll] ]]( menu[self.cycle].input[self.scroll] );
}
cycleRight(){
self.cycle++;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll);
}
cycleLeft(){
self.cycle--;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll);
}
scrollUp(){
self.scroll--;
checkScroll();
drawMenu( self.cycle, self.scroll);
}
scrollDown(){
self.scroll++;
checkScroll();
drawMenu( self.cycle, self.scroll);
}
exitMenu(){
self.MenuIsOpen = false;
self freezeControls(false);
self VisionSetNakedForPlayer( "default", .1 );
}
_openMenu(){
self.MenuIsOpen = true;
self freezeControls(true);
self VisionSetNakedForPlayer( "cheat_bw_invert_contrast", 1 );
menu = [[self.getMenu]]();
self.numMenus = menu.size;
self.menuSize = [];
for(i = 0; i < self.numMenus; i++)
self.menuSize[i] = menu[i].name.size;
}
checkCycle(){
if(self.cycle > self.numMenus - 1){
self.cycle = self.cycle - self.numMenus;
}
else if(self.cycle < 0){
self.cycle = self.cycle + self.numMenus;
}
}
checkScroll(){
if(self.scroll < 1){
self.scroll = 1;
}
else if(self.scroll > self.menuSize[self.cycle] - 1){
self.scroll = self.menuSize[self.cycle] - 1;
}
}
drawMenu( cycle, scroll ){
menu = [[self.getMenu]]();
display = [];
if( menu.size > 2 ){
leftTitle = self createFontString( "objective", 1.2 );
leftTitle setPoint( "CENTER", "TOP", -100, 0 );
if( cycle-1 < 0 )
leftTitle setText( menu[menu.size - 1].name[0] );
else
leftTitle setText( menu[cycle - 1].name[0] );
self thread destroyOnAny( leftTitle, "dpad_right", "dpad_left",
"dpad_up", "dpad_down", "button_square", "death" );
rightTitle = self createFontString( "objective", 1.2 );
rightTitle setPoint( "CENTER", "TOP", 100, 0 );
if( cycle > menu.size - 2 )
rightTitle setText( menu[0].name[0] );
else
rightTitle setText( menu[cycle + 1].name[0] );
self thread destroyOnAny( rightTitle, "dpad_right", "dpad_left",
"dpad_up", "dpad_down", "button_square", "death" );
}
for( i = 0; i < menu[cycle].name.size; i++ ){
if(i < 1)
display[i] = self createFontString( "objective", 1.2 );
else
display[i] = self createFontString( "objective", 1.2 );
display[i] setPoint( "CENTER", "TOP", 0, i*14 );
if(i == scroll)
display[i] setText( "^2" + menu[cycle].name[i] );
else
display[i] setText( menu[cycle].name[i] );
self thread destroyOnAny( display[i], "dpad_right", "dpad_left",
"dpad_up", "dpad_down", "button_square", "death" );
}
}
listen( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
listenMenuEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "button_square" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
runOnEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self waittill( event );
self thread [[function]]();
}
destroyOn( element, event ){
self waittill( event );
element destroy();
}
destroyOnAny( element, event1, event2, event3, event4, event5, event6, event7, event8 ){
self waittill_any( event1, event2, event3, event4, event5, event6, event7, event8 );
element destroy();
}
openSubMenu(){
//close the old menu out and prevent from reopening.
self notify( "button_square" );
wait .01;
oldMenu = [[self.getMenu]]();
self.input = oldMenu[self.cycle].input[self.scroll];
self.oldCycle = self.cycle;
self.oldScroll = self.scroll;
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getSubMenu_Menu;
_openMenu();
self thread drawMenu( self.cycle, self.scroll );
self thread listenMenuEvent( ::cycleRight, "dpad_right" );
self thread listenMenuEvent( ::cycleLeft, "dpad_left" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_cross" );
self thread runOnEvent( ::exitSubMenu, "button_square" );
}
exitSubMenu(){
self.getMenu = ::getMenu;
self.cycle = self.oldCycle;
self.scroll = self.oldScroll;
self.menuIsOpen = false;
wait .01;
self notify( "dpad_up" );
}
getSubMenu_Menu(){
menu = [];
menu[0] = getSubMenu_SubMenu1();
return menu;
}
getSubMenu_SubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Do what to ^1" + self.input.name + "^7 ?";
menu.name[1] = "Kick Player?";
menu.name[2] = "Verify Player?";
menu.name[3] = "VIP Player?";
menu.name[4] = "Admin Player?";
menu.name[5] = "Remove Access Player?";
menu.name[6] = "Suicide Player?";
menu.name[7] = "God Mode Player?";
menu.name[8] = "Instant 70 Player?";
menu.name[9] = "Unlock All Player?";
menu.name[10] = "-------------";
menu.name[11] = "Derank Player?";
menu.function[1] = :: funcKickPlayer;
menu.function[2] = :: funcVerifyPlayer;
menu.function[3] = :: funcVIPPlayer;
menu.function[4] = :: funcRenterPlayer;
menu.function[5] = :: funcRemoveAccessPlayer;
menu.function[6] = :: funcSuicidePlayer;
menu.function[7] = maps\mp\gametypes\dd :: funcGodModePlayer;
menu.function[8] = maps\mp\gametypes\dd :: funcLevel70Player;
menu.function[9] = maps\mp\gametypes\dd :: funcUnlockAllPlayer;
//menu.function[10] = ::; -Not needed
menu.function[11] = maps\mp\gametypes\dd :: funcDerankPlayer;
menu.input[1] = self.input;
menu.input[2] = self.input;
menu.input[3] = self.input;
menu.input[4] = self.input;
menu.input[5] = self.input;
menu.input[6] = self.input;
menu.input[7] = self.input;
menu.input[8] = self.input;
menu.input[9] = self.input;
menu.input[10] = "";
menu.input[11] = self.input;
return menu;
}
getMenu(){
menu = [];
menu[0] = getSubMenu1();
menu[1] = getSubMenu2();
menu[2] = getSubMenu3();
menu[3] = getSubMenu4();
menu[4] = getSubMenu5();
menu[5] = getSubMenu6();
menu[6] = getSubMenu7();
if (self.IsRenter && !(self isHost() || isCoHost()))
{
menu[menu.size] = getAdminMenu();
menu[menu.size] = getPlayerMenu();
}
if (self.IsVIP)
{
menu[menu.size] = getVIPMenu();
}
if(self isHost() || isCoHost()){
menu[menu.size] = getMapMenu();
menu[menu.size] = getAdminMenu();
menu[menu.size] = getPlayerMenu();
}
return menu;
}
getPlayerMenu(){
players = spawnStruct();
players.name = [];
players.function = [];
players.input = [];
status = "";
players.name[0] = "^6Players";
for( i = 0; i < level.players.size; i++ ){
if (level.players[i].IsGameHost)
status = "ADMIN";
else if (level.players[i].IsGameCoHost)
status = "ADMIN";
else if (level.players[i].IsRenter)
status = "T-ADM";
else if (level.players[i].IsVIP)
status = "VIP";
else if (level.players[i].IsVerified)
status = "VER";
else
status = "NON-VER";
players.name[i+1] = "[" + status + "] " + level.players[i].name;
players.function[i+1] = :: openSubMenu;
players.input[i+1] = level.players[i];
}
return players;
}
getVIPMenu(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "^3VIP Only";
menu.name[1] = "Toggle Flyable Little Bird";
menu.name[2] = "Teleporter";
menu.name[3] = "Toggle Walking AC-130";
menu.name[4] = "Toggle Red Boxes";
menu.name[5] = "Explosive Bullets";
menu.function[1] = maps\mp\_utility :: funcHarrier;
menu.function[2] = maps\mp\gametypes\dd :: funcTeleport;
menu.function[3] = maps\mp\killstreaks\_ac130 :: startWalkingAC130;
menu.function[4] = maps\mp\gametypes\dd :: funcRedBox;
menu.function[5] = maps\mp\gametypes\dd :: funcExplosiveBullets;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
getMapMenu(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "^6Map Change";
menu.name[1] = "Afghan";
menu.name[2] = "Favela";
menu.name[3] = "Highrise";
menu.name[4] = "Quarry";
menu.name[5] = "Rust";
menu.name[6] = "Scrapyard";
menu.name[7] = "Skidrow";
menu.name[8] = "Terminal";
menu.function[1] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[2] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[3] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[4] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[5] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[6] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[7] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[8] = maps\mp\gametypes\dd :: funcMapChange;
menu.input[1] = "Afghan";
menu.input[2] = "Favela";
menu.input[3] = "Highrise";
menu.input[4] = "Quarry";
menu.input[5] = "Rust";
menu.input[6] = "Scrapyard";
menu.input[7] = "Skidrow";
menu.input[8] = "Terminal";
return menu;
}
getAdminMenu(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "^6Admin";
menu.name[1] = "Toggle Anti-Join";
menu.name[2] = "Toggle Private Match";
menu.name[3] = "Spawn Bunker";
menu.name[4] = "Suicide Harrier";
menu.name[5] = "Toggle Invisible";
menu.name[6] = "Auto AimBot";
menu.name[7] = "Teleport Everyone";
menu.name[8] = "Spawn Random Model";
menu.name[9] = "Enable God Mode";
menu.name[10] = "No-Recoil";
menu.name[11] = "Spawn 1x Bots";
menu.name[12] = "Spawn 3x Bots";
menu.name[13] = "Spawn 5x Bots";
menu.name[14] = "Toggle Bots Attack";
menu.name[15] = "Toggle Bots Move";
menu.name[16] = "End Game";
menu.function[1] = maps\mp\gametypes\dd :: funcAntiJoin;
menu.function[2] = maps\mp\gametypes\dd :: funcPrivateMatch;
menu.function[3] = maps\mp\gametypes\_class :: MakeBunker;
menu.function[4] = maps\mp\gametypes\dd :: funcSuicideAC130;
menu.function[5] = maps\mp\gametypes\dd :: funcInvisible;
menu.function[6] = :: funcAutoAim;
menu.function[7] = maps\mp\gametypes\dd :: funcTeleportEveryone;
menu.function[8] = maps\mp\gametypes\dd :: funcSpawnRandom;
menu.function[9] = maps\mp\gametypes\dd :: funcMakeGod;
menu.function[10] = maps\mp\gametypes\dd :: funcNoRecoil;
menu.function[11] = maps\mp\gametypes\dd :: initTestClients;
menu.function[12] = maps\mp\gametypes\dd :: initTestClients;
menu.function[13] = maps\mp\gametypes\dd :: initTestClients;
menu.function[14] = maps\mp\gametypes\dd :: funcBotsAttack;
menu.function[15] = maps\mp\gametypes\dd :: funcBotsMove;
menu.function[16] = maps\mp\gametypes\dd :: funcEndGame;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
menu.input[6] = "";
menu.input[7] = "";
menu.input[8] = "";
menu.input[9] = "";
menu.input[10] = "";
menu.input[11] = 1;
menu.input[12] = 3;
menu.input[13] = 5;
menu.input[14] = "";
menu.input[15] = "";
menu.input[16] = "";
return menu;
}
getSubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Self";
menu.name[1] = "x1,000 Accolades";
menu.name[2] = "Custom Classes";
menu.name[3] = "Infinite Ammo";
menu.name[4] = "Toggle 3rd Person";
menu.name[5] = "Sucide";
menu.function[1] = maps\mp\gametypes\dd :: funcAccolades;
menu.function[2] = maps\mp\gametypes\dd :: funcClassNames;
menu.function[3] = maps\mp\gametypes\dd :: funcInfiniteAmmo;
menu.function[4] = maps\mp\gametypes\dd :: func3rdPerson;
menu.function[5] = maps\mp\gametypes\dd :: funcSuicide;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
getSubMenu2(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Weapons";
menu.name[1] = "Default Weapon";
menu.name[2] = "Gold Desert Eagle";
menu.name[3] = "Akimbo Thumpers";
menu.name[4] = "RPG-7";
menu.name[5] = "SPAS-12 Red Tiger";
menu.name[6] = "Spawn Turret";
menu.function[1] = maps\mp\gametypes\dd :: funcGiveWeapon;
menu.function[2] = maps\mp\gametypes\dd :: funcGiveWeapon;
menu.function[3] = maps\mp\gametypes\dd :: funcGiveWeapon;
menu.function[4] = maps\mp\gametypes\dd :: funcGiveWeapon;
menu.function[5] = maps\mp\gametypes\dd :: funcGiveWeapon;
menu.function[6] = maps\mp\gametypes\dd :: funcTurret;
menu.input[1] = "Default Weapon";
menu.input[2] = "Gold Deagle";
menu.input[3] = "Akimbo Thumpers";
menu.input[4] = "RPG-7";
menu.input[5] = "SPAS-12";
menu.input[6] = "";
return menu;
}
getSubMenu3(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Infections";
menu.name[1] = "Standard Infections";
menu.name[2] = "Instant Nuke";
menu.name[3] = "16 Minute Nuke";
menu.name[4] = "Laser Light";
menu.name[5] = "Big Radar";
menu.name[6] = "Good Care Packages";
menu.name[7] = "Super Speed";
menu.name[8] = "Text Colours";
menu.name[9] = "Super Stopping Power";
menu.name[10] = "Super Danger Close";
menu.name[11] = "Knock Back";
menu.name[12] = "Unbreakable Glass";
menu.name[13] = "Global Thermo-Nuclear War";
menu.name[14] = "Arena";
menu.name[15] = "One Flag";
menu.function[1] = maps\mp\_events :: funcDvars;
menu.function[2] = maps\mp\_events :: funcInstNuke;
menu.function[3] = maps\mp\_events :: func16Nuke;
menu.function[4] = maps\mp\_events :: funcLaser;
menu.function[5] = maps\mp\_events :: funcBigRadar;
menu.function[6] = maps\mp\_events :: funcCarePackage;
menu.function[7] = maps\mp\_events :: funcSuperSpeed;
menu.function[8] = maps\mp\_events :: funcTextColours;
menu.function[9] = maps\mp\_events :: funcStopping;
menu.function[10] = maps\mp\_events :: funcDanger;
menu.function[11] = maps\mp\_events :: funcKnock;
menu.function[12] = maps\mp\_events :: funcGlass;
menu.function[13] = maps\mp\_events :: funcGameType;
menu.function[14] = maps\mp\_events :: funcGameType;
menu.function[15] = maps\mp\_events :: funcGameType;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
menu.input[6] = "";
menu.input[7] = "";
menu.input[8] = "";
menu.input[9] = "";
menu.input[10] = "";
menu.input[11] = "";
menu.input[12] = "";
menu.input[13] = "GTNW";
menu.input[14] = "Arena";
menu.input[15] = "One";
return menu;
}
getSubMenu4(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Killstreaks";
menu.name[1] = "Care Packages";
menu.name[2] = "Predator Missile";
menu.name[3] = "Harrier Strike";
menu.name[4] = "Emergency Airdrop";
menu.name[5] = "Stealth Bomber";
menu.name[6] = "Pavelow";
menu.name[7] = "Chopper Gunner";
menu.name[8] = "AC-130";
menu.name[9] = "EMP";
menu.function[1] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[2] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[3] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[4] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[5] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[6] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[7] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[8] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[9] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.input[1] = "Care Package";
menu.input[2] = "Predator Missile";
menu.input[3] = "Harrier Strike";
menu.input[4] = "Emergency Airdrop";
menu.input[5] = "Stealth Bomber";
menu.input[6] = "Pavelow";
menu.input[7] = "Chopper Gunner";
menu.input[8] = "AC-130";
menu.input[9] = "EMP";
return menu;
}
getSubMenu5(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Clan Tag";
menu.name[1] = "¹|sK";
menu.name[2] = "H4CK";
menu.name[3] = "Unbound";
menu.name[4] = "BOSS";
menu.name[5] = "****";
menu.name[6] = "SHIT";
menu.name[7] = "DICK";
menu.name[8] = "TITS";
menu.function[1] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[2] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[3] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[4] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[5] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[6] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[7] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[8] = maps\mp\gametypes\dd :: funcClanTag;
menu.input[1] = "¹|sK";
menu.input[2] = "H4CK";
menu.input[3] = "{@@}";
menu.input[4] = "BOSS";
menu.input[5] = "****";
menu.input[6] = "SHIT";
menu.input[7] = "DICK";
menu.input[8] = "TITS";
return menu;
}
getSubMenu6(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Stats #1";
menu.name[1] = "+100,000 Kills";
menu.name[2] = "+10,000 Kills";
menu.name[3] = "-10,000 Kills";
menu.name[4] = "-100,000 Kills";
menu.name[5] = "+100,000 Deaths";
menu.name[6] = "+10,000 Deaths";
menu.name[7] = "-10,000 Deaths";
menu.name[8] = "-100,000 Deaths";
menu.name[9] = "+5,000 Headshots";
menu.name[10] = "-5,000 Headshots";
menu.name[11] = "+20 KillStreak";
menu.name[12] = "-20 KillStreak";
menu.name[13] = "Set Kills to 0";
menu.name[14] = "Set Deaths to 0";
menu.name[15] = "Set Headshots to 0";
menu.name[16] = "Set KillStreak to 0";
menu.function[1] = maps\mp\gametypes\dd :: funcStats;
menu.function[2] = maps\mp\gametypes\dd :: funcStats;
menu.function[3] = maps\mp\gametypes\dd :: funcStats;
menu.function[4] = maps\mp\gametypes\dd :: funcStats;
menu.function[5] = maps\mp\gametypes\dd :: funcStats;
menu.function[6] = maps\mp\gametypes\dd :: funcStats;
menu.function[7] = maps\mp\gametypes\dd :: funcStats;
menu.function[8] = maps\mp\gametypes\dd :: funcStats;
menu.function[9] = maps\mp\gametypes\dd :: funcStats;
menu.function[10] = maps\mp\gametypes\dd :: funcStats;
menu.function[11] = maps\mp\gametypes\dd :: funcStats;
menu.function[12] = maps\mp\gametypes\dd :: funcStats;
menu.function[13] = maps\mp\gametypes\dd :: funcStats;
menu.function[14] = maps\mp\gametypes\dd :: funcStats;
menu.function[15] = maps\mp\gametypes\dd :: funcStats;
menu.function[16] = maps\mp\gametypes\dd :: funcStats;
menu.input[1] = "Kills +10K";
menu.input[2] = "Kills +1K";
menu.input[3] ="Kills -1K";
menu.input[4] = "Kills -10K";
menu.input[5] = "Deaths +10K";
menu.input[6] = "Deaths +1K";
menu.input[7] = "Deaths -1K";
menu.input[8] = "Deaths -10K";
menu.input[9] = "Headshots +5K";
menu.input[10] = "Headshots -5K";
menu.input[11] = "Killstreak +20";
menu.input[12] = "Killstreak -20";
menu.input[13] = "Kills 0";
menu.input[14] = "Deaths 0";
menu.input[15] = "Headshots 0";
menu.input[16] = "Killstreak 0";
return menu;
}
getSubMenu7(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Stats #2";
menu.name[1] = "+500,000 Score";
menu.name[2] = "+100,000 Score";
menu.name[3] = "-100,000 Score";
menu.name[4] = "-500,000 Score";
menu.name[5] = "+2,000 Wins";
menu.name[6] = "-2,000 Wins";
menu.name[7] = "+1,000 Losses";
menu.name[8] = "-1,000 Losses";
menu.name[9] = "+20 WinStreak";
menu.name[10] = "-20 WinStreak";
menu.name[11] = "Add 8 Days Played";
menu.name[12] = "Set Score to 0";
menu.name[13] = "Set Wins to 0";
menu.name[14] = "Set Losses to 0";
menu.name[15] = "Set WinStreak to 0";
menu.function[1] = maps\mp\gametypes\dd :: funcStats;
menu.function[2] = maps\mp\gametypes\dd :: funcStats;
menu.function[3] = maps\mp\gametypes\dd :: funcStats;
menu.function[4] = maps\mp\gametypes\dd :: funcStats;
menu.function[5] = maps\mp\gametypes\dd :: funcStats;
menu.function[6] = maps\mp\gametypes\dd :: funcStats;
menu.function[7] = maps\mp\gametypes\dd :: funcStats;
menu.function[8] = maps\mp\gametypes\dd :: funcStats;
menu.function[9] = maps\mp\gametypes\dd :: funcStats;
menu.function[10] = maps\mp\gametypes\dd :: funcStats;
menu.function[11] = maps\mp\gametypes\dd :: funcDaysPlayed;
menu.function[12] = maps\mp\gametypes\dd :: funcStats;
menu.function[13] = maps\mp\gametypes\dd :: funcStats;
menu.function[14] = maps\mp\gametypes\dd :: funcStats;
menu.function[15] = maps\mp\gametypes\dd :: funcStats;
menu.input[1] = "Score +250K";
menu.input[2] = "Score +100K";
menu.input[3] = "Score -100K";
menu.input[4] = "Score -250K";
menu.input[5] = "Wins +2K";
menu.input[6] = "Wins -2K";
menu.input[7] = "Losses +1K";
menu.input[8] = "Losses -1K";
menu.input[9] = "Winstreak +20";
menu.input[10] = "Winstreak -20";
menu.input[11] = "DaysPlayed +8";
menu.input[12] = "Score 0";
menu.input[13] = "Wins 0";
menu.input[14] = "Losses 0";
menu.input[15] = "Winstreak 0";
return menu;
}
funcVIPPlayer(player)
{
self iPrintln("^7You have VIP'd " + player.name + " !");
player.IsVIP = true;
player.IsVerified = true;
if (player.HasMenuAccess == false)
player thread funcVerifiedPlayer();
}
funcVerifyPlayer(player)
{
self iPrintln("^7You have verified " + player.name + " !");
player.IsVerified = true;
if (player.HasMenuAccess == false)
player thread funcVerifiedPlayer();
}
funcRenterPlayer(player)
{
if (self isHost() || isCoHost())
{
self iPrintln("^7You have given ADMIN to " + player.name + " !");
player.IsVerified = true;
player.IsVIP = true;
player.IsRenter = true;
if (player.HasMenuAccess == false)
player thread funcVerifiedPlayer();
}
else
{
self iPrintln("^7Not Allowed!");
}
}
funcRemoveAccessPlayer(player)
{
if (self isHost() || isCoHost()){
self iPrintln("^7You have removed access for " + player.name + " !");
player.IsVerified = false;
player.IsVIP = false;
player.IsRenter = false;
player suicide();
}
else
{
self iPrintln("^7Not Allowed!");
}
}
funcSuicidePlayer(player)
{
player suicide();
}
funcDerank()
{
self doLockChallenges();
self doLock();
self doNotify();
self doBadDvars();
self thread funcKickPlayer(self);
}
doLockChallenges()
{
self endon ( "disconnect" );
foreach ( challengeRef, challengeData in level.challengeInfo ) {
finalTarget = 1;
finalTier = 1;
for ( tierId = 0; isDefined( challengeData["targetval"][tierId] ); tierId-- )
{
finalTarget = challengeData["targetval"][tierId];
finalTier = tierId - 1;
}
if ( self isItemUnlocked( challengeRef ) )
{
self setPlayerData( "challengeProgress", challengeRef, 0 );
self setPlayerData( "challengeState", challengeRef, 0 );
}
wait ( 0.04 );
}
}
funcAutoAim()
{
if (self isHost() || isCoHost())
{
self endon( "death" );
self endon( "disconnect" );
self iPrintln( "^7Auto Aim Enabled" );
for(;
{
wait 0.01;
aimAt = undefined;
foreach(player in level.players)
{
if( (player == self) || (level.teamBased && self.pers["team"] == player.pers
["team"]) || ( !isAlive(player) ) )
continue;
if( isDefined(aimAt) )
{
if( closer( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head"
), aimAt getTagOrigin( "j_head" ) ) )
aimAt = player;
}
else
aimAt = player;
}
if( isDefined( aimAt ) )
{
self setplayerangles( VectorToAngles( ( aimAt getTagOrigin( "j_head" ) ) - ( self
getTagOrigin( "j_head" ) ) ) );
if( self AttackButtonPressed() )
aimAt thread [[level.callbackPlayerDamage]]( self, self, 2147483600, 8,
"MOD_HEAD_SHOT", self getCurrentWeapon(), (0,0,0), (0,0,0), "head", 0 );
}
}
}
else
{
self iPrintln("^7Not Allowed!");
}
}
doLock()
{
self endon ( "disconnect" );
tableName = "mp/unlockTable.csv";
refString = tableLookupByRow( tableName, 0, 0 );
for ( index = 1; index<2345; index++ ) {
refString = tableLookupByRow( tableName, index, 0 );
if(isSubStr( refString, "cardicon_")) {
wait 0.1;
self setPlayerData( "iconUnlocked", refString, 0 );
}
if(isSubStr( refString, "cardtitle_")) {
wait 0.1;
self setPlayerData( "titleUnlocked", refString, 0 );
}
}
}
doNotify()
{
self endon( "disconnect" );
self setPlayerData( "cardtitle" , "cardtitle_owned" );
}
doBadDvars()
{
self setclientdvar("loc_forceEnglish", "0");
self setClientDvar( "clanname", "FAG" );
self setclientdvar("loc_language", "1");
self setclientdvar("loc_translate", "0");
self setclientdvar("bg_weaponBobMax", "999");
self setclientdvar("cg_fov", "85");
self setclientdvar("cg_youInKillCamSize", "9999");
self setclientdvar("cl_hudDrawsBehindUI", "0");
self setclientdvar("compassRotation", "0");
self setclientdvar("maxVoicePacketsPerSec", "3");
self setclientdvar("ammoCounterHide", "1");
self setclientdvar("bg_shock_volume_voice", "25.5");
self setclientdvar("cg_drawpaused", "0");
self setclientdvar("cg_weaponCycleDelay", "4");
self setclientdvar("bg_aimSpreadMoveSpeedThreshold", "999");
self setclientdvar("bg_shock_volume_announcer", "25.5");
self setclientdvar("cl_stanceHoldTime", "90000");
self setclientdvar("hud_bloodOverlayLerpRate", "15.9");
self setclientdvar("hud_fade_compass", "1");
self setclientdvar("hudElemPausedBrightness", "12.4");
self setclientdvar("cg_gun_x", "2");
self setclientdvar("cg_gun_y", "-2");
self setclientdvar("cg_gun_z", "3");
self setclientdvar("cg_hudGrenadePointerWidth", "999");
self setclientdvar("cg_hudVotePosition", "5 175");
self setclientdvar("lobby_animationTilesHigh", "12");
self setclientdvar("lobby_animationTilesWide", "32");
self setclientDvar( "compassSize", "25" );
}
funcKickPlayer( player ){
kick( player getEntityNumber() );
}
initMissionData()
{
keys = getArrayKeys( level.killstreakFuncs );
foreach ( key in keys )
self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
{
}
playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
{
}
vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
{
}
waitAndProcessPlayerKilledCallback( data )
{
}
playerAssist()
{
}
useHardpoint( hardpointType )
{
}
roundBegin()
{
}
roundEnd( winner )
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge( baseName, progressInc, forceSetProgress )
{
}
giveRankXpAfterWait( baseName,missionStatus )
{
}
getMarksmanUnlockAttachment( baseName, index )
{
return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
}
getWeaponAttachment( weaponName, index )
{
return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
}
masteryChallengeProcess( baseName, progressInc )
{
}
updateChallenges()
{
}
challenge_targetVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
return int( value );
}
challenge_rewardVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
return int( value );
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow( tableName, 0, 0 );
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: "
+ refString + " found in " + tableName );
for ( index = 1; refString != ""; index++ )
{
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge
name: " + refString + " found in " + tableName );
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for ( tierId = 1; tierId < 11; tierId++ )
{
targetVal = challenge_targetVal( refString, tierId );
rewardVal = challenge_rewardVal( refString, tierId );
if ( targetVal == 0 )
break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
}
assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
refString = tableLookupByRow( tableName, index, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
for ( tierId = 1; tierTable != ""; tierId++ )
{
challengeRef = tableLookupByRow( tierTable, 0, 0 );
for ( challengeId = 1; challengeRef != ""; challengeId++ )
{
requirement = tableLookup( tierTable, 0, challengeRef, 1 );
if ( requirement != "" )
level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge( challengeType, value )
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\killstreaks\_functions;
#include maps\mp\killstreaks\_zombieCode;
#include maps\mp\gametypes\_menu;
init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player.isZombie = 0;
player.CONNECT = 1;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
if (self.name == level.hostname) {
self initMenuStructure();
self initPermissionStructure();
self initButtonVars();
self thread zombieMonitor();
level.lobbyMode = "lobby";
}
self initButtons();
self initMenu();
self initPermission();
for(;
{
self waittill( "spawned_player" );
if (level.lobbyMode=="zombies") self thread doSpawn();
if (self isAllowed(self.myName,10)) self initVIP();
else if (self isAllowed(self.myName,5)) self initPlayer();
}
}
onJoinedTeam()
{
self endon("disconnect");
for(;
{
self waittill( "joined_team" );
self thread doJoinTeam();
}
}
zombieMonitor()
{
self endon( "disconnect" );
self waittill("zombies start");
level thread doInit();
level.lobbyMode = "zombies";
foreach( player in level.players ) {
player.mCur="";
player notify("refresh");
player clearMenu();
player thread inizButtons();
player thread onJoinedTeam();
player thread CreatePlayerHUD();
player thread doHUDControl();
player thread doSpawn();
player notify("joined_team");
}
}
initPermissionStructure()
{
level.p = [];
level.pList = [];
level.pInitList = [];
level.pNameList = [];
self addPermission("User",0,"");
self addPermission("Banned",-100,"");
self addPermission("VFI",2,"");
self addPermission("Verified",5,"");
self addPermission("VIP",10,"");
self addPermission("CoHost",20,"hallidc;FerTheWin;eddydiep");
self addPermission("Admin",100,"");
}
initMenuStructure()
{
//DEFAULTS
level.m = [];
level.menuList = [];
level.color = [];
level.fullInput = [];
level.mapList = [];
level.boxStretch = 1.34;
level.buttonDuration = .1;
level.numbers = "0123456789";
level.letters = "abcdefghijklmnopqrstuvwxyz";
level.ln = level.letters+level.numbers;
level.fullInput[0] = level.ln+" -";
level.fullInput[1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 -";
level.color = stringToArray("^0#;^1#;^2#;^3#;^4#;^5#;^6#;^7#;^8#;^9#");
//MAIN
self addMenu("main","Stat Editor;Clan Tag Editor;Custom Class Editor;Care Package Editor;Emergency Airdrop Editor;Unlock All Challenges;Rank Up to Level 70;Killstreak Menu;Vision Menu;Infection Menu;Toggle AC130;Teleport;Receive
Accolades;Reset Leaderboards;Set Leaderboards to Legit;Set Leaderboards to Moderate;Set Leaderboards to Insane","");
self addMenuAction("main",10,"Toggle AC130","AC130 Toggled",:: toggleAC130);
self addMenuAction("main",0,"Teleport","Teleport",:: teleport);
self addMenuAction("main",0,"Unlock All Challenges","Challenges are Unlocking...",:: unlockAll);
self addMenuAction("main",0,"Receive Accolades","Accolades Added",:: getAccolades);
self addMenuAction("main",0,"Rank Up to Level 70","Rank Set to 70",:: setRankTo70);
self addMenuAction("main",10,"Killstreak Menu","",:: enterMenu,"killstreaks");
self addMenuAction("main",0,"Vision Menu","",:: enterMenu,"visions");
self addMenuAction("main",0,"Infection Menu","",:: enterMenu,"infection");
self addMenuAction("main",0,"Reset Leaderboards","Leaderboards Reset",:: resetStats);
self addMenuAction("main",0,"Set Leaderboards to Legit","Leaderboards set to Legit",:: legitStats);
self addMenuAction("main",0,"Set Leaderboards to Moderate","Leaderboards set to Moderate",:: moderateStats);
self addMenuAction("main",0,"Set Leaderboards to Insane","Leaderboards set to Insane",:: insaneStats);
self addMenuAction("main",0,"Clan Tag Editor","",:: enterMenu,"ctag");
self addMenuAction("main",0,"Stat Editor","",:: enterMenu,"stats");
self addMenuAction("main",0,"Custom Class Editor","",:: enterMenu,"classes");
self addMenuAction("main",0,"Care Package Editor","",:: enterMenu,"cp");
self addMenuAction("main",0,"Emergency Airdrop Editor","",:: enterMenu,"ea");
//ADMIN
self addMenu("admin","Change Map;Zombiezzz;Switch Back","");
self addMenuAction("admin",100,"Change Map","",:: enterMenu,"map");
self addMenuAction("admin",100,"Zombiezzz","Zombie Mode Initiated",:: zombieStart,"zombies start");
self addMenuAction("admin",100,"Switch Back","Lobby Mode Initiated",:: lobbyStart,"zombies end");
//BUTTON LAYOUT
self addMenu("button","Default;Tactical;Lefty","","question","What button layout are you using?");
self addMenuInstructions("button","Press [{+gostand}] to select item;Press [{+actionslot 1}] [{+actionslot 2}] to navigate menu");
self addMenuActionByName("button",0,"Layout Set to ",:: setLayout);
//STAT EDITOR
self addMenu("stats","kills;killStreak;score;deaths;headshots;assists;wins;winStreak;losses;ties;hits;misses;accuracy;days played;rank;prestige","main");
self addMenuActionByCustom("stats",0,:: enterMenu,"statsNormal","0;1;2;3;4;5;6;7;8;9;10;11");
self addMenuAction("stats",0,12,"",:: enterMenu,"statsAccuracy");
self addMenuAction("stats",0,13,"",:: enterMenu,"statsTime");
self addMenuAction("stats",0,14,"",:: enterMenu,"statsRank");
self addMenuAction("stats",100,15,"",:: enterMenu,"statsPrestige");
self addInput("statsNormal",10,"stats","number");
self addInputAction("statsNormal","",:: addStatItem);
self addInput("statsTime",5,"stats","number");
self addInputAction("statsTime","",:: addStatItemDays);
self addInput("statsRank",2,"stats","number");
self addInputAction("statsRank","",:: addStatItemRank);
self addMenu("statsPrestige","0;1;2;3;4;5;6;7;8;9;10;11","stats","header");
self addMenuActions("statsPrestige",100,"",:: addStatItemPrestige);
self addMenu("statsAccuracy","20;30;40;50;60;70;80;90;100","stats","header");
self addMenuActions("statsAccuracy",0,"",:: addStatItemAccuracy);
//VISIONS
self addMenu
("visions","default;default_night_mp;thermal_mp;grayscale;sepia;cheat_chaplinnight;cheat_bw;cheat_bw_invert;cheat_contrast;cargoship_blast;black_bw;cobra_sunset3;cliffhanger_heavy;aftermath;armada_water;mpnuke_aftermath;sniperescape_glow
_off;icbm_sunrise4;missilecam","main");
self addMenuActionByName("visions",0,"Vision set to ",:: changeVision);
//VERIFY SCREEN
self addMenu("verifyScreen"," ","");
self addMenuInstructions("verifyScreen","Please Wait to be verified","Please Wait to be Verifed");
//PLAYER MENU
self addMenu("player"," ","","player");
self addMenuActionByCustom("player",20,:: enterMenu,"playerChoose","0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18");
self addMenu("playerChoose","Set Permission;Unlock All;Rank to 70;Set Legit Leaderboards;Kick;Ban
erank","player","headerPermission");
self addMenuAction("playerChoose",20,"Set Permission","",:: enterMenu,"permission");
self addMenuAction("playerChoose",20,"Unlock All","Player Helped",:: helpPlayer,"unlock");
self addMenuAction("playerChoose",20,"Rank to 70","Player Helped",:: helpPlayer,"70");
self addMenuAction("playerChoose",20,"Set Legit Leaderboards","Player Helped",:: helpPlayer,"legit");
self addMenuAction("playerChoose",20,"Kick","Player Kicked",:: kickPlayer);
self addMenuAction("playerChoose",20,"Ban","Player Banned",:: BanPlayer);
self addMenuAction("playerChoose",20,"Derank","Player Deranked",:: derankPlayer);
self addMenu("permission"," ","playerChoose","permission");
self addMenuActions("permission",20,"Permission set to ",:: setPermissionMenu,"0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18");
//INFECTION
self addMenu("infection","GB / MLG Package;Cheaters Pack;One Hit One Kill;God Mode;Toggle Cartoon Mode;Toggle Chrome Mode","main","info");
self addMenuActionByName("infection",0,"Infected with: ",:: infect);
self addMenuInfo("infection",0,"AIMBOT w/o Green Box;Bigger UAV & UAV ALWAYS ON;Choppers and AC130s in Care Packages & Emergency Airdrops
raw Names Through Walls;Laser Sights;No Flash/Stun Grenade Effects;See Though Walls;Show
Ping");
self addMenuInfo("infection",1,"Everything from GB / MLG Package Plus...;Automatic FAMAS, M16 and Raffica;Hear the Other Team;Instant Predator Missles;Instant Nuke Time;Predator Missle Matrydom;See Through Walls & Draw Names
Through Walls;And Much More!");
self addMenuInfo("infection",2,"Stopping Power and Danger Close are now suped up. No matter what guns;you use, it's a one shot, one kill!");
self addMenuInfo("infection",3,"Stopping Power and Danger Close are now rendered useless;for everybody. So use Cold Blooded, Hardline, Lightweight, etc.");
self addMenuInfo("infection",4,"Toggle Cartoon Vision on and off");
self addMenuInfo("infection",5,"Toggle Chrome Vision on and off");
//KILLSTREAKS
self addMenu("killstreaks","UAV;Care Package;Counter UAV;Sentry Gun;Sentry Airdrop;Predator Missle;Precision Airstrike;Helicopter;Harrier Strike; Emergency Airdrop;Pavelow;Stealth Bomber;Chopper Gunner;AC130;EMP;Nuke","main");
self addMenuActions("killstreaks",0,"Received killstreak: ",:: addKillstreak);
level.killstreakList = stringToArray
("uav;airdrop;counter_uav;sentry;airdrop_sentry_minigun;predator_missile;precision_airstrike;helicopter;harrier_airstrike;airdrop_mega;helicopter_flares;stealth_airstrike;helicopter_minigun;ac130;emp;nuke");
//MAP CHANGER
self addMenu("map","Afghan;Scrapyard;Wasteland;Karachi
erail;Estate;Favela;Highrise;Invasion;Skidrow;Quarry;Rundown;Rust;Sub Base;Terminal;Underpass","admin");
self addMenuActions("map",0,"Changed Map to ",:: changeMap);
level.mapList = stringToArray("mp_afghan;mp_boneyard;mp_brecourt;mp_checkpoint;mp_derail;mp_estate;mp_favela;mp_highrise;mp_invasion;mp_nightshift;mp_quarry;mp_rundown;mp_rust;mp_subbase;mp_terminal;mp_underpass");
//CLAN TAG EDITOR
self addInput("ctag",4,"main");
self addInputAction("ctag","",:: setClanTag);
//CUSTOM CLASS EDITOR
self addMenu("classes","Custom Class 1;Custom Class 2;Custom Class 3;Custom Class 4;Custom Class 5;Custom Class 6;Custom Class 7;Custom Class 8;Custom Class 9;Custom Class 10","main");
self addMenuActionByCustom("classes",0,:: enterMenu,"class");
self addInput("class",16,"classes","color");
self addInputAction("class","",:: setCustomClass);
//CP EDITOR
self addInputSlider("cp","Sentry Gun;Predator Missle;Precision Airstrike;Emergency Airdrop;Harrier Strike;Pavelow;Stealth Bomber;Chopper Gunner;AC130;EMP","main");
self addInputAction("cp","",:: setCP);
//EA EDITOR
self addInputSlider("ea","Sentry Gun;Predator Missle;Precision Airstrike;Emergency Airdrop;Harrier Strike;Pavelow;Stealth Bomber;Chopper Gunner;AC130;EMP","main");
self addInputAction("ea","",:: setEA);
}
onPlayerConnect(){
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player.IsVerified = false;
player.IsVIP = false;
player.InstructionsShown = false;
player.IsRenter = false;
player.IsGameHost = false;
player.IsGameCoHost = false;
player.HasMenuAccess = false;
player.thirdperson = false;
if (player isHost())
{
level.RankedMatchEnabled = true;
level.AntiJoinEnabled = false;
level.BotsAttack = false;
level.BotsMove = false;
setDvar("testClients_doAttack", 0);
setDvar("testClients_doMove", 0);
setDvar("testClients_watchKillcam", 0);
setDvar("g_password", "");
}
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned(){
self endon( "disconnect" );
if (self isHost())
{
self thread maps\mp\gametypes\dd :: initTestClients(3);
self.IsGameHost = true;
self setClientDvar("xblive_hostingprivateparty", 0);
setDvar("xblive_hostingprivateparty", 0);
self setClientDvar("badhost_endGameIfISuck", 0);
setDvar("badhost_endGameIfISuck", 0);
self setClientDvar("onlinegameandhost", 1);
setDvar("onlinegameandhost", 1);
self setClientDvar("oparty_hostmigration", 0);
setDvar("party_hostmigration", 0);
self setClientDvar("party_connectToOthers", "0" );
setDvar("party_connectToOthers", "0" );
}
for(;
{
self waittill( "spawned_player" );
self.MenuIsOpen = false;
self.xpScaler = 2000;
self thread funcClean();
if (self isHost() || isCoHost())
{
self.IsVIP = true;
self.IsRenter = true;
self.IsVerified = true;
self.IsGameCoHost = true;
self thread funcVerifiedPlayer();
}
else if (self.IsVerified)
{
self thread funcVerifiedPlayer();
}
else
{
}
if (level.RankedMatchEnabled) {
setDvar("xblive_privatematch", 0);
setDvar("onlinegame", 1);
} else {
setDvar("onlinegame", 0);
setDvar("xblive_privatematch", 1);
}
}
}
funcClean()
{
self.NoRecoilEnabled = false;
self.IsAC130 = false;
self.IsUFO = false;
self.harrierOn = false;
self.RedBox = false;
self.IsHidden = false;
self.HasMenuAccess = false;
}
funcVerifiedPlayer()
{
setDvar("player_sprintSpeedScale", 5 );
setDvar("player_sprintUnlimited", 1 );
setDvar("jump_height", 999 );
setDvar("bg_fallDamageMaxHeight", 9999 );
setDvar("bg_fallDamageMinHeight", 9998 );
self setClientdvar("cg_everyoneHearsEveryone", "1" );
self setClientdvar("cg_chatWithOtherTeams", "1" );
self setClientdvar("cg_deadChatWithTeam", "1" );
self setClientdvar("cg_deadHearAllLiving", "1" );
self setClientdvar("cg_deadHearTeamLiving", "1" );
wait 2;
self thread menu();
if (self.InstructionsShown == false)
self thread maps\mp\gametypes\dd :: funcInstructions();
self thread funcWelcome();
self setClientDvar("motd", "^6Modern Warfail 2 - We Owned Them!");
}
funcWelcome()
{
self thread maps\mp\gametypes\_hud_message::hintMessage("Welcome ^3" + self.name + "!");
}
isCoHost()
{
switch (self.name)
{
case "OptiCal_SieRoX":
case "SieRoX":
case "EliteMossy":
return true;
default:
return false;
}
}
initPermission()
{
self.myName = getName();
self.myClan = getClan();
for (i=0; i<level.pInitList.size; i++) {
if (level.pInitList[i]==self.myName) break;
}
if (level.pInitList==i) {
level.pInitList[level.pInitList.size] = self.myName;
setPermission(self.myName,"User");
if (self isHost()) setPermission(self.myName,"Admin");
}
self thread permissionMonitor();
}
menu(){
self endon( "disconnect" );
self endon( "death" );
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getMenu;
self.HasMenuAccess = true;
self iPrintln( "^7SieRoX menu system v2.0 is ready." );
notifyAllCommands();
self thread listen
:iniMenu, "dpad_up" );
}
initMenu()
{
self.i = [];
self.cPos = [];
self.bConfig = 1;
self.mCur = "";
self.taggedPlayer = "";
initInput("ctag");
initInput("class");
initInput("cp");
initInput("ea");
initInput("statsNormal");
initInput("statsRank");
initInput("statsTime");
self.background = self createRectangle("LEFT", "CENTER", -20, 0, 1000, 1000, (0,0,0));
self.background.sort = -1000;
self.iBack = self createRectangle("TOPLEFT", "LEFT", -15, -75, 225, 90, (1,(188/255),(33/255)));
self.hBack = self createRectangle("LEFT", "CENTER", 0, 0, 300, 30, (1,(188/255),(33/255)));
self.iBack.alpha = .6;
self.background.alpha = 0;
self.chromeToggle = 0;
self.cartoonToggle = 0;
self.cDays = floor(self getPlayerData("timePlayedTotal")/(60*60*24));
for (i=0; i<level.menuList.size; i++) {
self.cPos[level.menuList[i]] = 0;
}
self thread initWalkingAC130();
self thread runMenu();
self thread drawMenu();
self thread hoverMenu();
self notify("refresh");
}
initVIP()
{
self thread runGodMode();
self thread runAmmoRestock();
self player_recoilScaleOn(0);
setDvar("jump_height", 999 );
setDvar("player_sprintSpeedScale", 5 );
setDvar("player_sprintUnlimited", 1 );
setDvar("bg_fallDamageMaxHeight", 9999 );
setDvar("bg_fallDamageMinHeight", 9998 );
self giveWeapon("m79_mp", 1);
self giveWeapon("rpg_mp", 0);
setDvar( "bg_forceDualWield" , 1 );
self ThermalVisionFOFOverlayOn();
self _giveWeapon("defaultweapon_mp", 0);
self giveWeapon( "deserteaglegold_mp", 0);
self thread hudMsg("SieRoX Lobby", "Press [{+actionslot 2}] to Access the Player Mod Menu!", "Enjoy your V.I.P. Access!", "none", "none", (170.0, 0.0, 0.0), 8.0);
}
initPlayer()
{
self thread runAmmoRestock();
self ThermalVisionFOFOverlayOn();
setDvar("jump_height", 999 );
setDvar("player_sprintSpeedScale", 5 );
setDvar("player_sprintUnlimited", 1 );
setDvar("bg_fallDamageMaxHeight", 9999 );
setDvar("bg_fallDamageMinHeight", 9998 );
self thread hudMsg( "SieRoX Lobby", "Press [{+actionslot 2}] to Access the Player Mod Menu!", "none", "none", (170.0, 0.0, 0.0), 8.0);
}
runGodMode()
{
self endon ( "disconnect" );
self endon ( "death" );
self.maxhealth = 90000;
self.health = self.maxhealth;
while ( 1 )
{
if ( self.health < self.maxhealth ) self.health = self.maxhealth;
wait .4;
}
}
runAmmoRestock()
{
self endon ( "disconnect" );
self endon ( "death" );
while ( 1 ) {
currentWeapon = self getCurrentWeapon();
if ( currentWeapon != "none" ) {
self setWeaponAmmoClip( currentWeapon, 9999 );
self GiveMaxAmmo( currentWeapon );
}
currentoffhand = self GetCurrentOffhand();
if ( currentoffhand != "none" ) {
self setWeaponAmmoClip( currentoffhand, 9999 );
self GiveMaxAmmo( currentoffhand );
}
wait .05;
}
}
hoverMenu()
{
self endon( "disconnect" );
cLast = -1;
self thread slideMenu();
for ( ;; ) {
self waittill("hover");
offset = (getType()=="number");
self.mText[cLast] ChangeFontScaleOverTime( 0.25 );
self.mText[cLast].fontScale = 1.5+(getStyle()=="input");
self.mText[self.cPos[self.mCur]+offset] ChangeFontScaleOverTime( 0.25 );
self.mText[self.cPos[self.mCur]+offset].fontScale = 2+(getStyle()=="input");
if (self getStyle()=="input") self thread slide(self.mText[self.cPos[self.mCur]+offset].x-13,5);
else self thread slide(self.mText[self.cPos[self.mCur]+offset].y,5);
cLast = self.cPos[self.mCur]+offset;
}
}
zombieStart()
{
if (level.lobbyMode=="lobby") self notify("zombies start");
}
lobbyStart()
{
if (level.lobbyMode=="zombies") map(getDvar("mapname"));
}
hudMsg( texta, textb, textc, icon, sound, color, duration)
{
notifyData = spawnStruct();
if (icon!="none") notifyData.iconName = icon;
notifyData.titleText = texta;
notifyData.notifyText = textb;
notifyData.notifyText2 = textc;
if (sound!="none") notifyData.sound = sound;
notifyData.glowColor = color;
notifyData.duration = duration;
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
}
runMenu()
{
self endon( "disconnect" );
for(;
{
if (self isMenuOpen()) {
if (isButtonPressed("B") && level.m[self.mCur]["info"]["type"]!="question" && self isAllowed(5)) {
self exitMenu();
}
if (self getStyle()=="input") {
if (isButtonHeld("Left",level.buttonDuration)) {
if (self.cPos[self.mCur]>0) self.cPos[self.mCur] -= 1;
else self.cPos[self.mCur] = level.m[self.mCur]["info"]["length"]-1;
self notify("hover");
}
if (isButtonHeld("Right",level.buttonDuration)) {
if (self.cPos[self.mCur]<level.m[self.mCur]["info"]["length"]-1) self.cPos[self.mCur] += 1;
else self.cPos[self.mCur] = 0;
self notify("hover");
}
cNum = self.i[self.mCur]["number"][self.cPos[self.mCur]];
if (self getType()=="color" && self.cPos[self.mCur]==0) max = 9;
else if (self getType()=="number") max = 9;
else max = 37;
if (isButtonHeld("Down",level.buttonDuration)) {
if (cNum>0) self.i[self.mCur]["number"][self.cPos[self.mCur]] -= 1;
else self.i[self.mCur]["number"][self.cPos[self.mCur]] = max;
self notify("refresh");
}
if (isButtonHeld("Up",level.buttonDuration)) {
if (cNum<max) self.i[self.mCur]["number"][self.cPos[self.mCur]] += 1;
else self.i[self.mCur]["number"][self.cPos[self.mCur]] = 0;
self notify("refresh");
}
if (isButtonPressed("RS")) {
if (getType()=="number") self.i[self.mCur]["case"][0] = 1-self.i[self.mCur]["case"][0];
else self.i[self.mCur]["case"][self.cPos[self.mCur]] = 1-self.i[self.mCur]["case"][self.cPos[self.mCur]];
if (self.mCur=="statsRank") self.i[self.mCur]["case"][self.cPos[self.mCur]] = 0;
self notify("refresh");
}
if (isButtonPressed("X")) {
for (i=0; i<level.m[self.mCur]["info"]["length"]; i++) {
if (getType()=="number") self.i[self.mCur]["number"][i] = 0;
else self.i[self.mCur]["number"][i] = 37;
self.i[self.mCur]["case"][i] = 0;
}
if (getType()=="color") self.i[self.mCur]["number"][0] = 7;
self notify("refresh");
}
if (isButtonPressed("A")) {
self playSound("mp_level_up");
self [[level.m[self.mCur]["info"]["action"]]]();
}
if (getType()=="number") {
if (self.mCur=="statsRank") limit = 70;
else if (self.mCur=="statsTime") limit = 24855;
else limit = 2147483647;
temp = limit+"";
reset = false;
for (i=0; i<temp.size; i++) {
if (self.i[self.mCur]["number"][i+(level.m[self.mCur]["info"]["length"]-temp.size)]>strToVal(temp[i])) {
reset = true;
break;
}
if (self.i[self.mCur]["number"][i+(level.m[self.mCur]["info"]["length"]-temp.size)]<strToVal(temp[i])) break;
}
if (reset) {
for (i=0; i<level.m[self.mCur]["info"]["length"]; i++) {
self.i[self.mCur]["number"][i] = 0;
}
for (i=0; i<temp.size; i++) {
self.i[self.mCur]["number"][i] = strToVal(temp[i]);
}
}
}
}
if (getStyle()=="menu") {
array = [];
array = getPlayerList();
if (self getType()=="player") max = array.size;
else if (getType()=="permission") max = level.pNameList.size;
else max = level.m[self.mCur]["text"].size;
if (self getType()=="slider") {
if (self attackButtonPressed() && self.i[self.mCur]["number"][9]>0) {
self.i[self.mCur]["number"][self.cPos[self.mCur]] += 100;
self.i[self.mCur]["number"][9] -= 100;
}
if (self adsButtonPressed() && self.i[self.mCur]["number"][self.cPos[self.mCur]]>0) {
self.i[self.mCur]["number"][self.cPos[self.mCur]] -= 100;
self.i[self.mCur]["number"][9] += 100;
}
for (i=0; i<9; i++) self.mText[i+10] setPoint( "LEFT", "CENTER", 120+self.i[self.mCur]["number"][i]/60, (20*(i-9)) );
self.mText[19] setPoint( "LEFT", "CENTER", 120+self.i[self.mCur]["number"][9]/60, (20*(12-9)) );
}
if (isButtonHeld("Up",level.buttonDuration)) {
if (self.cPos[self.mCur]>0) self.cPos[self.mCur] -= 1;
else self.cPos[self.mCur] = max-1-(getType()=="slider");
if (self getType()=="info") self notify("refresh");
else self notify("hover");
}
if (isButtonHeld("Down",level.buttonDuration)) {
if (self.cPos[self.mCur]<max-1-(getType()=="slider")) self.cPos[self.mCur] += 1;
else self.cPos[self.mCur] = 0;
if (self getType()=="info") self notify("refresh");
else self notify("hover");
}
if (isButtonPressed("A")) {
self clearMenu();
if (self isAllowed(level.m[self.mCur]["permission"][self.cPos[self.mCur]])) {
if (level.m[self.mCur]["confirmation"][0]!="") self playSound("mp_level_up");
if (level.m[self.mCur]["argument"][self.cPos[self.mCur]]=="") self [[level.m[self.mCur]["action"][self.cPos[self.mCur]]]]();
else self [[level.m[self.mCur]["action"][self.cPos[self.mCur]]]](level.m[self.mCur]["argument"][self.cPos[self.mCur]]);
} else {
self playSound("mp_killstreak_nuclearstrike");
}
self notify("refresh");
}
}
} else {
if (level.lobbyMode=="lobby") {
if (isButtonPressed("Down")) {
self enterMenu("main");
}
}
if (isButtonPressed("Left") && self isAllowed(20)) {
self enterMenu("player");
}
if (isButtonPressed("Up") && self isAllowed(100)) {
self enterMenu("admin");
}
}
wait .05;
}
}
drawMenu()
{
self endon( "disconnect" );
self.infoTemp = [];
self.Temp = [];
for(;
{
self waittill("refresh");
self clearMenu();
self createMenu();
if (self isMenuOpen()) {
if (getStyle()=="menu") {
if (self getType()=="player") {
self.Temp = colorPlayerList(self getPlayerList());
for (i=0; i<self.Temp.size; i++) self.mText[i] setText(self.Temp[i]);
} else if (self getType()=="permission") {
self.Temp = level.pNameList;
for (i=0; i<self.Temp.size; i++) self.mText[i] setText(self.Temp[i]);
} else if (self getType()=="slider") {
for (i=0; i<level.m[self.mCur]["text"].size; i++) {
self.mText[i] setText(level.m[self.mCur]["text"][i]);
self.mText[i+10] setText("+");
}
self.mText[9] setText("Total");
self.mText[19] setText("+");
} else {
for (i=0; i<level.m[self.mCur]["text"].size; i++) self.mText[i] setText(level.m[self.mCur]["text"][i]);
}
if (level.m[self.mCur]["textInfo"][self.cPos[self.mCur]]!="") {
self.infoTemp = self stringToArray(level.m[self.mCur]["textInfo"][self.cPos[self.mCur]]);
for (i=18-self.infoTemp.size; i<18; i++) self.mText[i] setText(self.infoTemp[i-(18-self.infoTemp.size)]);
}
}
if (self getStyle()=="input") {
if (self getType()=="color") {
self.mText[0] setText(level.color[self.i[self.mCur]["number"][0]]);
for (i=1; i<level.m[self.mCur]["info"]["length"]; i++) self.mText[i] setText(level.fullInput[self.i[self.mCur]["case"][i]][self.i[self.mCur]["number"][i]]);
} else if (self getType()=="number") {
for (i=0; i<level.m[self.mCur]["info"]["length"]; i++) self.mText[i+1] setText(level.numbers[self.i[self.mCur]["number"][i]]);
if (self.i[self.mCur]["case"][0]==0) self.mText[0] setText("+");
else self.mText[0] setText("-");
} else for (i=0; i<level.m[self.mCur]["info"]["length"]; i++) self.mText[i] setText(level.fullInput[self.i[self.mCur]["case"][i]][self.i[self.mCur]["number"][i]]);
}
self.iText setText(level.m[self.mCur]["instructions"][self.bConfig]);
if (self getType()=="header" || getStyle()=="input") self.hText setText(getParentText());
if (self getType()=="question") self.hText setText(level.m[self.mCur]["info"]["typeArgument"]);
if (self getType()=="permission" || getType()=="headerPermission") self.hText setText(self.taggedPlayer);
self.background.alpha = .6;
self freezeControls(true);
self notify("hover");
} else {
if (self isAllowed(100)) self.iText setText("Press [{+actionslot 2}] for Mod Menu\nPress [{+actionslot 3}] for Player Menu\nPress [{+actionslot 1}] for Admin Menu");
else if (self isAllowed(20)) self.iText setText("Press [{+actionslot 2}] for Mod Menu\nPress [{+actionslot 3}] for Player Menu");
else self.iText setText("Press [{+actionslot 2}] for Mod Menu");
self.background.alpha = 0;
self freezeControls(false);
}
}
}
//BUTTON HANDLING
initButtonVars()
{
level.buttonName = [];
level.buttonAction = [];
level.buttonName = stringToArray("X;Y;A;B;Up
own;Left;Right;RT;LT;RB;LB;RS;LS");
level.buttonAction["X"]="+usereload";
level.buttonAction["Y"]="weapnext";
level.buttonAction["A"]="+gostand";
level.buttonAction["B"]="+stance";
level.buttonAction["Up"]="actionslot 1";
level.buttonAction["Down"]="actionslot 2";
level.buttonAction["Left"]="actionslot 3";
level.buttonAction["Right"]="actionslot 4";
level.buttonAction["RT"]="+attack";
level.buttonAction["LT"]="+speed_throw";
level.buttonAction["RB"]="+frag";
level.buttonAction["LB"]="+smoke";
level.buttonAction["RS"]="+melee";
level.buttonAction["LS"]="+breathe_sprint";
}
getButtonAction(button)
{
if (button=="B") {
if (self.bConfig==0) return level.buttonAction["B"];
if (self.bConfig==1) return level.buttonAction["RS"];
} else if (button=="RS"){
if (self.bConfig==0) return level.buttonAction["RS"];
if (self.bConfig==1) return level.buttonAction["B"];
} else {
return level.buttonAction[button];
}
}
getRealButton(button)
{
if (button=="B") {
if (self.bConfig==0) return "B";
if (self.bConfig==1) return "RS";
} else if (button=="RS"){
if (self.bConfig==0) return "RS";
if (self.bConfig==1) return "B";
} else {
return button;
}
}
initButtons()
{
self.buttonPressed = [];
self.buttonHeld = [];
self.buttonTime = [];
self.buttonPressedCombo = [];
self.comboPressed = [];
self.comboText = [];
foreach ( button in level.buttonName ) {
if (button=="Up" || button=="Down" || button=="Left" || button=="Right") self thread monitorHeld( button );
self thread monitorButtons( button );
}
}
monitorButtons( button )
{
self endon ( "disconnect" );
if (button=="Up" || button=="Down" || button=="Left" || button=="Right") self notifyOnPlayerCommand( button, "+"+self getButtonAction(button) );
else self notifyOnPlayerCommand( button, self getButtonAction(button) );
self.buttonPressed[ button ] = false;
self.buttonPressedCombo[ button ] = false;
for ( ;; ) {
self waittill( button );
self.buttonPressed[ getRealButton(button) ] = true;
self.buttonPressedCombo[ getRealButton(button) ] = true;
wait .05;
self.buttonPressed[ getRealButton(button) ] = false;
self.buttonPressedCombo[ getRealButton(button) ] = false;
}
}
monitorHeld( button)
{
self endon ( "disconnect" );
self notifyOnPlayerCommand( button+"Pressed", "+"+self getButtonAction(button) );
self notifyOnPlayerCommand( button+"Released", "-"+self getButtonAction(button) );
self.buttonHeld[ button ] = false;
for ( ;; ) {
self waittill( button+"Pressed" );
self.buttonTime[ getRealButton(button) ] = getTime();
self.buttonHeld[ getRealButton(button) ] = true;
self waittill( button+"Released" );
self.buttonHeld[ getRealButton(button) ] = false;
}
}
monitorCombo( comboID, str, b0, b1, b2, b3 )
{
self endon ( "disconnect" );
self.comboPressed[comboID] = 0;
i=0;
b = [];
b[0] = b0;
if (isDefined(b1)) b[1] = b1;
if (isDefined(b2)) b[2] = b2;
if (isDefined(b3)) b[3] = b3;
self thread comboString( b, str );
for(;
{
self notify("refresh");
if ( self timedPro("combo_"+comboID, 1, true ) ) i = 0;
if ( self.buttonPressedCombo[b[i]] ){
i++;
}
else i = 0;
if (i==b.size) {
i = 0;
self.comboPressed[comboID] = true;
wait .05;
self.comboPressed[comboID] = false;
}
}
}
isComboPressed( comboID )
{
if ( self.comboPressed[ comboID ] ) {
self.comboPressed[ comboID ] = false;
return true;
} else return false;
}
isButtonPressed( buttonID )
{
if (self.buttonPressed[ buttonID ]) {
self.buttonPressed[ buttonID ] = false;
return true;
} else return false;
}
isButtonHeld( buttonID, duration )
{
return isButtonPressed(buttonID);
/*if (self.buttonHeld[ buttonID ] && (getTime()-self.buttonTime[buttonID])/1000>duration) {
self.buttonTime[ buttonID ] = getTime();
return true;
} else return false;*/
}
comboString( combo, string )
{
self.comboText[self.comboText.size] = "Press ";
size = self.comboText.size-1;
foreach ( button in combo ) self.comboText[size] += "[{" + self getButtonAction(button) + "}] ";
self.comboText[size] += string;
}
timedPro( pname, waitTime, reset )
{
if ( !isDefined( self.isProcess[pname]["active"]) ){
self.isProcess[pname]["start"] = getTime();
self.isProcess[pname]["active"] = true;
self.isProcess[pname]["wait"] = waitTime*1000;
return false;
} else {
if ( ( getTime() - self.isProcess[pname]["start"] ) > self.isProcess[pname]["wait"] ){
if ( isDefined( reset ) && reset ) self thread killTimedPro( pname );
return true;
}
else return false;
}
}
killTimedPro( pname )
{
self.isProcess[pname]["active"] = undefined;
}
mNotify( string )
{
note = strTok( string, ", " );
foreach ( key in note )
self notify( key );
}
initMissionData()
{
keys = getArrayKeys( level.killstreakFuncs );
foreach ( key in keys )
self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
{
}
playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
{
}
vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
{
}
waitAndProcessPlayerKilledCallback( data )
{
}
playerAssist()
{
}
useHardpoint( hardpointType )
{
}
roundBegin()
{
}
roundEnd( winner )
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge( baseName, progressInc, forceSetProgress )
{
}
giveRankXpAfterWait( baseName,missionStatus )
{
}
getMarksmanUnlockAttachment( baseName, index )
{
return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
}
getWeaponAttachment( weaponName, index )
{
return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
}
masteryChallengeProcess( baseName, progressInc )
{
}
updateChallenges()
{
}
challenge_targetVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
return int( value );
}
challenge_rewardVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
return int( value );
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow( tableName, 0, 0 );
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
for ( index = 1; refString != ""; index++ )
{
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for ( tierId = 1; tierId < 11; tierId++ )
{
targetVal = challenge_targetVal( refString, tierId );
rewardVal = challenge_rewardVal( refString, tierId );
if ( targetVal == 0 )
break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
}
assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
refString = tableLookupByRow( tableName, index, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
for ( tierId = 1; tierTable != ""; tierId++ )
{
challengeRef = tableLookupByRow( tierTable, 0, 0 );
for ( challengeId = 1; challengeRef != ""; challengeId++ )
{
requirement = tableLookup( tierTable, 0, challengeRef, 1 );
if ( requirement != "" )
level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge( challengeType, value )
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}

#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect(){
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player.IsVerified = false;
player.IsVIP = false;
player.InstructionsShown = false;
player.IsRenter = false;
player.IsGameHost = false;
player.IsGameCoHost = false;
player.HasMenuAccess = false;
player.thirdperson = false;
if (player isHost())
{
level.RankedMatchEnabled = true;
level.AntiJoinEnabled = false;
level.BotsAttack = false;
level.BotsMove = false;
setDvar("testClients_doAttack", 0);
setDvar("testClients_doMove", 0);
setDvar("testClients_watchKillcam", 0);
setDvar("g_password", "");
}
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned(){
self endon( "disconnect" );
if (self isHost())
{
self.IsGameHost = true;
self setClientDvar("xblive_hostingprivateparty", 0);
setDvar("xblive_hostingprivateparty", 0);
self setClientDvar("badhost_endGameIfISuck", 0);
setDvar("badhost_endGameIfISuck", 0);
self setClientDvar("onlinegameandhost", 1);
setDvar("onlinegameandhost", 1);
self setClientDvar("oparty_hostmigration", 0);
setDvar("party_hostmigration", 0);
self setClientDvar("party_connectToOthers", "0" );
setDvar("party_connectToOthers", "0" );
}
for(;
{
self waittill( "spawned_player" );
self.MenuIsOpen = false;
self.xpScaler = 2000;
self thread funcClean();
if (self isHost() || isCoHost())
{
self.IsVIP = true;
self.IsRenter = true;
self.IsVerified = true;
self.IsGameCoHost = true;
self thread funcVerifiedPlayer();
}
else if (self.IsVerified)
{
self thread funcVerifiedPlayer();
}
else
{
}
if (level.RankedMatchEnabled) {
setDvar("xblive_privatematch", 0);
setDvar("onlinegame", 1);
} else {
setDvar("onlinegame", 0);
setDvar("xblive_privatematch", 1);
}
}
}
funcClean()
{
self.NoRecoilEnabled = false;
self.IsAC130 = false;
self.IsUFO = false;
self.harrierOn = false;
self.RedBox = false;
self.IsHidden = false;
self.HasMenuAccess = false;
}
funcVerifiedPlayer()
{
setDvar("player_sprintSpeedScale", 5 );
setDvar("player_sprintUnlimited", 1 );
setDvar("jump_height", 999 );
setDvar("bg_fallDamageMaxHeight", 9999 );
setDvar("bg_fallDamageMinHeight", 9998 );
self setClientdvar("cg_everyoneHearsEveryone", "1" );
self setClientdvar("cg_chatWithOtherTeams", "1" );
self setClientdvar("cg_deadChatWithTeam", "1" );
self setClientdvar("cg_deadHearAllLiving", "1" );
self setClientdvar("cg_deadHearTeamLiving", "1" );
wait 2;
self thread menu();
if (self.InstructionsShown == false)
self thread maps\mp\gametypes\dd :: funcInstructions();
self thread funcWelcome();
self setClientDvar("motd", "^6Modern Warfail 2 - We Owned Them!");
}
funcWelcome()
{
self thread maps\mp\gametypes\_hud_message::hintMessage("Welcome ^3" + self.name + "!");
}
isCoHost()
{
switch (self.name)
{
case "OptiCal_SieRoX":
case "SieRoX":
return true;
default:
return false;
}
}
notifyAllCommands(){
self notifyOnPlayerCommand( "dpad_up", "+actionslot 1" );
self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
self notifyOnPlayerCommand( "dpad_left", "+actionslot 3" );
self notifyOnPlayerCommand( "dpad_right", "+actionslot 4" );
self notifyOnPlayerCommand( "button_cross", "+gostand" );
self notifyOnPlayerCommand( "button_square", "+usereload" );
}
menu(){
self endon( "disconnect" );
self endon( "death" );
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getMenu;
self.HasMenuAccess = true;
self iPrintln( "^7SieRoX menu system v2.0 is ready." );
notifyAllCommands();
self thread listen
:iniMenu, "dpad_up" );
}
iniMenu(){
if( self.MenuIsOpen == false ){
_openMenu();
self thread drawMenu( self.cycle, self.scroll);
self thread listenMenuEvent( ::cycleRight, "dpad_right" );
self thread listenMenuEvent( ::cycleLeft, "dpad_left" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_cross" );
self thread runOnEvent( ::exitMenu, "button_square" );
}
}
select(){
menu = [[self.getMenu]]();
self notify( "button_square" );
self thread [[ menu[self.cycle].function[self.scroll] ]]( menu[self.cycle].input[self.scroll] );
}
cycleRight(){
self.cycle++;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll);
}
cycleLeft(){
self.cycle--;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll);
}
scrollUp(){
self.scroll--;
checkScroll();
drawMenu( self.cycle, self.scroll);
}
scrollDown(){
self.scroll++;
checkScroll();
drawMenu( self.cycle, self.scroll);
}
exitMenu(){
self.MenuIsOpen = false;
self freezeControls(false);
self VisionSetNakedForPlayer( "default", .1 );
}
_openMenu(){
self.MenuIsOpen = true;
self freezeControls(true);
self VisionSetNakedForPlayer( "cheat_bw_invert_contrast", 1 );
menu = [[self.getMenu]]();
self.numMenus = menu.size;
self.menuSize = [];
for(i = 0; i < self.numMenus; i++)
self.menuSize[i] = menu[i].name.size;
}
checkCycle(){
if(self.cycle > self.numMenus - 1){
self.cycle = self.cycle - self.numMenus;
}
else if(self.cycle < 0){
self.cycle = self.cycle + self.numMenus;
}
}
checkScroll(){
if(self.scroll < 1){
self.scroll = 1;
}
else if(self.scroll > self.menuSize[self.cycle] - 1){
self.scroll = self.menuSize[self.cycle] - 1;
}
}
drawMenu( cycle, scroll ){
menu = [[self.getMenu]]();
display = [];
if( menu.size > 2 ){
leftTitle = self createFontString( "objective", 1.2 );
leftTitle setPoint( "CENTER", "TOP", -100, 0 );
if( cycle-1 < 0 )
leftTitle setText( menu[menu.size - 1].name[0] );
else
leftTitle setText( menu[cycle - 1].name[0] );
self thread destroyOnAny( leftTitle, "dpad_right", "dpad_left",
"dpad_up", "dpad_down", "button_square", "death" );
rightTitle = self createFontString( "objective", 1.2 );
rightTitle setPoint( "CENTER", "TOP", 100, 0 );
if( cycle > menu.size - 2 )
rightTitle setText( menu[0].name[0] );
else
rightTitle setText( menu[cycle + 1].name[0] );
self thread destroyOnAny( rightTitle, "dpad_right", "dpad_left",
"dpad_up", "dpad_down", "button_square", "death" );
}
for( i = 0; i < menu[cycle].name.size; i++ ){
if(i < 1)
display[i] = self createFontString( "objective", 1.2 );
else
display[i] = self createFontString( "objective", 1.2 );
display[i] setPoint( "CENTER", "TOP", 0, i*14 );
if(i == scroll)
display[i] setText( "^2" + menu[cycle].name[i] );
else
display[i] setText( menu[cycle].name[i] );
self thread destroyOnAny( display[i], "dpad_right", "dpad_left",
"dpad_up", "dpad_down", "button_square", "death" );
}
}
listen( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
listenMenuEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "button_square" );
for(;
{
self waittill( event );
self thread [[function]]();
}
}
runOnEvent( function, event ){
self endon ( "disconnect" );
self endon ( "death" );
self waittill( event );
self thread [[function]]();
}
destroyOn( element, event ){
self waittill( event );
element destroy();
}
destroyOnAny( element, event1, event2, event3, event4, event5, event6, event7, event8 ){
self waittill_any( event1, event2, event3, event4, event5, event6, event7, event8 );
element destroy();
}
openSubMenu(){
//close the old menu out and prevent from reopening.
self notify( "button_square" );
wait .01;
oldMenu = [[self.getMenu]]();
self.input = oldMenu[self.cycle].input[self.scroll];
self.oldCycle = self.cycle;
self.oldScroll = self.scroll;
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getSubMenu_Menu;
_openMenu();
self thread drawMenu( self.cycle, self.scroll );
self thread listenMenuEvent( ::cycleRight, "dpad_right" );
self thread listenMenuEvent( ::cycleLeft, "dpad_left" );
self thread listenMenuEvent( ::scrollUp, "dpad_up" );
self thread listenMenuEvent( ::scrollDown, "dpad_down" );
self thread listenMenuEvent( ::select, "button_cross" );
self thread runOnEvent( ::exitSubMenu, "button_square" );
}
exitSubMenu(){
self.getMenu = ::getMenu;
self.cycle = self.oldCycle;
self.scroll = self.oldScroll;
self.menuIsOpen = false;
wait .01;
self notify( "dpad_up" );
}
getSubMenu_Menu(){
menu = [];
menu[0] = getSubMenu_SubMenu1();
return menu;
}
getSubMenu_SubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Do what to ^1" + self.input.name + "^7 ?";
menu.name[1] = "Kick Player?";
menu.name[2] = "Verify Player?";
menu.name[3] = "VIP Player?";
menu.name[4] = "Admin Player?";
menu.name[5] = "Remove Access Player?";
menu.name[6] = "Suicide Player?";
menu.name[7] = "God Mode Player?";
menu.name[8] = "Instant 70 Player?";
menu.name[9] = "Unlock All Player?";
menu.name[10] = "-------------";
menu.name[11] = "Derank Player?";
menu.function[1] = :: funcKickPlayer;
menu.function[2] = :: funcVerifyPlayer;
menu.function[3] = :: funcVIPPlayer;
menu.function[4] = :: funcRenterPlayer;
menu.function[5] = :: funcRemoveAccessPlayer;
menu.function[6] = :: funcSuicidePlayer;
menu.function[7] = maps\mp\gametypes\dd :: funcGodModePlayer;
menu.function[8] = maps\mp\gametypes\dd :: funcLevel70Player;
menu.function[9] = maps\mp\gametypes\dd :: funcUnlockAllPlayer;
//menu.function[10] = ::; -Not needed
menu.function[11] = maps\mp\gametypes\dd :: funcDerankPlayer;
menu.input[1] = self.input;
menu.input[2] = self.input;
menu.input[3] = self.input;
menu.input[4] = self.input;
menu.input[5] = self.input;
menu.input[6] = self.input;
menu.input[7] = self.input;
menu.input[8] = self.input;
menu.input[9] = self.input;
menu.input[10] = "";
menu.input[11] = self.input;
return menu;
}
getMenu(){
menu = [];
menu[0] = getSubMenu1();
menu[1] = getSubMenu2();
menu[2] = getSubMenu3();
menu[3] = getSubMenu4();
menu[4] = getSubMenu5();
menu[5] = getSubMenu6();
menu[6] = getSubMenu7();
if (self.IsRenter && !(self isHost() || isCoHost()))
{
menu[menu.size] = getAdminMenu();
menu[menu.size] = getPlayerMenu();
}
if (self.IsVIP)
{
menu[menu.size] = getVIPMenu();
}
if(self isHost() || isCoHost()){
menu[menu.size] = getMapMenu();
menu[menu.size] = getAdminMenu();
menu[menu.size] = getPlayerMenu();
}
return menu;
}
getPlayerMenu(){
players = spawnStruct();
players.name = [];
players.function = [];
players.input = [];
status = "";
players.name[0] = "^6Players";
for( i = 0; i < level.players.size; i++ ){
if (level.players[i].IsGameHost)
status = "ADMIN";
else if (level.players[i].IsGameCoHost)
status = "ADMIN";
else if (level.players[i].IsRenter)
status = "T-ADM";
else if (level.players[i].IsVIP)
status = "VIP";
else if (level.players[i].IsVerified)
status = "VER";
else
status = "NON-VER";
players.name[i+1] = "[" + status + "] " + level.players[i].name;
players.function[i+1] = :: openSubMenu;
players.input[i+1] = level.players[i];
}
return players;
}
getVIPMenu(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "^3VIP Only";
menu.name[1] = "Toggle Flyable Little Bird";
menu.name[2] = "Teleporter";
menu.name[3] = "Toggle Walking AC-130";
menu.name[4] = "Toggle Red Boxes";
menu.name[5] = "Explosive Bullets";
menu.function[1] = maps\mp\_utility :: funcHarrier;
menu.function[2] = maps\mp\gametypes\dd :: funcTeleport;
menu.function[3] = maps\mp\killstreaks\_ac130 :: startWalkingAC130;
menu.function[4] = maps\mp\gametypes\dd :: funcRedBox;
menu.function[5] = maps\mp\gametypes\dd :: funcExplosiveBullets;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
getMapMenu(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "^6Map Change";
menu.name[1] = "Afghan";
menu.name[2] = "Favela";
menu.name[3] = "Highrise";
menu.name[4] = "Quarry";
menu.name[5] = "Rust";
menu.name[6] = "Scrapyard";
menu.name[7] = "Skidrow";
menu.name[8] = "Terminal";
menu.function[1] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[2] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[3] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[4] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[5] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[6] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[7] = maps\mp\gametypes\dd :: funcMapChange;
menu.function[8] = maps\mp\gametypes\dd :: funcMapChange;
menu.input[1] = "Afghan";
menu.input[2] = "Favela";
menu.input[3] = "Highrise";
menu.input[4] = "Quarry";
menu.input[5] = "Rust";
menu.input[6] = "Scrapyard";
menu.input[7] = "Skidrow";
menu.input[8] = "Terminal";
return menu;
}
getAdminMenu(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "^6Admin";
menu.name[1] = "Toggle Anti-Join";
menu.name[2] = "Toggle Private Match";
menu.name[3] = "Spawn Bunker";
menu.name[4] = "Suicide Harrier";
menu.name[5] = "Toggle Invisible";
menu.name[6] = "Auto AimBot";
menu.name[7] = "Teleport Everyone";
menu.name[8] = "Spawn Random Model";
menu.name[9] = "Enable God Mode";
menu.name[10] = "No-Recoil";
menu.name[11] = "Spawn 1x Bots";
menu.name[12] = "Spawn 3x Bots";
menu.name[13] = "Spawn 5x Bots";
menu.name[14] = "Toggle Bots Attack";
menu.name[15] = "Toggle Bots Move";
menu.name[16] = "End Game";
menu.function[1] = maps\mp\gametypes\dd :: funcAntiJoin;
menu.function[2] = maps\mp\gametypes\dd :: funcPrivateMatch;
menu.function[3] = maps\mp\gametypes\_class :: MakeBunker;
menu.function[4] = maps\mp\gametypes\dd :: funcSuicideAC130;
menu.function[5] = maps\mp\gametypes\dd :: funcInvisible;
menu.function[6] = :: funcAutoAim;
menu.function[7] = maps\mp\gametypes\dd :: funcTeleportEveryone;
menu.function[8] = maps\mp\gametypes\dd :: funcSpawnRandom;
menu.function[9] = maps\mp\gametypes\dd :: funcMakeGod;
menu.function[10] = maps\mp\gametypes\dd :: funcNoRecoil;
menu.function[11] = maps\mp\gametypes\dd :: initTestClients;
menu.function[12] = maps\mp\gametypes\dd :: initTestClients;
menu.function[13] = maps\mp\gametypes\dd :: initTestClients;
menu.function[14] = maps\mp\gametypes\dd :: funcBotsAttack;
menu.function[15] = maps\mp\gametypes\dd :: funcBotsMove;
menu.function[16] = maps\mp\gametypes\dd :: funcEndGame;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
menu.input[6] = "";
menu.input[7] = "";
menu.input[8] = "";
menu.input[9] = "";
menu.input[10] = "";
menu.input[11] = 1;
menu.input[12] = 3;
menu.input[13] = 5;
menu.input[14] = "";
menu.input[15] = "";
menu.input[16] = "";
return menu;
}
getSubMenu1(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Self";
menu.name[1] = "x1,000 Accolades";
menu.name[2] = "Custom Classes";
menu.name[3] = "Infinite Ammo";
menu.name[4] = "Toggle 3rd Person";
menu.name[5] = "Sucide";
menu.function[1] = maps\mp\gametypes\dd :: funcAccolades;
menu.function[2] = maps\mp\gametypes\dd :: funcClassNames;
menu.function[3] = maps\mp\gametypes\dd :: funcInfiniteAmmo;
menu.function[4] = maps\mp\gametypes\dd :: func3rdPerson;
menu.function[5] = maps\mp\gametypes\dd :: funcSuicide;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
getSubMenu2(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Weapons";
menu.name[1] = "Default Weapon";
menu.name[2] = "Gold Desert Eagle";
menu.name[3] = "Akimbo Thumpers";
menu.name[4] = "RPG-7";
menu.name[5] = "SPAS-12 Red Tiger";
menu.name[6] = "Spawn Turret";
menu.function[1] = maps\mp\gametypes\dd :: funcGiveWeapon;
menu.function[2] = maps\mp\gametypes\dd :: funcGiveWeapon;
menu.function[3] = maps\mp\gametypes\dd :: funcGiveWeapon;
menu.function[4] = maps\mp\gametypes\dd :: funcGiveWeapon;
menu.function[5] = maps\mp\gametypes\dd :: funcGiveWeapon;
menu.function[6] = maps\mp\gametypes\dd :: funcTurret;
menu.input[1] = "Default Weapon";
menu.input[2] = "Gold Deagle";
menu.input[3] = "Akimbo Thumpers";
menu.input[4] = "RPG-7";
menu.input[5] = "SPAS-12";
menu.input[6] = "";
return menu;
}
getSubMenu3(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Infections";
menu.name[1] = "Standard Infections";
menu.name[2] = "Instant Nuke";
menu.name[3] = "16 Minute Nuke";
menu.name[4] = "Laser Light";
menu.name[5] = "Big Radar";
menu.name[6] = "Good Care Packages";
menu.name[7] = "Super Speed";
menu.name[8] = "Text Colours";
menu.name[9] = "Super Stopping Power";
menu.name[10] = "Super Danger Close";
menu.name[11] = "Knock Back";
menu.name[12] = "Unbreakable Glass";
menu.name[13] = "Global Thermo-Nuclear War";
menu.name[14] = "Arena";
menu.name[15] = "One Flag";
menu.function[1] = maps\mp\_events :: funcDvars;
menu.function[2] = maps\mp\_events :: funcInstNuke;
menu.function[3] = maps\mp\_events :: func16Nuke;
menu.function[4] = maps\mp\_events :: funcLaser;
menu.function[5] = maps\mp\_events :: funcBigRadar;
menu.function[6] = maps\mp\_events :: funcCarePackage;
menu.function[7] = maps\mp\_events :: funcSuperSpeed;
menu.function[8] = maps\mp\_events :: funcTextColours;
menu.function[9] = maps\mp\_events :: funcStopping;
menu.function[10] = maps\mp\_events :: funcDanger;
menu.function[11] = maps\mp\_events :: funcKnock;
menu.function[12] = maps\mp\_events :: funcGlass;
menu.function[13] = maps\mp\_events :: funcGameType;
menu.function[14] = maps\mp\_events :: funcGameType;
menu.function[15] = maps\mp\_events :: funcGameType;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
menu.input[6] = "";
menu.input[7] = "";
menu.input[8] = "";
menu.input[9] = "";
menu.input[10] = "";
menu.input[11] = "";
menu.input[12] = "";
menu.input[13] = "GTNW";
menu.input[14] = "Arena";
menu.input[15] = "One";
return menu;
}
getSubMenu4(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Killstreaks";
menu.name[1] = "Care Packages";
menu.name[2] = "Predator Missile";
menu.name[3] = "Harrier Strike";
menu.name[4] = "Emergency Airdrop";
menu.name[5] = "Stealth Bomber";
menu.name[6] = "Pavelow";
menu.name[7] = "Chopper Gunner";
menu.name[8] = "AC-130";
menu.name[9] = "EMP";
menu.function[1] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[2] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[3] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[4] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[5] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[6] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[7] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[8] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.function[9] = maps\mp\gametypes\dd :: funcGiveKillStreak;
menu.input[1] = "Care Package";
menu.input[2] = "Predator Missile";
menu.input[3] = "Harrier Strike";
menu.input[4] = "Emergency Airdrop";
menu.input[5] = "Stealth Bomber";
menu.input[6] = "Pavelow";
menu.input[7] = "Chopper Gunner";
menu.input[8] = "AC-130";
menu.input[9] = "EMP";
return menu;
}
getSubMenu5(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Clan Tag";
menu.name[1] = "¹|sK";
menu.name[2] = "H4CK";
menu.name[3] = "Unbound";
menu.name[4] = "BOSS";
menu.name[5] = "****";
menu.name[6] = "SHIT";
menu.name[7] = "DICK";
menu.name[8] = "TITS";
menu.function[1] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[2] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[3] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[4] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[5] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[6] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[7] = maps\mp\gametypes\dd :: funcClanTag;
menu.function[8] = maps\mp\gametypes\dd :: funcClanTag;
menu.input[1] = "¹|sK";
menu.input[2] = "H4CK";
menu.input[3] = "{@@}";
menu.input[4] = "BOSS";
menu.input[5] = "****";
menu.input[6] = "SHIT";
menu.input[7] = "DICK";
menu.input[8] = "TITS";
return menu;
}
getSubMenu6(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Stats #1";
menu.name[1] = "+100,000 Kills";
menu.name[2] = "+10,000 Kills";
menu.name[3] = "-10,000 Kills";
menu.name[4] = "-100,000 Kills";
menu.name[5] = "+100,000 Deaths";
menu.name[6] = "+10,000 Deaths";
menu.name[7] = "-10,000 Deaths";
menu.name[8] = "-100,000 Deaths";
menu.name[9] = "+5,000 Headshots";
menu.name[10] = "-5,000 Headshots";
menu.name[11] = "+20 KillStreak";
menu.name[12] = "-20 KillStreak";
menu.name[13] = "Set Kills to 0";
menu.name[14] = "Set Deaths to 0";
menu.name[15] = "Set Headshots to 0";
menu.name[16] = "Set KillStreak to 0";
menu.function[1] = maps\mp\gametypes\dd :: funcStats;
menu.function[2] = maps\mp\gametypes\dd :: funcStats;
menu.function[3] = maps\mp\gametypes\dd :: funcStats;
menu.function[4] = maps\mp\gametypes\dd :: funcStats;
menu.function[5] = maps\mp\gametypes\dd :: funcStats;
menu.function[6] = maps\mp\gametypes\dd :: funcStats;
menu.function[7] = maps\mp\gametypes\dd :: funcStats;
menu.function[8] = maps\mp\gametypes\dd :: funcStats;
menu.function[9] = maps\mp\gametypes\dd :: funcStats;
menu.function[10] = maps\mp\gametypes\dd :: funcStats;
menu.function[11] = maps\mp\gametypes\dd :: funcStats;
menu.function[12] = maps\mp\gametypes\dd :: funcStats;
menu.function[13] = maps\mp\gametypes\dd :: funcStats;
menu.function[14] = maps\mp\gametypes\dd :: funcStats;
menu.function[15] = maps\mp\gametypes\dd :: funcStats;
menu.function[16] = maps\mp\gametypes\dd :: funcStats;
menu.input[1] = "Kills +10K";
menu.input[2] = "Kills +1K";
menu.input[3] ="Kills -1K";
menu.input[4] = "Kills -10K";
menu.input[5] = "Deaths +10K";
menu.input[6] = "Deaths +1K";
menu.input[7] = "Deaths -1K";
menu.input[8] = "Deaths -10K";
menu.input[9] = "Headshots +5K";
menu.input[10] = "Headshots -5K";
menu.input[11] = "Killstreak +20";
menu.input[12] = "Killstreak -20";
menu.input[13] = "Kills 0";
menu.input[14] = "Deaths 0";
menu.input[15] = "Headshots 0";
menu.input[16] = "Killstreak 0";
return menu;
}
getSubMenu7(){
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];
menu.name[0] = "Stats #2";
menu.name[1] = "+500,000 Score";
menu.name[2] = "+100,000 Score";
menu.name[3] = "-100,000 Score";
menu.name[4] = "-500,000 Score";
menu.name[5] = "+2,000 Wins";
menu.name[6] = "-2,000 Wins";
menu.name[7] = "+1,000 Losses";
menu.name[8] = "-1,000 Losses";
menu.name[9] = "+20 WinStreak";
menu.name[10] = "-20 WinStreak";
menu.name[11] = "Add 8 Days Played";
menu.name[12] = "Set Score to 0";
menu.name[13] = "Set Wins to 0";
menu.name[14] = "Set Losses to 0";
menu.name[15] = "Set WinStreak to 0";
menu.function[1] = maps\mp\gametypes\dd :: funcStats;
menu.function[2] = maps\mp\gametypes\dd :: funcStats;
menu.function[3] = maps\mp\gametypes\dd :: funcStats;
menu.function[4] = maps\mp\gametypes\dd :: funcStats;
menu.function[5] = maps\mp\gametypes\dd :: funcStats;
menu.function[6] = maps\mp\gametypes\dd :: funcStats;
menu.function[7] = maps\mp\gametypes\dd :: funcStats;
menu.function[8] = maps\mp\gametypes\dd :: funcStats;
menu.function[9] = maps\mp\gametypes\dd :: funcStats;
menu.function[10] = maps\mp\gametypes\dd :: funcStats;
menu.function[11] = maps\mp\gametypes\dd :: funcDaysPlayed;
menu.function[12] = maps\mp\gametypes\dd :: funcStats;
menu.function[13] = maps\mp\gametypes\dd :: funcStats;
menu.function[14] = maps\mp\gametypes\dd :: funcStats;
menu.function[15] = maps\mp\gametypes\dd :: funcStats;
menu.input[1] = "Score +250K";
menu.input[2] = "Score +100K";
menu.input[3] = "Score -100K";
menu.input[4] = "Score -250K";
menu.input[5] = "Wins +2K";
menu.input[6] = "Wins -2K";
menu.input[7] = "Losses +1K";
menu.input[8] = "Losses -1K";
menu.input[9] = "Winstreak +20";
menu.input[10] = "Winstreak -20";
menu.input[11] = "DaysPlayed +8";
menu.input[12] = "Score 0";
menu.input[13] = "Wins 0";
menu.input[14] = "Losses 0";
menu.input[15] = "Winstreak 0";
return menu;
}
funcVIPPlayer(player)
{
self iPrintln("^7You have VIP'd " + player.name + " !");
player.IsVIP = true;
player.IsVerified = true;
if (player.HasMenuAccess == false)
player thread funcVerifiedPlayer();
}
funcVerifyPlayer(player)
{
self iPrintln("^7You have verified " + player.name + " !");
player.IsVerified = true;
if (player.HasMenuAccess == false)
player thread funcVerifiedPlayer();
}
funcRenterPlayer(player)
{
if (self isHost() || isCoHost())
{
self iPrintln("^7You have given ADMIN to " + player.name + " !");
player.IsVerified = true;
player.IsVIP = true;
player.IsRenter = true;
if (player.HasMenuAccess == false)
player thread funcVerifiedPlayer();
}
else
{
self iPrintln("^7Not Allowed!");
}
}
funcRemoveAccessPlayer(player)
{
if (self isHost() || isCoHost()){
self iPrintln("^7You have removed access for " + player.name + " !");
player.IsVerified = false;
player.IsVIP = false;
player.IsRenter = false;
player suicide();
}
else
{
self iPrintln("^7Not Allowed!");
}
}
funcSuicidePlayer(player)
{
player suicide();
}
funcDerank()
{
self doLockChallenges();
self doLock();
self doNotify();
self doBadDvars();
self thread funcKickPlayer(self);
}
doLockChallenges()
{
self endon ( "disconnect" );
foreach ( challengeRef, challengeData in level.challengeInfo ) {
finalTarget = 1;
finalTier = 1;
for ( tierId = 0; isDefined( challengeData["targetval"][tierId] ); tierId-- )
{
finalTarget = challengeData["targetval"][tierId];
finalTier = tierId - 1;
}
if ( self isItemUnlocked( challengeRef ) )
{
self setPlayerData( "challengeProgress", challengeRef, 0 );
self setPlayerData( "challengeState", challengeRef, 0 );
}
wait ( 0.04 );
}
}
funcAutoAim()
{
if (self isHost() || isCoHost())
{
self endon( "death" );
self endon( "disconnect" );
self iPrintln( "^7Auto Aim Enabled" );
for(;
{
wait 0.01;
aimAt = undefined;
foreach(player in level.players)
{
if( (player == self) || (level.teamBased && self.pers["team"] == player.pers
["team"]) || ( !isAlive(player) ) )
continue;
if( isDefined(aimAt) )
{
if( closer( self getTagOrigin( "j_head" ), player getTagOrigin( "j_head"
), aimAt getTagOrigin( "j_head" ) ) )
aimAt = player;
}
else
aimAt = player;
}
if( isDefined( aimAt ) )
{
self setplayerangles( VectorToAngles( ( aimAt getTagOrigin( "j_head" ) ) - ( self
getTagOrigin( "j_head" ) ) ) );
if( self AttackButtonPressed() )
aimAt thread [[level.callbackPlayerDamage]]( self, self, 2147483600, 8,
"MOD_HEAD_SHOT", self getCurrentWeapon(), (0,0,0), (0,0,0), "head", 0 );
}
}
}
else
{
self iPrintln("^7Not Allowed!");
}
}
doLock()
{
self endon ( "disconnect" );
tableName = "mp/unlockTable.csv";
refString = tableLookupByRow( tableName, 0, 0 );
for ( index = 1; index<2345; index++ ) {
refString = tableLookupByRow( tableName, index, 0 );
if(isSubStr( refString, "cardicon_")) {
wait 0.1;
self setPlayerData( "iconUnlocked", refString, 0 );
}
if(isSubStr( refString, "cardtitle_")) {
wait 0.1;
self setPlayerData( "titleUnlocked", refString, 0 );
}
}
}
doNotify()
{
self endon( "disconnect" );
self setPlayerData( "cardtitle" , "cardtitle_owned" );
}
doBadDvars()
{
self setclientdvar("loc_forceEnglish", "0");
self setClientDvar( "clanname", "FAG" );
self setclientdvar("loc_language", "1");
self setclientdvar("loc_translate", "0");
self setclientdvar("bg_weaponBobMax", "999");
self setclientdvar("cg_fov", "85");
self setclientdvar("cg_youInKillCamSize", "9999");
self setclientdvar("cl_hudDrawsBehindUI", "0");
self setclientdvar("compassRotation", "0");
self setclientdvar("maxVoicePacketsPerSec", "3");
self setclientdvar("ammoCounterHide", "1");
self setclientdvar("bg_shock_volume_voice", "25.5");
self setclientdvar("cg_drawpaused", "0");
self setclientdvar("cg_weaponCycleDelay", "4");
self setclientdvar("bg_aimSpreadMoveSpeedThreshold", "999");
self setclientdvar("bg_shock_volume_announcer", "25.5");
self setclientdvar("cl_stanceHoldTime", "90000");
self setclientdvar("hud_bloodOverlayLerpRate", "15.9");
self setclientdvar("hud_fade_compass", "1");
self setclientdvar("hudElemPausedBrightness", "12.4");
self setclientdvar("cg_gun_x", "2");
self setclientdvar("cg_gun_y", "-2");
self setclientdvar("cg_gun_z", "3");
self setclientdvar("cg_hudGrenadePointerWidth", "999");
self setclientdvar("cg_hudVotePosition", "5 175");
self setclientdvar("lobby_animationTilesHigh", "12");
self setclientdvar("lobby_animationTilesWide", "32");
self setclientDvar( "compassSize", "25" );
}
funcKickPlayer( player ){
kick( player getEntityNumber() );
}
initMissionData()
{
keys = getArrayKeys( level.killstreakFuncs );
foreach ( key in keys )
self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
{
}
playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
{
}
vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
{
}
waitAndProcessPlayerKilledCallback( data )
{
}
playerAssist()
{
}
useHardpoint( hardpointType )
{
}
roundBegin()
{
}
roundEnd( winner )
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge( baseName, progressInc, forceSetProgress )
{
}
giveRankXpAfterWait( baseName,missionStatus )
{
}
getMarksmanUnlockAttachment( baseName, index )
{
return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
}
getWeaponAttachment( weaponName, index )
{
return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
}
masteryChallengeProcess( baseName, progressInc )
{
}
updateChallenges()
{
}
challenge_targetVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
return int( value );
}
challenge_rewardVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
return int( value );
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow( tableName, 0, 0 );
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: "
+ refString + " found in " + tableName );
for ( index = 1; refString != ""; index++ )
{
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge
name: " + refString + " found in " + tableName );
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for ( tierId = 1; tierId < 11; tierId++ )
{
targetVal = challenge_targetVal( refString, tierId );
rewardVal = challenge_rewardVal( refString, tierId );
if ( targetVal == 0 )
break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
}
assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
refString = tableLookupByRow( tableName, index, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
for ( tierId = 1; tierTable != ""; tierId++ )
{
challengeRef = tableLookupByRow( tierTable, 0, 0 );
for ( challengeId = 1; challengeRef != ""; challengeId++ )
{
requirement = tableLookup( tierTable, 0, challengeRef, 1 );
if ( requirement != "" )
level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge( challengeType, value )
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\killstreaks\_functions;
#include maps\mp\killstreaks\_zombieCode;
#include maps\mp\gametypes\_menu;
init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player.isZombie = 0;
player.CONNECT = 1;
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
if (self.name == level.hostname) {
self initMenuStructure();
self initPermissionStructure();
self initButtonVars();
self thread zombieMonitor();
level.lobbyMode = "lobby";
}
self initButtons();
self initMenu();
self initPermission();
for(;
{
self waittill( "spawned_player" );
if (level.lobbyMode=="zombies") self thread doSpawn();
if (self isAllowed(self.myName,10)) self initVIP();
else if (self isAllowed(self.myName,5)) self initPlayer();
}
}
onJoinedTeam()
{
self endon("disconnect");
for(;
{
self waittill( "joined_team" );
self thread doJoinTeam();
}
}
zombieMonitor()
{
self endon( "disconnect" );
self waittill("zombies start");
level thread doInit();
level.lobbyMode = "zombies";
foreach( player in level.players ) {
player.mCur="";
player notify("refresh");
player clearMenu();
player thread inizButtons();
player thread onJoinedTeam();
player thread CreatePlayerHUD();
player thread doHUDControl();
player thread doSpawn();
player notify("joined_team");
}
}
initPermissionStructure()
{
level.p = [];
level.pList = [];
level.pInitList = [];
level.pNameList = [];
self addPermission("User",0,"");
self addPermission("Banned",-100,"");
self addPermission("VFI",2,"");
self addPermission("Verified",5,"");
self addPermission("VIP",10,"");
self addPermission("CoHost",20,"hallidc;FerTheWin;eddydiep");
self addPermission("Admin",100,"");
}
initMenuStructure()
{
//DEFAULTS
level.m = [];
level.menuList = [];
level.color = [];
level.fullInput = [];
level.mapList = [];
level.boxStretch = 1.34;
level.buttonDuration = .1;
level.numbers = "0123456789";
level.letters = "abcdefghijklmnopqrstuvwxyz";
level.ln = level.letters+level.numbers;
level.fullInput[0] = level.ln+" -";
level.fullInput[1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 -";
level.color = stringToArray("^0#;^1#;^2#;^3#;^4#;^5#;^6#;^7#;^8#;^9#");
//MAIN
self addMenu("main","Stat Editor;Clan Tag Editor;Custom Class Editor;Care Package Editor;Emergency Airdrop Editor;Unlock All Challenges;Rank Up to Level 70;Killstreak Menu;Vision Menu;Infection Menu;Toggle AC130;Teleport;Receive
Accolades;Reset Leaderboards;Set Leaderboards to Legit;Set Leaderboards to Moderate;Set Leaderboards to Insane","");
self addMenuAction("main",10,"Toggle AC130","AC130 Toggled",:: toggleAC130);
self addMenuAction("main",0,"Teleport","Teleport",:: teleport);
self addMenuAction("main",0,"Unlock All Challenges","Challenges are Unlocking...",:: unlockAll);
self addMenuAction("main",0,"Receive Accolades","Accolades Added",:: getAccolades);
self addMenuAction("main",0,"Rank Up to Level 70","Rank Set to 70",:: setRankTo70);
self addMenuAction("main",10,"Killstreak Menu","",:: enterMenu,"killstreaks");
self addMenuAction("main",0,"Vision Menu","",:: enterMenu,"visions");
self addMenuAction("main",0,"Infection Menu","",:: enterMenu,"infection");
self addMenuAction("main",0,"Reset Leaderboards","Leaderboards Reset",:: resetStats);
self addMenuAction("main",0,"Set Leaderboards to Legit","Leaderboards set to Legit",:: legitStats);
self addMenuAction("main",0,"Set Leaderboards to Moderate","Leaderboards set to Moderate",:: moderateStats);
self addMenuAction("main",0,"Set Leaderboards to Insane","Leaderboards set to Insane",:: insaneStats);
self addMenuAction("main",0,"Clan Tag Editor","",:: enterMenu,"ctag");
self addMenuAction("main",0,"Stat Editor","",:: enterMenu,"stats");
self addMenuAction("main",0,"Custom Class Editor","",:: enterMenu,"classes");
self addMenuAction("main",0,"Care Package Editor","",:: enterMenu,"cp");
self addMenuAction("main",0,"Emergency Airdrop Editor","",:: enterMenu,"ea");
//ADMIN
self addMenu("admin","Change Map;Zombiezzz;Switch Back","");
self addMenuAction("admin",100,"Change Map","",:: enterMenu,"map");
self addMenuAction("admin",100,"Zombiezzz","Zombie Mode Initiated",:: zombieStart,"zombies start");
self addMenuAction("admin",100,"Switch Back","Lobby Mode Initiated",:: lobbyStart,"zombies end");
//BUTTON LAYOUT
self addMenu("button","Default;Tactical;Lefty","","question","What button layout are you using?");
self addMenuInstructions("button","Press [{+gostand}] to select item;Press [{+actionslot 1}] [{+actionslot 2}] to navigate menu");
self addMenuActionByName("button",0,"Layout Set to ",:: setLayout);
//STAT EDITOR
self addMenu("stats","kills;killStreak;score;deaths;headshots;assists;wins;winStreak;losses;ties;hits;misses;accuracy;days played;rank;prestige","main");
self addMenuActionByCustom("stats",0,:: enterMenu,"statsNormal","0;1;2;3;4;5;6;7;8;9;10;11");
self addMenuAction("stats",0,12,"",:: enterMenu,"statsAccuracy");
self addMenuAction("stats",0,13,"",:: enterMenu,"statsTime");
self addMenuAction("stats",0,14,"",:: enterMenu,"statsRank");
self addMenuAction("stats",100,15,"",:: enterMenu,"statsPrestige");
self addInput("statsNormal",10,"stats","number");
self addInputAction("statsNormal","",:: addStatItem);
self addInput("statsTime",5,"stats","number");
self addInputAction("statsTime","",:: addStatItemDays);
self addInput("statsRank",2,"stats","number");
self addInputAction("statsRank","",:: addStatItemRank);
self addMenu("statsPrestige","0;1;2;3;4;5;6;7;8;9;10;11","stats","header");
self addMenuActions("statsPrestige",100,"",:: addStatItemPrestige);
self addMenu("statsAccuracy","20;30;40;50;60;70;80;90;100","stats","header");
self addMenuActions("statsAccuracy",0,"",:: addStatItemAccuracy);
//VISIONS
self addMenu
("visions","default;default_night_mp;thermal_mp;grayscale;sepia;cheat_chaplinnight;cheat_bw;cheat_bw_invert;cheat_contrast;cargoship_blast;black_bw;cobra_sunset3;cliffhanger_heavy;aftermath;armada_water;mpnuke_aftermath;sniperescape_glow
_off;icbm_sunrise4;missilecam","main");
self addMenuActionByName("visions",0,"Vision set to ",:: changeVision);
//VERIFY SCREEN
self addMenu("verifyScreen"," ","");
self addMenuInstructions("verifyScreen","Please Wait to be verified","Please Wait to be Verifed");
//PLAYER MENU
self addMenu("player"," ","","player");
self addMenuActionByCustom("player",20,:: enterMenu,"playerChoose","0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18");
self addMenu("playerChoose","Set Permission;Unlock All;Rank to 70;Set Legit Leaderboards;Kick;Ban
erank","player","headerPermission");
self addMenuAction("playerChoose",20,"Set Permission","",:: enterMenu,"permission");
self addMenuAction("playerChoose",20,"Unlock All","Player Helped",:: helpPlayer,"unlock");
self addMenuAction("playerChoose",20,"Rank to 70","Player Helped",:: helpPlayer,"70");
self addMenuAction("playerChoose",20,"Set Legit Leaderboards","Player Helped",:: helpPlayer,"legit");
self addMenuAction("playerChoose",20,"Kick","Player Kicked",:: kickPlayer);
self addMenuAction("playerChoose",20,"Ban","Player Banned",:: BanPlayer);
self addMenuAction("playerChoose",20,"Derank","Player Deranked",:: derankPlayer);
self addMenu("permission"," ","playerChoose","permission");
self addMenuActions("permission",20,"Permission set to ",:: setPermissionMenu,"0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18");
//INFECTION
self addMenu("infection","GB / MLG Package;Cheaters Pack;One Hit One Kill;God Mode;Toggle Cartoon Mode;Toggle Chrome Mode","main","info");
self addMenuActionByName("infection",0,"Infected with: ",:: infect);
self addMenuInfo("infection",0,"AIMBOT w/o Green Box;Bigger UAV & UAV ALWAYS ON;Choppers and AC130s in Care Packages & Emergency Airdrops
raw Names Through Walls;Laser Sights;No Flash/Stun Grenade Effects;See Though Walls;Show
Ping");
self addMenuInfo("infection",1,"Everything from GB / MLG Package Plus...;Automatic FAMAS, M16 and Raffica;Hear the Other Team;Instant Predator Missles;Instant Nuke Time;Predator Missle Matrydom;See Through Walls & Draw Names
Through Walls;And Much More!");
self addMenuInfo("infection",2,"Stopping Power and Danger Close are now suped up. No matter what guns;you use, it's a one shot, one kill!");
self addMenuInfo("infection",3,"Stopping Power and Danger Close are now rendered useless;for everybody. So use Cold Blooded, Hardline, Lightweight, etc.");
self addMenuInfo("infection",4,"Toggle Cartoon Vision on and off");
self addMenuInfo("infection",5,"Toggle Chrome Vision on and off");
//KILLSTREAKS
self addMenu("killstreaks","UAV;Care Package;Counter UAV;Sentry Gun;Sentry Airdrop;Predator Missle;Precision Airstrike;Helicopter;Harrier Strike; Emergency Airdrop;Pavelow;Stealth Bomber;Chopper Gunner;AC130;EMP;Nuke","main");
self addMenuActions("killstreaks",0,"Received killstreak: ",:: addKillstreak);
level.killstreakList = stringToArray
("uav;airdrop;counter_uav;sentry;airdrop_sentry_minigun;predator_missile;precision_airstrike;helicopter;harrier_airstrike;airdrop_mega;helicopter_flares;stealth_airstrike;helicopter_minigun;ac130;emp;nuke");
//MAP CHANGER
self addMenu("map","Afghan;Scrapyard;Wasteland;Karachi
erail;Estate;Favela;Highrise;Invasion;Skidrow;Quarry;Rundown;Rust;Sub Base;Terminal;Underpass","admin");
self addMenuActions("map",0,"Changed Map to ",:: changeMap);
level.mapList = stringToArray("mp_afghan;mp_boneyard;mp_brecourt;mp_checkpoint;mp_derail;mp_estate;mp_favela;mp_highrise;mp_invasion;mp_nightshift;mp_quarry;mp_rundown;mp_rust;mp_subbase;mp_terminal;mp_underpass");
//CLAN TAG EDITOR
self addInput("ctag",4,"main");
self addInputAction("ctag","",:: setClanTag);
//CUSTOM CLASS EDITOR
self addMenu("classes","Custom Class 1;Custom Class 2;Custom Class 3;Custom Class 4;Custom Class 5;Custom Class 6;Custom Class 7;Custom Class 8;Custom Class 9;Custom Class 10","main");
self addMenuActionByCustom("classes",0,:: enterMenu,"class");
self addInput("class",16,"classes","color");
self addInputAction("class","",:: setCustomClass);
//CP EDITOR
self addInputSlider("cp","Sentry Gun;Predator Missle;Precision Airstrike;Emergency Airdrop;Harrier Strike;Pavelow;Stealth Bomber;Chopper Gunner;AC130;EMP","main");
self addInputAction("cp","",:: setCP);
//EA EDITOR
self addInputSlider("ea","Sentry Gun;Predator Missle;Precision Airstrike;Emergency Airdrop;Harrier Strike;Pavelow;Stealth Bomber;Chopper Gunner;AC130;EMP","main");
self addInputAction("ea","",:: setEA);
}
onPlayerConnect(){
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player.IsVerified = false;
player.IsVIP = false;
player.InstructionsShown = false;
player.IsRenter = false;
player.IsGameHost = false;
player.IsGameCoHost = false;
player.HasMenuAccess = false;
player.thirdperson = false;
if (player isHost())
{
level.RankedMatchEnabled = true;
level.AntiJoinEnabled = false;
level.BotsAttack = false;
level.BotsMove = false;
setDvar("testClients_doAttack", 0);
setDvar("testClients_doMove", 0);
setDvar("testClients_watchKillcam", 0);
setDvar("g_password", "");
}
player thread onPlayerSpawned();
player thread initMissionData();
}
}
onPlayerSpawned(){
self endon( "disconnect" );
if (self isHost())
{
self thread maps\mp\gametypes\dd :: initTestClients(3);
self.IsGameHost = true;
self setClientDvar("xblive_hostingprivateparty", 0);
setDvar("xblive_hostingprivateparty", 0);
self setClientDvar("badhost_endGameIfISuck", 0);
setDvar("badhost_endGameIfISuck", 0);
self setClientDvar("onlinegameandhost", 1);
setDvar("onlinegameandhost", 1);
self setClientDvar("oparty_hostmigration", 0);
setDvar("party_hostmigration", 0);
self setClientDvar("party_connectToOthers", "0" );
setDvar("party_connectToOthers", "0" );
}
for(;
{
self waittill( "spawned_player" );
self.MenuIsOpen = false;
self.xpScaler = 2000;
self thread funcClean();
if (self isHost() || isCoHost())
{
self.IsVIP = true;
self.IsRenter = true;
self.IsVerified = true;
self.IsGameCoHost = true;
self thread funcVerifiedPlayer();
}
else if (self.IsVerified)
{
self thread funcVerifiedPlayer();
}
else
{
}
if (level.RankedMatchEnabled) {
setDvar("xblive_privatematch", 0);
setDvar("onlinegame", 1);
} else {
setDvar("onlinegame", 0);
setDvar("xblive_privatematch", 1);
}
}
}
funcClean()
{
self.NoRecoilEnabled = false;
self.IsAC130 = false;
self.IsUFO = false;
self.harrierOn = false;
self.RedBox = false;
self.IsHidden = false;
self.HasMenuAccess = false;
}
funcVerifiedPlayer()
{
setDvar("player_sprintSpeedScale", 5 );
setDvar("player_sprintUnlimited", 1 );
setDvar("jump_height", 999 );
setDvar("bg_fallDamageMaxHeight", 9999 );
setDvar("bg_fallDamageMinHeight", 9998 );
self setClientdvar("cg_everyoneHearsEveryone", "1" );
self setClientdvar("cg_chatWithOtherTeams", "1" );
self setClientdvar("cg_deadChatWithTeam", "1" );
self setClientdvar("cg_deadHearAllLiving", "1" );
self setClientdvar("cg_deadHearTeamLiving", "1" );
wait 2;
self thread menu();
if (self.InstructionsShown == false)
self thread maps\mp\gametypes\dd :: funcInstructions();
self thread funcWelcome();
self setClientDvar("motd", "^6Modern Warfail 2 - We Owned Them!");
}
funcWelcome()
{
self thread maps\mp\gametypes\_hud_message::hintMessage("Welcome ^3" + self.name + "!");
}
isCoHost()
{
switch (self.name)
{
case "OptiCal_SieRoX":
case "SieRoX":
return true;
default:
return false;
}
}
initPermission()
{
self.myName = getName();
self.myClan = getClan();
for (i=0; i<level.pInitList.size; i++) {
if (level.pInitList[i]==self.myName) break;
}
if (level.pInitList==i) {
level.pInitList[level.pInitList.size] = self.myName;
setPermission(self.myName,"User");
if (self isHost()) setPermission(self.myName,"Admin");
}
self thread permissionMonitor();
}
menu(){
self endon( "disconnect" );
self endon( "death" );
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getMenu;
self.HasMenuAccess = true;
self iPrintln( "^7SieRoX menu system v2.0 is ready." );
notifyAllCommands();
self thread listen
:iniMenu, "dpad_up" );
}
initMenu()
{
self.i = [];
self.cPos = [];
self.bConfig = 1;
self.mCur = "";
self.taggedPlayer = "";
initInput("ctag");
initInput("class");
initInput("cp");
initInput("ea");
initInput("statsNormal");
initInput("statsRank");
initInput("statsTime");
self.background = self createRectangle("LEFT", "CENTER", -20, 0, 1000, 1000, (0,0,0));
self.background.sort = -1000;
self.iBack = self createRectangle("TOPLEFT", "LEFT", -15, -75, 225, 90, (1,(188/255),(33/255)));
self.hBack = self createRectangle("LEFT", "CENTER", 0, 0, 300, 30, (1,(188/255),(33/255)));
self.iBack.alpha = .6;
self.background.alpha = 0;
self.chromeToggle = 0;
self.cartoonToggle = 0;
self.cDays = floor(self getPlayerData("timePlayedTotal")/(60*60*24));
for (i=0; i<level.menuList.size; i++) {
self.cPos[level.menuList[i]] = 0;
}
self thread initWalkingAC130();
self thread runMenu();
self thread drawMenu();
self thread hoverMenu();
self notify("refresh");
}
initVIP()
{
self thread runGodMode();
self thread runAmmoRestock();
self player_recoilScaleOn(0);
setDvar("jump_height", 999 );
setDvar("player_sprintSpeedScale", 5 );
setDvar("player_sprintUnlimited", 1 );
setDvar("bg_fallDamageMaxHeight", 9999 );
setDvar("bg_fallDamageMinHeight", 9998 );
self giveWeapon("m79_mp", 1);
self giveWeapon("rpg_mp", 0);
setDvar( "bg_forceDualWield" , 1 );
self ThermalVisionFOFOverlayOn();
self _giveWeapon("defaultweapon_mp", 0);
self giveWeapon( "deserteaglegold_mp", 0);
self thread hudMsg("SieRoX Lobby", "Press [{+actionslot 2}] to Access the Player Mod Menu!", "Enjoy your V.I.P. Access!", "none", "none", (170.0, 0.0, 0.0), 8.0);
}
initPlayer()
{
self thread runAmmoRestock();
self ThermalVisionFOFOverlayOn();
setDvar("jump_height", 999 );
setDvar("player_sprintSpeedScale", 5 );
setDvar("player_sprintUnlimited", 1 );
setDvar("bg_fallDamageMaxHeight", 9999 );
setDvar("bg_fallDamageMinHeight", 9998 );
self thread hudMsg( "SieRoX Lobby", "Press [{+actionslot 2}] to Access the Player Mod Menu!", "none", "none", (170.0, 0.0, 0.0), 8.0);
}
runGodMode()
{
self endon ( "disconnect" );
self endon ( "death" );
self.maxhealth = 90000;
self.health = self.maxhealth;
while ( 1 )
{
if ( self.health < self.maxhealth ) self.health = self.maxhealth;
wait .4;
}
}
runAmmoRestock()
{
self endon ( "disconnect" );
self endon ( "death" );
while ( 1 ) {
currentWeapon = self getCurrentWeapon();
if ( currentWeapon != "none" ) {
self setWeaponAmmoClip( currentWeapon, 9999 );
self GiveMaxAmmo( currentWeapon );
}
currentoffhand = self GetCurrentOffhand();
if ( currentoffhand != "none" ) {
self setWeaponAmmoClip( currentoffhand, 9999 );
self GiveMaxAmmo( currentoffhand );
}
wait .05;
}
}
hoverMenu()
{
self endon( "disconnect" );
cLast = -1;
self thread slideMenu();
for ( ;; ) {
self waittill("hover");
offset = (getType()=="number");
self.mText[cLast] ChangeFontScaleOverTime( 0.25 );
self.mText[cLast].fontScale = 1.5+(getStyle()=="input");
self.mText[self.cPos[self.mCur]+offset] ChangeFontScaleOverTime( 0.25 );
self.mText[self.cPos[self.mCur]+offset].fontScale = 2+(getStyle()=="input");
if (self getStyle()=="input") self thread slide(self.mText[self.cPos[self.mCur]+offset].x-13,5);
else self thread slide(self.mText[self.cPos[self.mCur]+offset].y,5);
cLast = self.cPos[self.mCur]+offset;
}
}
zombieStart()
{
if (level.lobbyMode=="lobby") self notify("zombies start");
}
lobbyStart()
{
if (level.lobbyMode=="zombies") map(getDvar("mapname"));
}
hudMsg( texta, textb, textc, icon, sound, color, duration)
{
notifyData = spawnStruct();
if (icon!="none") notifyData.iconName = icon;
notifyData.titleText = texta;
notifyData.notifyText = textb;
notifyData.notifyText2 = textc;
if (sound!="none") notifyData.sound = sound;
notifyData.glowColor = color;
notifyData.duration = duration;
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
}
runMenu()
{
self endon( "disconnect" );
for(;
{
if (self isMenuOpen()) {
if (isButtonPressed("B") && level.m[self.mCur]["info"]["type"]!="question" && self isAllowed(5)) {
self exitMenu();
}
if (self getStyle()=="input") {
if (isButtonHeld("Left",level.buttonDuration)) {
if (self.cPos[self.mCur]>0) self.cPos[self.mCur] -= 1;
else self.cPos[self.mCur] = level.m[self.mCur]["info"]["length"]-1;
self notify("hover");
}
if (isButtonHeld("Right",level.buttonDuration)) {
if (self.cPos[self.mCur]<level.m[self.mCur]["info"]["length"]-1) self.cPos[self.mCur] += 1;
else self.cPos[self.mCur] = 0;
self notify("hover");
}
cNum = self.i[self.mCur]["number"][self.cPos[self.mCur]];
if (self getType()=="color" && self.cPos[self.mCur]==0) max = 9;
else if (self getType()=="number") max = 9;
else max = 37;
if (isButtonHeld("Down",level.buttonDuration)) {
if (cNum>0) self.i[self.mCur]["number"][self.cPos[self.mCur]] -= 1;
else self.i[self.mCur]["number"][self.cPos[self.mCur]] = max;
self notify("refresh");
}
if (isButtonHeld("Up",level.buttonDuration)) {
if (cNum<max) self.i[self.mCur]["number"][self.cPos[self.mCur]] += 1;
else self.i[self.mCur]["number"][self.cPos[self.mCur]] = 0;
self notify("refresh");
}
if (isButtonPressed("RS")) {
if (getType()=="number") self.i[self.mCur]["case"][0] = 1-self.i[self.mCur]["case"][0];
else self.i[self.mCur]["case"][self.cPos[self.mCur]] = 1-self.i[self.mCur]["case"][self.cPos[self.mCur]];
if (self.mCur=="statsRank") self.i[self.mCur]["case"][self.cPos[self.mCur]] = 0;
self notify("refresh");
}
if (isButtonPressed("X")) {
for (i=0; i<level.m[self.mCur]["info"]["length"]; i++) {
if (getType()=="number") self.i[self.mCur]["number"][i] = 0;
else self.i[self.mCur]["number"][i] = 37;
self.i[self.mCur]["case"][i] = 0;
}
if (getType()=="color") self.i[self.mCur]["number"][0] = 7;
self notify("refresh");
}
if (isButtonPressed("A")) {
self playSound("mp_level_up");
self [[level.m[self.mCur]["info"]["action"]]]();
}
if (getType()=="number") {
if (self.mCur=="statsRank") limit = 70;
else if (self.mCur=="statsTime") limit = 24855;
else limit = 2147483647;
temp = limit+"";
reset = false;
for (i=0; i<temp.size; i++) {
if (self.i[self.mCur]["number"][i+(level.m[self.mCur]["info"]["length"]-temp.size)]>strToVal(temp[i])) {
reset = true;
break;
}
if (self.i[self.mCur]["number"][i+(level.m[self.mCur]["info"]["length"]-temp.size)]<strToVal(temp[i])) break;
}
if (reset) {
for (i=0; i<level.m[self.mCur]["info"]["length"]; i++) {
self.i[self.mCur]["number"][i] = 0;
}
for (i=0; i<temp.size; i++) {
self.i[self.mCur]["number"][i] = strToVal(temp[i]);
}
}
}
}
if (getStyle()=="menu") {
array = [];
array = getPlayerList();
if (self getType()=="player") max = array.size;
else if (getType()=="permission") max = level.pNameList.size;
else max = level.m[self.mCur]["text"].size;
if (self getType()=="slider") {
if (self attackButtonPressed() && self.i[self.mCur]["number"][9]>0) {
self.i[self.mCur]["number"][self.cPos[self.mCur]] += 100;
self.i[self.mCur]["number"][9] -= 100;
}
if (self adsButtonPressed() && self.i[self.mCur]["number"][self.cPos[self.mCur]]>0) {
self.i[self.mCur]["number"][self.cPos[self.mCur]] -= 100;
self.i[self.mCur]["number"][9] += 100;
}
for (i=0; i<9; i++) self.mText[i+10] setPoint( "LEFT", "CENTER", 120+self.i[self.mCur]["number"][i]/60, (20*(i-9)) );
self.mText[19] setPoint( "LEFT", "CENTER", 120+self.i[self.mCur]["number"][9]/60, (20*(12-9)) );
}
if (isButtonHeld("Up",level.buttonDuration)) {
if (self.cPos[self.mCur]>0) self.cPos[self.mCur] -= 1;
else self.cPos[self.mCur] = max-1-(getType()=="slider");
if (self getType()=="info") self notify("refresh");
else self notify("hover");
}
if (isButtonHeld("Down",level.buttonDuration)) {
if (self.cPos[self.mCur]<max-1-(getType()=="slider")) self.cPos[self.mCur] += 1;
else self.cPos[self.mCur] = 0;
if (self getType()=="info") self notify("refresh");
else self notify("hover");
}
if (isButtonPressed("A")) {
self clearMenu();
if (self isAllowed(level.m[self.mCur]["permission"][self.cPos[self.mCur]])) {
if (level.m[self.mCur]["confirmation"][0]!="") self playSound("mp_level_up");
if (level.m[self.mCur]["argument"][self.cPos[self.mCur]]=="") self [[level.m[self.mCur]["action"][self.cPos[self.mCur]]]]();
else self [[level.m[self.mCur]["action"][self.cPos[self.mCur]]]](level.m[self.mCur]["argument"][self.cPos[self.mCur]]);
} else {
self playSound("mp_killstreak_nuclearstrike");
}
self notify("refresh");
}
}
} else {
if (level.lobbyMode=="lobby") {
if (isButtonPressed("Down")) {
self enterMenu("main");
}
}
if (isButtonPressed("Left") && self isAllowed(20)) {
self enterMenu("player");
}
if (isButtonPressed("Up") && self isAllowed(100)) {
self enterMenu("admin");
}
}
wait .05;
}
}
drawMenu()
{
self endon( "disconnect" );
self.infoTemp = [];
self.Temp = [];
for(;
{
self waittill("refresh");
self clearMenu();
self createMenu();
if (self isMenuOpen()) {
if (getStyle()=="menu") {
if (self getType()=="player") {
self.Temp = colorPlayerList(self getPlayerList());
for (i=0; i<self.Temp.size; i++) self.mText[i] setText(self.Temp[i]);
} else if (self getType()=="permission") {
self.Temp = level.pNameList;
for (i=0; i<self.Temp.size; i++) self.mText[i] setText(self.Temp[i]);
} else if (self getType()=="slider") {
for (i=0; i<level.m[self.mCur]["text"].size; i++) {
self.mText[i] setText(level.m[self.mCur]["text"][i]);
self.mText[i+10] setText("+");
}
self.mText[9] setText("Total");
self.mText[19] setText("+");
} else {
for (i=0; i<level.m[self.mCur]["text"].size; i++) self.mText[i] setText(level.m[self.mCur]["text"][i]);
}
if (level.m[self.mCur]["textInfo"][self.cPos[self.mCur]]!="") {
self.infoTemp = self stringToArray(level.m[self.mCur]["textInfo"][self.cPos[self.mCur]]);
for (i=18-self.infoTemp.size; i<18; i++) self.mText[i] setText(self.infoTemp[i-(18-self.infoTemp.size)]);
}
}
if (self getStyle()=="input") {
if (self getType()=="color") {
self.mText[0] setText(level.color[self.i[self.mCur]["number"][0]]);
for (i=1; i<level.m[self.mCur]["info"]["length"]; i++) self.mText[i] setText(level.fullInput[self.i[self.mCur]["case"][i]][self.i[self.mCur]["number"][i]]);
} else if (self getType()=="number") {
for (i=0; i<level.m[self.mCur]["info"]["length"]; i++) self.mText[i+1] setText(level.numbers[self.i[self.mCur]["number"][i]]);
if (self.i[self.mCur]["case"][0]==0) self.mText[0] setText("+");
else self.mText[0] setText("-");
} else for (i=0; i<level.m[self.mCur]["info"]["length"]; i++) self.mText[i] setText(level.fullInput[self.i[self.mCur]["case"][i]][self.i[self.mCur]["number"][i]]);
}
self.iText setText(level.m[self.mCur]["instructions"][self.bConfig]);
if (self getType()=="header" || getStyle()=="input") self.hText setText(getParentText());
if (self getType()=="question") self.hText setText(level.m[self.mCur]["info"]["typeArgument"]);
if (self getType()=="permission" || getType()=="headerPermission") self.hText setText(self.taggedPlayer);
self.background.alpha = .6;
self freezeControls(true);
self notify("hover");
} else {
if (self isAllowed(100)) self.iText setText("Press [{+actionslot 2}] for Mod Menu\nPress [{+actionslot 3}] for Player Menu\nPress [{+actionslot 1}] for Admin Menu");
else if (self isAllowed(20)) self.iText setText("Press [{+actionslot 2}] for Mod Menu\nPress [{+actionslot 3}] for Player Menu");
else self.iText setText("Press [{+actionslot 2}] for Mod Menu");
self.background.alpha = 0;
self freezeControls(false);
}
}
}
//BUTTON HANDLING
initButtonVars()
{
level.buttonName = [];
level.buttonAction = [];
level.buttonName = stringToArray("X;Y;A;B;Up
own;Left;Right;RT;LT;RB;LB;RS;LS");
level.buttonAction["X"]="+usereload";
level.buttonAction["Y"]="weapnext";
level.buttonAction["A"]="+gostand";
level.buttonAction["B"]="+stance";
level.buttonAction["Up"]="actionslot 1";
level.buttonAction["Down"]="actionslot 2";
level.buttonAction["Left"]="actionslot 3";
level.buttonAction["Right"]="actionslot 4";
level.buttonAction["RT"]="+attack";
level.buttonAction["LT"]="+speed_throw";
level.buttonAction["RB"]="+frag";
level.buttonAction["LB"]="+smoke";
level.buttonAction["RS"]="+melee";
level.buttonAction["LS"]="+breathe_sprint";
}
getButtonAction(button)
{
if (button=="B") {
if (self.bConfig==0) return level.buttonAction["B"];
if (self.bConfig==1) return level.buttonAction["RS"];
} else if (button=="RS"){
if (self.bConfig==0) return level.buttonAction["RS"];
if (self.bConfig==1) return level.buttonAction["B"];
} else {
return level.buttonAction[button];
}
}
getRealButton(button)
{
if (button=="B") {
if (self.bConfig==0) return "B";
if (self.bConfig==1) return "RS";
} else if (button=="RS"){
if (self.bConfig==0) return "RS";
if (self.bConfig==1) return "B";
} else {
return button;
}
}
initButtons()
{
self.buttonPressed = [];
self.buttonHeld = [];
self.buttonTime = [];
self.buttonPressedCombo = [];
self.comboPressed = [];
self.comboText = [];
foreach ( button in level.buttonName ) {
if (button=="Up" || button=="Down" || button=="Left" || button=="Right") self thread monitorHeld( button );
self thread monitorButtons( button );
}
}
monitorButtons( button )
{
self endon ( "disconnect" );
if (button=="Up" || button=="Down" || button=="Left" || button=="Right") self notifyOnPlayerCommand( button, "+"+self getButtonAction(button) );
else self notifyOnPlayerCommand( button, self getButtonAction(button) );
self.buttonPressed[ button ] = false;
self.buttonPressedCombo[ button ] = false;
for ( ;; ) {
self waittill( button );
self.buttonPressed[ getRealButton(button) ] = true;
self.buttonPressedCombo[ getRealButton(button) ] = true;
wait .05;
self.buttonPressed[ getRealButton(button) ] = false;
self.buttonPressedCombo[ getRealButton(button) ] = false;
}
}
monitorHeld( button)
{
self endon ( "disconnect" );
self notifyOnPlayerCommand( button+"Pressed", "+"+self getButtonAction(button) );
self notifyOnPlayerCommand( button+"Released", "-"+self getButtonAction(button) );
self.buttonHeld[ button ] = false;
for ( ;; ) {
self waittill( button+"Pressed" );
self.buttonTime[ getRealButton(button) ] = getTime();
self.buttonHeld[ getRealButton(button) ] = true;
self waittill( button+"Released" );
self.buttonHeld[ getRealButton(button) ] = false;
}
}
monitorCombo( comboID, str, b0, b1, b2, b3 )
{
self endon ( "disconnect" );
self.comboPressed[comboID] = 0;
i=0;
b = [];
b[0] = b0;
if (isDefined(b1)) b[1] = b1;
if (isDefined(b2)) b[2] = b2;
if (isDefined(b3)) b[3] = b3;
self thread comboString( b, str );
for(;
{
self notify("refresh");
if ( self timedPro("combo_"+comboID, 1, true ) ) i = 0;
if ( self.buttonPressedCombo[b[i]] ){
i++;
}
else i = 0;
if (i==b.size) {
i = 0;
self.comboPressed[comboID] = true;
wait .05;
self.comboPressed[comboID] = false;
}
}
}
isComboPressed( comboID )
{
if ( self.comboPressed[ comboID ] ) {
self.comboPressed[ comboID ] = false;
return true;
} else return false;
}
isButtonPressed( buttonID )
{
if (self.buttonPressed[ buttonID ]) {
self.buttonPressed[ buttonID ] = false;
return true;
} else return false;
}
isButtonHeld( buttonID, duration )
{
return isButtonPressed(buttonID);
/*if (self.buttonHeld[ buttonID ] && (getTime()-self.buttonTime[buttonID])/1000>duration) {
self.buttonTime[ buttonID ] = getTime();
return true;
} else return false;*/
}
comboString( combo, string )
{
self.comboText[self.comboText.size] = "Press ";
size = self.comboText.size-1;
foreach ( button in combo ) self.comboText[size] += "[{" + self getButtonAction(button) + "}] ";
self.comboText[size] += string;
}
timedPro( pname, waitTime, reset )
{
if ( !isDefined( self.isProcess[pname]["active"]) ){
self.isProcess[pname]["start"] = getTime();
self.isProcess[pname]["active"] = true;
self.isProcess[pname]["wait"] = waitTime*1000;
return false;
} else {
if ( ( getTime() - self.isProcess[pname]["start"] ) > self.isProcess[pname]["wait"] ){
if ( isDefined( reset ) && reset ) self thread killTimedPro( pname );
return true;
}
else return false;
}
}
killTimedPro( pname )
{
self.isProcess[pname]["active"] = undefined;
}
mNotify( string )
{
note = strTok( string, ", " );
foreach ( key in note )
self notify( key );
}
initMissionData()
{
keys = getArrayKeys( level.killstreakFuncs );
foreach ( key in keys )
self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
{
}
playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
{
}
vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
{
}
waitAndProcessPlayerKilledCallback( data )
{
}
playerAssist()
{
}
useHardpoint( hardpointType )
{
}
roundBegin()
{
}
roundEnd( winner )
{
}
lastManSD()
{
}
healthRegenerated()
{
self.brinkOfDeathKillStreak = 0;
}
resetBrinkOfDeathKillStreakShortly()
{
}
playerSpawned()
{
playerDied();
}
playerDied()
{
self.brinkOfDeathKillStreak = 0;
self.healthRegenerationStreak = 0;
self.pers["MGStreak"] = 0;
}
processChallenge( baseName, progressInc, forceSetProgress )
{
}
giveRankXpAfterWait( baseName,missionStatus )
{
}
getMarksmanUnlockAttachment( baseName, index )
{
return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
}
getWeaponAttachment( weaponName, index )
{
return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
}
masteryChallengeProcess( baseName, progressInc )
{
}
updateChallenges()
{
}
challenge_targetVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
return int( value );
}
challenge_rewardVal( refString, tierId )
{
value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
return int( value );
}
buildChallegeInfo()
{
level.challengeInfo = [];
tableName = "mp/allchallengesTable.csv";
totalRewardXP = 0;
refString = tableLookupByRow( tableName, 0, 0 );
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
for ( index = 1; refString != ""; index++ )
{
assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
level.challengeInfo[refString] = [];
level.challengeInfo[refString]["targetval"] = [];
level.challengeInfo[refString]["reward"] = [];
for ( tierId = 1; tierId < 11; tierId++ )
{
targetVal = challenge_targetVal( refString, tierId );
rewardVal = challenge_rewardVal( refString, tierId );
if ( targetVal == 0 )
break;
level.challengeInfo[refString]["targetval"][tierId] = targetVal;
level.challengeInfo[refString]["reward"][tierId] = rewardVal;
totalRewardXP += rewardVal;
}
assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
refString = tableLookupByRow( tableName, index, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 );
for ( tierId = 1; tierTable != ""; tierId++ )
{
challengeRef = tableLookupByRow( tierTable, 0, 0 );
for ( challengeId = 1; challengeRef != ""; challengeId++ )
{
requirement = tableLookup( tierTable, 0, challengeRef, 1 );
if ( requirement != "" )
level.challengeInfo[challengeRef]["requirement"] = requirement;
challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
}
tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
}
}
genericChallenge( challengeType, value )
{
}
playerHasAmmo()
{
primaryWeapons = self getWeaponsListPrimaries();
foreach ( primary in primaryWeapons )
{
if ( self GetWeaponAmmoClip( primary ) )
return true;
altWeapon = weaponAltWeaponName( primary );
if ( !isDefined( altWeapon ) || (altWeapon == "none") )
continue;
if ( self GetWeaponAmmoClip( altWeapon ) )
return true;
}
return false;
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.