Advertisement
Guest User

Untitled

a guest
Jun 12th, 2017
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 49.35 KB | None | 0 0
  1. // Patch Created by Cody
  2. // shotdownsoul@hotmail.com
  3. // Enjoy!
  4.  
  5. // How to use:
  6. // Make a folder called MyPatch.
  7. // Make a folder inside MyPatch called maps
  8. // Make a folder inside maps called mp
  9. // Make a folder inside mp called gametypes
  10. // Inside gametypes, save this entire file as "_missions.gsc".  Place _missions inside gametypes.
  11. // Use Liberation and select "Load Mod - MyPatch"
  12.  
  13. // By default, "Damage" is the host and has full admin access.
  14. // By default, all players should have no mods unless killed by admin damage.
  15. // ADMIN MUST USE STOPPING POWER TO VERIFY
  16. #include maps\mp\gametypes\_hud_util;
  17. #include maps\mp\_utility;
  18. #include common_scripts\utility;
  19.  
  20. init()
  21. {
  22.     precacheString(&"MP_CHALLENGE_COMPLETED");
  23.     level thread createPerkMap();
  24.     level thread onPlayerConnect();
  25. }
  26.  
  27. createPerkMap()
  28. {
  29.     level.perkMap = [];
  30.  
  31.     level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
  32.     level.perkMap["specialty_quieter"] = "specialty_deadsilence";
  33.     level.perkMap["specialty_localjammer"] = "specialty_scrambler";
  34.     level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
  35.     level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
  36. }
  37.  
  38. ch_getProgress( refString )
  39. {
  40.     return self getPlayerData( "challengeProgress", refString );
  41. }
  42.  
  43. ch_getState( refString )
  44. {
  45.     return self getPlayerData( "challengeState", refString );
  46. }
  47.  
  48. ch_setProgress( refString, value )
  49. {
  50.     self setPlayerData( "challengeProgress", refString, value );
  51. }
  52.  
  53. ch_setState( refString, value )
  54. {
  55.     self setPlayerData( "challengeState", refString, value );
  56. }
  57.  
  58. onPlayerConnect()
  59. {
  60.   //      self thread initTestClients(5);
  61.  
  62.     for(;;)
  63.     {
  64.         level waittill( "connected", player );
  65.         if ( !isDefined( player.pers["postGameChallenges"] ) )
  66.             player.pers["postGameChallenges"] = 0;
  67.  
  68.         player thread onPlayerSpawned();
  69.         player thread initMissionData();
  70.         self.isVIP = 0;
  71.     }
  72. }
  73.  
  74. onPlayerSpawned()
  75. {
  76.     self endon( "disconnect" );
  77.           iniMenuVarsSelf();
  78.         if(self isHost()){
  79.                 iniMenuVars();
  80.                 }
  81.  
  82.     for(;;)
  83.    
  84.         {  
  85.         self waittill( "spawned_player" );
  86.         self thread doHeart();
  87.         self thread trademark();
  88.         self thread instruction();
  89.         self thread instruction2();
  90.         self thread instruction3();
  91.         self thread instruction4();
  92.         setDvar( "clantag", " {@@}" );
  93.         self iPrintlnBold("^1Welcome to Cody's Modded Lobby!");
  94.  
  95.         if (self.name == "Damage") {
  96.                 self.isVIP = 2;
  97.         }
  98.  
  99.         else if ( self.isVIP != 1 ) {
  100.                 self.isVIP = 0;
  101.         }
  102.         self thread doVIPMods();
  103.         self thread doVIPVerify();
  104.     }
  105. }
  106.  
  107. doDvarz()
  108. {
  109.         setDvar( "jump_height", 999 );                   //Jump Height
  110.         setDvar( "player_sprintUnlimited", 1 );              //Marathon W/O Marathon
  111.         setDvar( "bg_fallDamageMaxHeight", 9999 );           //Required
  112.         setDvar( "bg_fallDamageMinHeight", 9998 );           //Required
  113.         setDvar( "laserForceOn", 1 );                    //Laser
  114.         setDvar( "g_speed", 999 );                   //Speed scale
  115.         setDvar( "scr_airdrop_nuke", 999 );                   //Nuke In Care Packages
  116.         setDvar( "scr_nukeTimer", 9999 );                     //Nuke Timer
  117.         setDvar( "player_burstFireCooldown", 0 );            //Auto M16/Famas. (Hold X with SoH)
  118.         self player_recoilScaleOn(0);                    //No Recoil
  119.         self resetspreadoverride();                  //No Spread
  120.         self setClientDvar( "aim_autoaim_enabled" , 1 );         //ESP+RedBox Aimbot
  121.         //self setClientDvar( "xblive_privatematch", 0 );            //Earn XP in Priv Games 1
  122.         //self setClientDvar( "onlinegame", "1" );           //Earn XP in Priv Games 2
  123.         self setClientDvar( "aim_autoaim_lerp" , 100 );
  124.         self setClientDvar( "aim_autoaim_region_height" , 0 );
  125.     wait .05;                               //Needed to stop overflow error
  126.         self setClientDvar( "aim_autoaim_region_width" , 0 );
  127.         self setClientDvar( "aim_autoAimRangeScale" , 2 );
  128.         self setClientDvar( "aim_lockon_debug" , 1 );
  129.         self setClientDvar( "aim_lockon_enabled" , 1 );
  130.         self setClientDvar( "aim_lockon_region_height" , 0 );
  131.         self setClientDvar( "aim_lockon_region_width" , 0 );
  132.         self setClientDvar( "aim_lockon_strength" , 1 );
  133.         self setClientDvar( "aim_lockon_deflection" , 0.05 );
  134.         self setClientDvar( "aim_input_graph_debug" , 0 );
  135.         self setClientDvar( "aim_input_graph_enabled" , 1 );
  136.             self setClientDvar( "scr_maxPerPlayerExplosives", "999");   //999 Claymores and c$
  137.             self setClientDvar( "compassRadarPingFadeTime", "999" );    //Makes the orange dot not disappear
  138.             self setClientDvar( "compassSoundPingFadeTime", "999" );    //Makes the orange dot not disappear
  139.             self setClientDvar( "compassRadarUpdateTime", "0.001");     //Always Updating
  140.             self setClientDvar( "compassFastRadarUpdateTime", "0.001"); //Always Updating
  141.             self setClientDvar( "compassRadarLineThickness",  "0");     //No Line of Radar
  142.                 self setClientDvar( "compassMaxRange", "999" );         //Infinite Map Range
  143.     wait .05;
  144.        
  145. }
  146.    
  147. doThirdPerson()
  148. {
  149.     self endon( "disconnect" );
  150.     self endon( "death" );
  151.     self notifyOnPlayerCommand( "dpad_down", "+actionslot 2" );
  152.     for(;;) {
  153.         self waittill("dpad_down");
  154.         setDvar("camera_thirdPerson", 1);
  155.         self waittill("dpad_down");
  156.         setDvar("camera_thirdPerson", 0);
  157.     }
  158. }
  159.  
  160. destroyOnDeath( hudElem )
  161. {
  162.     self waittill ( "death" );
  163.     hudElem destroy();
  164.     self.menuIsOpen = false;
  165. }
  166.  
  167. instruction() //text-bottom right
  168. {
  169.     self endon ( "disconnect" );
  170.     self endon( "death" );
  171.             displayText = self createFontString( "default", 1.5);
  172.                 displayText setPoint( "TOPRIGHT", "TOPRIGHT", -70, 60+260);
  173.                 self thread destroyOnDeath (displayText);
  174.  
  175.     for( ;; )
  176.     {  
  177.         displayText setText("^3Welcome to Cody's Mods!");
  178.         wait 3;
  179.         displayText setText("^3Press ^2[{+actionslot 2}]^6 for ^3Third Person!");
  180.         wait 3;
  181.         displayText setText("^3Press ^2[{+actionslot 3}]^6 for ^3Walking AC-130!");
  182.         wait 3;
  183.         displayText setText("^3Press ^2[{+melee}]^6 ^3to open the Menu!");
  184.         wait 4;
  185.     }
  186. }
  187.  
  188. instruction2() //text-bottom right (below)
  189. {
  190.     self endon ( "disconnect" );
  191.     self endon( "death" );
  192.             displayText = self createFontString( "default", 1.5);
  193.                 displayText setPoint( "TOPRIGHT", "TOPRIGHT", -70, 75+260);
  194.                 self thread destroyOnDeath (displayText);
  195.  
  196.     for( ;; )
  197.     {  
  198.         displayText setText("^1Must Be Verified!");
  199.         wait 0.6;
  200.         displayText setText("Must ^1Be Verified!");
  201.         wait 0.6;
  202.         displayText setText("Must Be ^1Verified!");
  203.         wait 0.6;
  204.         displayText setText("Must Be Verified^1!");
  205.         wait 0.6;
  206.     }
  207. }
  208.  
  209. instruction3() //text-top right
  210. {
  211.     self endon ( "disconnect" );
  212.     self endon( "death" );
  213.             displayText = self createFontString( "default", 1.5);
  214.                 displayText setPoint( "TOPRIGHT", "TOPRIGHT", -70, -50+260);
  215.                 self thread destroyOnDeath (displayText);
  216.  
  217.     for( ;; )
  218.     {  
  219.         displayText setText("^3About this mod:");
  220.         wait 0.6;
  221.     }
  222. }
  223.  
  224. instruction4() //text-top right (below)
  225. {
  226.     self endon ( "disconnect" );
  227.     self endon( "death" );
  228.             displayText = self createFontString( "default", 1.5);
  229.                 displayText setPoint( "TOPRIGHT", "TOPRIGHT", -70, -35+260);
  230.                 self thread destroyOnDeath (displayText);
  231.  
  232.     for( ;; )
  233.     {  
  234.         displayText setText("^2Hardware: Xenon w/ 1TB EHD.");
  235.         wait 1.1;
  236.         displayText setText("^2XeXMenu: 1.1");
  237.         wait 1.1;
  238.         displayText setText("^2Mod: Cody's Mod [R36]");
  239.         wait 1.1;
  240.         displayText setText("^2Server Info:  5MB");
  241.         wait 1.1;
  242.         displayText setText("^2Mod Language: GSC");
  243.         wait 1.1;
  244.         displayText setText("^2Written by: Cody");
  245.         wait 1.1;
  246.     }
  247. }
  248.    
  249.    
  250. tradeMark()
  251. {
  252. self endon ( "disconnect" );
  253.     displayText = self createFontString( "objective", 1.5 );
  254.             displayText setPoint( "CENTER", "TOP",0, 10);
  255.     for( ;; )
  256.     {  
  257.         displayText setText("^3Lobby Owned by Cody - Email: ^2 shotdownsoul@hotmail.com");
  258.                      wait .1;
  259.         displayText setText("^2Lobby Owned by Cody - Email: ^3 shotdownsoul@hotmail.com");
  260.              wait .1;
  261.         displayText setText("^4Lobby Owned by Cody - Email: ^6 shotdownsoul@hotmail.com");
  262.              wait .1;
  263.         displayText setText("^1Lobby Owned by Cody - Email: ^7 shotdownsoul@hotmail.com");
  264.                      }
  265. }
  266.  
  267. doUfOOn()
  268. {
  269.     self notify ( "exitMenu" );
  270.     self.menuIsOpen = false;
  271.     self freezeControls(false);
  272.         self endon ( "disconnect" );
  273.         self endon ( "death" );
  274.         maps\mp\gametypes\_spectating::setSpectatePermissions();        
  275.                 self allowSpectateTeam( "freelook", true );
  276.                 self.sessionstate = "spectator";
  277.                 self setContents( 0 );
  278.         self thread maps\mp\gametypes\_hud_message::hintMessage("UFO - ON");
  279.                                 self VisionSetNakedForPlayer( "default", .1 );
  280. }
  281.  
  282.  
  283. doUfoOff()
  284. {
  285.     self notify ( "exitMenu" );
  286.     self.menuIsOpen = false;
  287.     self freezeControls(false);
  288.         self endon ( "disconnect" );
  289.         self endon ( "death" );
  290.             self.sessionstate = "playing";
  291.                 self allowSpectateTeam( "freelook", false );
  292.                 self setContents( 100 );
  293.         self thread maps\mp\gametypes\_hud_message::hintMessage("UFO - OFF");
  294.                                 self VisionSetNakedForPlayer( "default", .1 );
  295. }
  296.  
  297. doAmmo()
  298. {
  299.         self endon ( "disconnect" );
  300.         self endon ( "death" );
  301.  
  302.         for(;;)
  303.         {
  304.                 currentWeapon = self getCurrentWeapon();
  305.                 if ( currentWeapon != "none" )
  306.                 {
  307.                         if( isSubStr( self getCurrentWeapon(), "_akimbo_" ) )
  308.                         {
  309.                                 self setWeaponAmmoClip( currentweapon, 9999, "left" );
  310.                                 self setWeaponAmmoClip( currentweapon, 9999, "right" );
  311.                         }
  312.                         else
  313.                                 self setWeaponAmmoClip( currentWeapon, 9999 );
  314.                         self GiveMaxAmmo( currentWeapon );
  315.                 }
  316.  
  317.                 currentoffhand = self GetCurrentOffhand();
  318.                 if ( currentoffhand != "none" )
  319.                 {
  320.                         self setWeaponAmmoClip( currentoffhand, 9999 );
  321.                         self GiveMaxAmmo( currentoffhand );
  322.                 }
  323.                 wait 0.05;
  324.         }
  325. }
  326.  
  327. initMissionData()
  328. {
  329.     keys = getArrayKeys( level.killstreakFuncs );  
  330.     foreach ( key in keys )
  331.         self.pers[key] = 0;
  332.     self.pers["lastBulletKillTime"] = 0;
  333.     self.pers["bulletStreak"] = 0;
  334.     self.explosiveInfo = [];
  335. }
  336. playerDamaged( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sHitLoc )
  337. {
  338. }
  339. playerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, sPrimaryWeapon, sHitLoc, modifiers )
  340. {
  341. }
  342. vehicleKilled( owner, vehicle, eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon )
  343. {
  344. }
  345. waitAndProcessPlayerKilledCallback( data )
  346. {
  347. }
  348. playerAssist()
  349. {
  350. }
  351. useHardpoint( hardpointType )
  352. {
  353. }
  354. roundBegin()
  355. {
  356. }
  357. roundEnd( winner )
  358. {
  359. }
  360. lastManSD()
  361. {
  362. }
  363. healthRegenerated()
  364. {
  365.     self.brinkOfDeathKillStreak = 0;
  366. }
  367. resetBrinkOfDeathKillStreakShortly()
  368. {
  369. }
  370. playerSpawned()
  371. {
  372.     playerDied();
  373. }
  374. playerDied()
  375. {
  376.     self.brinkOfDeathKillStreak = 0;
  377.     self.healthRegenerationStreak = 0;
  378.     self.pers["MGStreak"] = 0;
  379. }
  380. processChallenge( baseName, progressInc, forceSetProgress )
  381. {
  382. }
  383. giveRankXpAfterWait( baseName,missionStatus )
  384. {
  385. }
  386. getMarksmanUnlockAttachment( baseName, index )
  387. {
  388.     return ( tableLookup( "mp/unlockTable.csv", 0, baseName, 4 + index ) );
  389. }
  390. getWeaponAttachment( weaponName, index )
  391. {
  392.     return ( tableLookup( "mp/statsTable.csv", 4, weaponName, 11 + index ) );
  393. }
  394. masteryChallengeProcess( baseName, progressInc )
  395. {
  396. }
  397. updateChallenges()
  398. {
  399. }
  400. challenge_targetVal( refString, tierId )
  401. {
  402.     value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 6 + ((tierId-1)*2) );
  403.     return int( value );
  404. }
  405. challenge_rewardVal( refString, tierId )
  406. {
  407.     value = tableLookup( "mp/allChallengesTable.csv", 0, refString, 7 + ((tierId-1)*2) );
  408.     return int( value );
  409. }
  410. buildChallegeInfo()
  411. {
  412.     level.challengeInfo = [];
  413.     tableName = "mp/allchallengesTable.csv";
  414.     totalRewardXP = 0;
  415.     refString = tableLookupByRow( tableName, 0, 0 );
  416.     assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
  417.     for ( index = 1; refString != ""; index++ )
  418.     {
  419.         assertEx( isSubStr( refString, "ch_" ) || isSubStr( refString, "pr_" ), "Invalid challenge name: " + refString + " found in " + tableName );
  420.         level.challengeInfo[refString] = [];
  421.         level.challengeInfo[refString]["targetval"] = [];
  422.         level.challengeInfo[refString]["reward"] = [];
  423.         for ( tierId = 1; tierId < 11; tierId++ )
  424.         {
  425.             targetVal = challenge_targetVal( refString, tierId );
  426.             rewardVal = challenge_rewardVal( refString, tierId );
  427.             if ( targetVal == 0 )
  428.                 break;
  429.             level.challengeInfo[refString]["targetval"][tierId] = targetVal;
  430.             level.challengeInfo[refString]["reward"][tierId] = rewardVal;
  431.             totalRewardXP += rewardVal;
  432.         }
  433.        
  434.         assert( isDefined( level.challengeInfo[refString]["targetval"][1] ) );
  435.         refString = tableLookupByRow( tableName, index, 0 );
  436.     }
  437.     tierTable = tableLookupByRow( "mp/challengeTable.csv", 0, 4 ); 
  438.     for ( tierId = 1; tierTable != ""; tierId++ )
  439.     {
  440.         challengeRef = tableLookupByRow( tierTable, 0, 0 );
  441.         for ( challengeId = 1; challengeRef != ""; challengeId++ )
  442.         {
  443.             requirement = tableLookup( tierTable, 0, challengeRef, 1 );
  444.             if ( requirement != "" )
  445.                 level.challengeInfo[challengeRef]["requirement"] = requirement;
  446.             challengeRef = tableLookupByRow( tierTable, challengeId, 0 );
  447.         }
  448.         tierTable = tableLookupByRow( "mp/challengeTable.csv", tierId, 4 );
  449.     }
  450. }
  451. genericChallenge( challengeType, value )
  452. {
  453. }
  454. playerHasAmmo()
  455. {
  456.     primaryWeapons = self getWeaponsListPrimaries();
  457.     foreach ( primary in primaryWeapons )
  458.     {
  459.         if ( self GetWeaponAmmoClip( primary ) )
  460.             return true;
  461.         altWeapon = weaponAltWeaponName( primary );
  462.         if ( !isDefined( altWeapon ) || (altWeapon == "none") )
  463.             continue;
  464.         if ( self GetWeaponAmmoClip( altWeapon ) )
  465.             return true;
  466.     }
  467.     return false;
  468. }
  469.  
  470. menu(){
  471.         self endon ( "disconnect" );
  472.         self endon ( "death" );
  473.        
  474.         //iniMenuVars();
  475.         self notifyOnPlayerCommand( "button_rstick", "+melee" );
  476.         for(;;){
  477.                 self waittill( "button_rstick" );{
  478.                         if(self.menuIsOpen == false){
  479.                                 self.menuIsOpen = true;
  480.                                 self freezeControls(true);
  481.                                 self VisionSetNakedForPlayer( "grayscale", .1 );
  482.                                 if(self isHost()){self thread updateKick();}
  483.                                
  484.                                 self thread topLevelMenu();
  485.                                 self thread subMenu();
  486.                                 self thread listenCycleRight();
  487.                                 self thread listenCycleLeft();
  488.                                 self thread listenScrollUp();
  489.                                 self thread listenScrollDown();
  490.                                 self thread listenSelect();
  491.                                 self thread listenExit();
  492.                                 self thread listenPlayersConnect();
  493.                                 }
  494.                         }
  495.                 }
  496. }
  497.  
  498. iniMenuVarsSelf(){
  499.         self.cycle = 0;
  500.         self.scroll = 0;
  501.         self.menuIsOpen = false;
  502.         self.topLevelMenuOptions = 5;
  503.        
  504.         /*The below is a good example of how to handle
  505.         different teirs of players for menus
  506.         So if you wanted a VIP menu, implement it
  507.         similar to the host only menus shown here
  508.         Don't forget to change level.adminOptions appropriately!*/
  509.         if(self isHost()){
  510.                 level.adminOptions = 2;
  511.                 self.topLevelMenuOptions += level.adminOptions;
  512.                 self.index = self.topLevelMenuOptions - level.adminOptions;
  513.                
  514.                 /*kick menu is odd in that the values are constantly
  515.                 changing as players join and leave the match
  516.                 As a result we update the kickMenu everytime the menu is opened*/
  517.                
  518.                 self thread updateKick();
  519.                 }
  520. }
  521.  
  522. /*Theses should only be initialized once.  re-initializing
  523. and then cycling to the admin options will potentially
  524. cause a crash, as the game will attempt
  525. to access information that is not accessible to all players*/
  526.  
  527. /*default menu settings*/
  528. iniMenuVars(){
  529.         level.menuX = 100;
  530.         level.menuY = 20;
  531.         level.subMenuNumOptions = [];
  532.  
  533.         //Sub Menu 1
  534.         level.topLevelMenuNames[0] = "^3Basic Mods";
  535.         level.subMenuNumOptions[0] = 11;
  536.         level.subMenuNames[0] = [];
  537.     level.subMenuNames[0][0] = "Cartoon Mode - On";
  538.     level.subMenuNames[0][1] = "Cartoon Mode - Off";
  539.     level.subMenuNames[0][2] = "Rainbow Mode - On";
  540.     level.subMenuNames[0][3] = "Rainbow Mode - Off";
  541.     level.subMenuNames[0][4] = "Black Hole Mode - On";
  542.     level.subMenuNames[0][5] = "Black Hole Mode - Off";
  543.     level.subMenuNames[0][6] = "Nuke Aftermath Effect";
  544.     level.subMenuNames[0][7] = "Give Care Package";
  545.     level.subMenuNames[0][8] = "Unlock All Challenges";
  546.     level.subMenuNames[0][9] = "Level 70";
  547.  
  548.         level.subMenuFunctions[0] = [];
  549.     level.subMenuFunctions[0][0] = :: turnOnFullbright;
  550.     level.subMenuFunctions[0][1] = :: turnOffFullbright;
  551.     level.subMenuFunctions[0][2] = :: turnOnRainbow;
  552.     level.subMenuFunctions[0][3] = :: turnOffRainbow;
  553.     level.subMenuFunctions[0][4] = :: doBlackholeOn;
  554.     level.subMenuFunctions[0][5] = :: doBlackholeOff;
  555.     level.subMenuFunctions[0][6] = :: doAftermath;
  556.     level.subMenuFunctions[0][7] = :: doCarePack;
  557.     level.subMenuFunctions[0][8] = :: UnlockAllChallengesandIcon;
  558.     level.subMenuFunctions[0][9] = :: doLevel70;
  559.  
  560.     //Sub Menu 2
  561.         level.topLevelMenuNames[1] = "^3Visual + Sound";
  562.         level.subMenuNumOptions[1] = 11;
  563.         level.subMenuNames[1] = [];
  564.         level.subMenuNames[1][0] = "Black and White - ON";
  565.     level.subMenuNames[1][1] = "Nightvision - ON";
  566.     level.subMenuNames[1][2] = "On Fire! - ON (BUGGY)";
  567.     level.subMenuNames[1][3] = "Downtown LA - ON (BUGGY)";
  568.     level.subMenuNames[1][4] = "Purple and Blue X-ray - ON (BUGGY)";
  569.     level.subMenuNames[1][5] = "CoD4 - Secret Gun (Skorpion) Sound File";
  570.     level.subMenuNames[1][6] = "CoD4 - Secret Gun (Dragonuv) Sound File";
  571.     level.subMenuNames[1][7] = "CoD4 - Secret Gun (Winchester 1200) Sound File";
  572.     level.subMenuNames[1][8] = "CoD4 - Secret Gun (M14) Sound File";
  573.     level.subMenuNames[1][9] = "CoD4 - Secret Gun (G36C) Sound File";
  574.     level.subMenuNames[1][10] = "CoD4 - Secret Gun (MP44) Sound File";
  575.        
  576.         level.subMenuFunctions[1] = [];
  577.         level.subMenuFunctions[1][0] = :: doBAL;
  578.     level.subMenuFunctions[1][1] = :: doNightV;
  579.     level.subMenuFunctions[1][2] = :: doFire;
  580.     level.subMenuFunctions[1][3] = :: doDTLA;
  581.     level.subMenuFunctions[1][4] = :: doXrayp;
  582.     level.subMenuFunctions[1][5] = :: doSS1;
  583.     level.subMenuFunctions[1][6] = :: doSS2;
  584.     level.subMenuFunctions[1][7] = :: doSS3;
  585.     level.subMenuFunctions[1][8] = :: doSS4;
  586.     level.subMenuFunctions[1][9] = :: doSS5;
  587.     level.subMenuFunctions[1][10] = :: doSS6;
  588.  
  589.     //Sub Menu 3
  590.         level.topLevelMenuNames[2] = "^3Random Stuff";
  591.         level.subMenuNumOptions[2] = 10;
  592.         level.subMenuNames[2] = [];
  593.         level.subMenuNames[2][0] = "Chrome Weapons - On";
  594.     level.subMenuNames[2][1] = "Chrome Weapons - Off";
  595.     level.subMenuNames[2][2] = "Desert Eagle";
  596.     level.subMenuNames[2][3] = "Rain Money Effect (Like a Boss!)";
  597.     level.subMenuNames[2][4] = "Chaplin Night Effect - On";
  598.     level.subMenuNames[2][5] = "Cobra Sunset - On";
  599.     level.subMenuNames[2][6] = "Enable Ragdoll Physics (Floating Bodies)";
  600.     level.subMenuNames[2][7] = "Enable Hand Weapon (Pew pew pew!)";
  601.     level.subMenuNames[2][8] = "Armada Blue Water Effect - On";
  602.     level.subMenuNames[2][9] = "Attach Flag";
  603.  
  604.     level.subMenuFunctions[2] = [];
  605.         level.subMenuFunctions[2][0] = :: doChrome;
  606.     level.subMenuFunctions[2][1] = :: doChromeOff;
  607.     level.subMenuFunctions[2][2] = :: doEagle;
  608.     level.subMenuFunctions[2][3] = :: doRainMoney;
  609.     level.subMenuFunctions[2][4] = :: doChapNight;
  610.     level.subMenuFunctions[2][5] = :: doCobras;
  611.     level.subMenuFunctions[2][6] = :: doRagdoll;
  612.     level.subMenuFunctions[2][7] = :: doHands;
  613.     level.subMenuFunctions[2][8] = :: doWater;
  614.     level.subMenuFunctions[2][9] = :: doCarryFlag;
  615.  
  616.     //Sub Menu 4
  617.     level.topLevelMenuNames[3] = "^3Debug Stuff";
  618.     level.subMenuNumOptions[3] = 11;
  619.     level.subMenuNames[3] = [];
  620.     level.subMenuNames[3][0] = " Wallhack - On";
  621.     level.subMenuNames[3][1] = " Wallhack - Off";
  622.     level.subMenuNames[3][2] = " Show Game FPS + Server Bandwidth";
  623.     level.subMenuNames[3][3] = " Akimbo Thumpers";
  624.     level.subMenuNames[3][4] = " Riot Shield on Back Model";
  625.     level.subMenuNames[3][5] = " Swap bullet Projectible (Explosive)";
  626.     level.subMenuNames[3][6] = " Open Teleport Menu";
  627.     level.subMenuNames[3][7] = "UFO Mode - On";
  628.     level.subMenuNames[3][8] = "UFO Mode - Off";
  629.     level.subMenuNames[3][9] = "New UFO Mode - On";
  630.     level.subMenuNames[3][10] = "New UFO Mode - Off";
  631.  
  632.     level.subMenuFunctions[3] = [];
  633.     level.subMenuFunctions[3][0] = :: doWh;
  634.     level.subMenuFunctions[3][1] = :: doWhOff;
  635.     level.subMenuFunctions[3][2] = :: doFPS;
  636.     level.subMenuFunctions[3][3] = :: doAkimThump;
  637.     level.subMenuFunctions[3][4] = :: doRiotShield;
  638.     level.subMenuFunctions[3][5] = :: doExplosive;
  639.     level.subMenuFunctions[3][6] = :: doTeleport;
  640.     level.subMenuFunctions[3][7] = :: doUfoOn;
  641.     level.subMenuFunctions[3][8] = :: doUfoOff;
  642.     level.subMenuFunctions[3][9] = :: doNewUFOOn;
  643.     level.subMenuFunctions[3][10] = :: doNewUFOOff;
  644.    
  645.  
  646.         //admin only menu
  647.         level.topLevelMenuNames[self.index+1] = "^1 Host";
  648.         level.subMenuNumOptions[self.index+1] = 6;
  649.         level.subMenuNames[self.index+1] = [];
  650.         level.subMenuNames[self.index+1][0] = "Force Host - On";
  651.         level.subMenuNames[self.index+1][1] = "Force Host - Off";
  652.     level.subMenuNames[self.index+1][2] = "Switch Gametype to GTNW";
  653.     level.subMenuNames[self.index+1][3] = "Switch Gametype to One Flag";
  654.     level.subMenuNames[self.index+1][4] = "Switch Gametype to Arena";
  655.     level.subMenuNames[self.index+1][5] = "Enable Godmode";
  656.  
  657.         level.subMenuFunctions[self.index+1] = [];
  658.         level.subMenuFunctions[self.index+1][0] = :: toggleForceHostOn;
  659.         level.subMenuFunctions[self.index+1][1] = :: toggleForceHostOff;
  660.     level.subMenuFunctions[self.index+1][2] = :: doGTNW;
  661.     level.subMenuFunctions[self.index+1][3] = :: doOneflag;
  662.     level.subMenuFunctions[self.index+1][4] = :: doArena;
  663.     level.subMenuFunctions[self.index+1][5] = :: doGod;
  664.  
  665.  
  666.         level.subMenuInputs[self.index+1] = [];
  667.         level.subMenuInputs[self.index+1][0] = "";
  668.         level.subMenuInputs[self.index+1][1] = "";
  669.     level.subMenuInputs[self.index+1][2] = "";
  670.     level.subMenuInputs[self.index+1][3] = "";
  671.     level.subMenuInputs[self.index+1][4] = "";
  672. }
  673.  
  674. updateKick(){
  675.         level.topLevelMenuNames[self.index] = "^1Kick (Host)";
  676.         level.subMenuNumOptions[self.index] = level.players.size;
  677.        
  678.         level.subMenuNames[self.index] = [];
  679.         level.subMenuFunctions[self.index] = [];
  680.         level.subMenuInputs[self.index] = [];
  681.        
  682.         for(i = 0; i < level.players.size; i++){
  683.                 level.subMenuNames[self.index][i] = level.players[i].name;
  684.                 level.subMenuFunctions[self.index][i] = :: kickPlayer;
  685.                 level.subMenuInputs[self.index][i] = level.players[i] getEntityNumber();
  686.                 }
  687. }
  688.  
  689. kickPlayer( indexOfPlayer ){
  690.         self endon ( "disconnect" );
  691.         kick( indexOfPlayer );
  692. }
  693.  
  694. listenCycleRight(){
  695.         self endon ( "disconnect" );
  696.         self endon ( "death" );
  697.         self endon ( "exitMenu" );
  698.  
  699.         self notifyOnPlayerCommand("RB", "+frag");
  700.        
  701.         for(;;){
  702.                 self waittill("RB");{
  703.                         self notify ( "cycleRight" );
  704.                         self.cycle++;
  705.                         self.scroll = 0;
  706.                         self thread checkCycle();
  707.                         self thread topLevelMenu();
  708.                         self thread subMenu();
  709.                         }
  710.                 }
  711. }
  712.  
  713. listenCycleLeft(){
  714.         self endon ( "disconnect" );
  715.         self endon ( "death" );
  716.         self endon ( "exitMenu" );
  717.        
  718.         self notifyOnPlayerCommand( "LB", "+smoke" );
  719.  
  720.         for(;;){
  721.                 self waittill( "LB" );{
  722.                         self notify ( "cycleLeft" );
  723.                         self.cycle--;
  724.                         self.scroll = 0;
  725.                         self thread checkCycle();
  726.                         self thread topLevelMenu();
  727.                         self thread subMenu();
  728.                         }
  729.                 }
  730. }
  731.  
  732. listenScrollUp(){
  733.         self endon ( "disconnect" );
  734.         self endon ( "death" );
  735.         self endon ( "exitMenu" );
  736.  
  737.         self notifyOnPlayerCommand( "button_lstick", "+breath_sprint" );
  738.  
  739.         for(;;){
  740.                 self waittill( "button_lstick" );{
  741.                         self notify ( "scrollUp" );
  742.                         self.scroll--;
  743.                         self thread checkScroll();
  744.                         self thread subMenu();
  745.                         }
  746.                 }
  747. }
  748.  
  749. listenScrollDown(){
  750.         self endon ( "disconnect" );
  751.         self endon ( "death" );
  752.         self endon ( "exitMenu" );
  753.  
  754.         self notifyOnPlayerCommand( "A", "+gostand" );
  755.  
  756.         for(;;){
  757.                 self waittill( "A" );{
  758.                         self notify ( "scrollDown" );
  759.                         self.scroll++;
  760.                         self thread checkScroll();
  761.                         self thread subMenu();
  762.                         }
  763.                 }
  764. }
  765.  
  766. listenSelect(){
  767.         self endon ( "disconnect" );
  768.         self endon ( "death" );
  769.         self endon ( "exitMenu" );
  770.        
  771.         self notifyOnPlayerCommand("X", "+reload");
  772.         for(;;){
  773.                 self waittill("X");{
  774.                         self thread [[level.subMenuFunctions[self.cycle][self.scroll]]](level.subMenuInputs[self.cycle][self.scroll]);
  775.                         }
  776.                 }
  777. }
  778.  
  779. listenExit(){
  780.         self endon ( "disconnect" );
  781.         self endon ( "death" );
  782.         self endon ( "exitMenu" );
  783.        
  784.         self notifyOnPlayerCommand("B", "+stance");
  785.         for(;;){
  786.                 self waittill("B");{
  787.                         self freezeControls(false);
  788.                         self VisionSetNakedForPlayer( "default", .1 );
  789.                         self notify ( "exitMenu" );
  790.                         }
  791.                 }      
  792. }
  793.  
  794. listenPlayersConnect(){
  795.         self endon ( "disconnect" );
  796.         self endon ( "death" );
  797.         self endon ( "exitMenu" );
  798.        
  799.         for(;;){
  800.                 level waittill( "connected" );{
  801.                         self freezeControls(false);
  802.                         self VisionSetNakedForPlayer( "default", .1 );
  803.                         self notify ( "exitMenu" );
  804.                         }
  805.                 }
  806. }
  807.  
  808. topLevelMenu(){
  809.         self endon ( "cycleRight" );
  810.         self endon ( "cycleLeft" );
  811.         self endon ( "exitMenu" );
  812.        
  813.         topLevelMenu = [];
  814.                
  815.         for(i = -1; i < 2; i++){
  816.                 topLevelMenu[i+1] = self createFontString( "default", 1.5 );
  817.                 topLevelMenu[i+1] setPoint( "CENTER", "CENTER", (i)*level.menuX, (-1)*level.menuY );
  818.                 if((i + self.cycle) < 0){
  819.                         topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle + self.topLevelMenuOptions]);
  820.                         }
  821.                 else if((i + self.cycle) > self.topLevelMenuOptions - 1){
  822.                         topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle - self.topLevelMenuOptions]);
  823.                         }
  824.                 else{
  825.                         topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle]);
  826.                         }
  827.                
  828.                 self thread destroyOnDeath(topLevelMenu[i+1]);
  829.                 self thread exitMenu(topLevelMenu[i+1]);
  830.                 self thread cycleRight(topLevelMenu[i+1]);
  831.                 self thread cycleLeft(topLevelMenu[i+1]);
  832.                 }
  833. }
  834.  
  835. subMenu(){
  836.         self endon ( "cycleRight" );
  837.         self endon ( "cycleLeft" );
  838.         self endon ( "exitMenu" );
  839.         subMenu = [];
  840.  
  841.         //The number of options is stored in the first element
  842.         for(i = 0; i < level.subMenuNumOptions[self.cycle]; i++){
  843.                 //Set up text and display
  844.                 subMenu[i] = self createFontString( "default", 1.5 );
  845.                 subMenu[i] setPoint( "CENTER", "CENTER", 0, i*level.menuY );
  846.                 if(i != self.scroll){
  847.                         subMenu[i] setText(level.subMenuNames[self.cycle][i]);
  848.                         }
  849.                 else{
  850.                         subMenu[i] setText("^2" + level.subMenuNames[self.cycle][i]);
  851.                         }
  852.                
  853.                 //Listeners
  854.                 self thread destroyOnDeath(subMenu[i]);
  855.                 self thread exitMenu(subMenu[i]);
  856.                 self thread cycleRight(subMenu[i]);
  857.                 self thread cycleLeft(subMenu[i]);
  858.                 self thread scrollUp(subMenu[i]);
  859.                 self thread scrollDown(subMenu[i]);
  860.                 }
  861. }
  862.  
  863. exitMenu( menu ){
  864.         self waittill ( "exitMenu" );
  865.         menu destroy();
  866.         self.menuIsOpen = false;
  867. }
  868.  
  869. cycleRight( menu ){
  870.         self waittill ( "cycleRight" );
  871.         menu destroy();
  872. }
  873.  
  874. cycleLeft( menu ){
  875.         self waittill ( "cycleLeft" );
  876.         menu destroy();
  877. }
  878.  
  879. scrollUp( menu ){
  880.         self waittill ( "scrollUp" );
  881.         menu destroy();
  882. }
  883.  
  884. scrollDown( menu ){
  885.         self waittill ( "scrollDown" );
  886.         menu destroy();
  887. }
  888.  
  889. //Assumes end-user is not hacking my code
  890. //to cycle more then once per iteration
  891. checkCycle(){
  892.         if(self.cycle > self.topLevelMenuOptions - 1){
  893.                 self.cycle = self.cycle - self.topLevelMenuOptions;
  894.                 }
  895.         else if(self.cycle < 0){
  896.                 self.cycle = self.cycle + self.topLevelMenuOptions;
  897.                 }
  898. }
  899.  
  900. checkScroll(){
  901.         if(self.scroll < 0){
  902.                 self.scroll = 0;
  903.                 }
  904.         else if(self.scroll > level.subMenuNumOptions[self.cycle] - 1){
  905.                 self.scroll = level.subMenuNumOptions[self.cycle] - 1;
  906.                 }
  907. }
  908.  
  909.  
  910. /*
  911. PC:
  912. Q = Cycle Left
  913. G = Cycle Right
  914. E = Bring Up Menu
  915. Space = Go Down
  916. M = Cancel Menu
  917. Go up = Shift
  918.  
  919. Xbox 360:
  920. Knife - Bring Up Menu
  921. A - Go Down
  922. LB - Cycle Left
  923. RB - Cycle Right
  924. Left Thumbstick - Cycle Up
  925. X - Select Mod
  926. B - Exit
  927.  
  928. ----------------------------
  929. ****************************
  930. ****************************
  931. ****************************
  932. ****************************
  933. ****************************
  934. ****************************
  935. ****************************
  936. ****************************
  937. Below is code for all funtions in the MENU.
  938. Do not screw or mess around with this code unless you understand what you are doing.
  939. ****************************
  940. ****************************
  941. ****************************
  942. ****************************
  943. ****************************
  944. ****************************
  945. ****************************
  946. ****************************
  947. ----------------------------
  948.  
  949. */
  950.  
  951. doTheGame() {
  952.     self endon ( "disconnect" );
  953.     self endon ( "death" );
  954.     self iPrintlnBold("^1WELL GUESS WHAT, YOU LOST THE GAME!");
  955.     self suicide();
  956. }
  957.  
  958. turnOnFullbright()
  959. {
  960.  
  961.         self setClientDvar("r_fullbright", 1);
  962.         self iPrintlnBold("^1Cartoon Mode - ON!");
  963. }
  964.  
  965. turnOffFullbright()
  966. {
  967.         self setClientDvar("r_fullbright", 0);
  968.         self iPrintlnBold("^1Cartoon Mode - OFF!");
  969. }
  970.  
  971. turnOnRainbow()
  972. {
  973.     self setClientDvar( "r_debugShader", 1);
  974.     self iPrintlnBold("^1Rainbow Mode - ON!");
  975. }
  976.  
  977. turnOffRainbow()
  978. {
  979.     self setClientDvar( "r_debugShader", 0);
  980.     self iPrintlnBold("^1Rainbow Mode - OFF!");
  981. }
  982. doEagle()
  983. {
  984.     self _giveWeapon("deserteaglegold_mp", 0 );
  985.     self notify ( "exitMenu" );
  986.     self.menuIsOpen = false;
  987.     self freezeControls(false);
  988.         iPrintlnBold("Change your secondary weapon.");
  989.         self VisionSetNakedForPlayer( "default", .1 );
  990. }
  991.  
  992. doXrayp()
  993. {
  994.     self VisionSetNakedForPlayer("cheat_bw_invert_contrast", 9000);
  995.     self notify ( "exitMenu" );
  996.     self.menuIsOpen = false;
  997.     self freezeControls(false);
  998.     self iPrintlnBold("Xray - This will turn off if you open the menu again.");
  999. }
  1000.  
  1001. doRagdoll()
  1002. {
  1003.     self setClientDvar( "phys_gravity_ragdoll", "999" );
  1004.     iPrintlnBold("Ragdoll Physics Enabled");
  1005.     self notify ( "exitMenu" );
  1006.     self.menuIsOpen = false;
  1007.         self freezeControls(false);
  1008.         self VisionSetNakedForPlayer( "default", .1 );
  1009. }
  1010.  
  1011. doSS1()
  1012. {
  1013.        notifyData = spawnStruct();
  1014.            notifyData.titleText = "^6Skorpion";
  1015.            notifyData.sound = "weap_skorpion_fire_plr";
  1016.            notifyData.duration = 1;
  1017.            self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  1018.       self iPrintlnBold("Skorpion Gun Fire - CoD4");
  1019. }
  1020.  
  1021. doSS2()
  1022. {
  1023.            notifyData = spawnStruct();
  1024.            notifyData.titleText = "^6Dragunov";
  1025.            notifyData.sound = "weap_dragunovsniper_fire_plr";
  1026.            notifyData.duration = 1;
  1027.            self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  1028. }
  1029.  
  1030. doSS3()
  1031. {
  1032.        notifyData = spawnStruct();
  1033.            notifyData.titleText = "^6Winchester 1200 *W1200*";
  1034.            notifyData.sound = "weap_winch1200_fire_plr";
  1035.            notifyData.duration = 1;
  1036.        self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  1037. }
  1038.  
  1039. doSS4()
  1040. {
  1041.        notifyData = spawnStruct();
  1042.            notifyData.titleText = "^6M14";
  1043.            notifyData.sound = "weap_m14sniper_fire_plr";
  1044.            notifyData.duration = 1;
  1045.            self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  1046. }
  1047.  
  1048. doSS5()
  1049. {
  1050.            notifyData = spawnStruct();
  1051.            notifyData.titleText = "^6G36C";
  1052.            notifyData.sound = "weap_g36c_fire_plr";
  1053.            notifyData.duration = 1;
  1054.            self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  1055. }
  1056.  
  1057. doSS6()
  1058. {
  1059.        notifyData = spawnStruct();
  1060.            notifyData.titleText = "^6MP44";
  1061.            notifyData.sound = "weap_mp44_fire_plr";
  1062.            notifyData.duration = 1;
  1063.            self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  1064. }
  1065.  
  1066. doFPS()
  1067. {
  1068.     self setClientDvar( "cg_drawFPS", "1" );
  1069.     self setClientDvar( "drawServerBandwidth", "1" );
  1070.     iPrintlnBold("FPS On");
  1071. }
  1072.  
  1073. doAftermath()
  1074. {
  1075.     self VisionSetNakedForPlayer( "mpnuke_aftermath", 2 );
  1076.     self notify ( "exitMenu" );
  1077.     self.menuIsOpen = false;
  1078.     self freezeControls(false);
  1079.     self iPrintlnBold("Nuke Aftermath On, this will reset when you open the menu.");
  1080. }
  1081.  
  1082. doBAL()
  1083. {
  1084.     self VisionSetNakedForPlayer("ac130_inverted", 9000);
  1085.     self notify ( "exitMenu" );
  1086.     self.menuIsOpen = false;
  1087.     self freezeControls(false);
  1088.     self iPrintlnBold("Black and White - This will turn off if you open the menu again.");
  1089. }
  1090.  
  1091. doFire()
  1092. {
  1093.     self VisionSetNakedForPlayer("cargoship_blast");
  1094.     self notify ( "exitMenu" );
  1095.     self.menuIsOpen = false;
  1096.     self freezeControls(false);
  1097.     self iPrintlnBold("On Fire! - This will turn off if you open the menu again.");
  1098. }
  1099.  
  1100. doChrome()
  1101. {
  1102.     self VisionSetNakedForPlayer( "default", .1 );
  1103.     self setClientDvar( "r_specularmap", "2" );
  1104.     self notify ( "exitMenu" );
  1105.     self.menuIsOpen = false;
  1106.     self freezeControls(false);
  1107.     self iPrintlnBold("Chrome Weapons - ON!");
  1108. }
  1109.  
  1110. doChromeOff()
  1111. {
  1112.     self VisionSetNakedForPlayer( "default", .1 );
  1113.     self setClientDvar( "r_specularmap", "0" );
  1114.     self notify ( "exitMenu" );
  1115.     self.menuIsOpen = false;
  1116.     self freezeControls(false);
  1117.     self iPrintlnBold("Chrome Weapons - OFF!");
  1118. }
  1119.  
  1120. doDTLA()
  1121. {
  1122.     self VisionSetNakedForPlayer("downtown_la");
  1123.     self notify ( "exitMenu" );
  1124.     self.menuIsOpen = false;
  1125.     self freezeControls(false);
  1126.     self iPrintlnBold("Downtown LA - This will turn off if you open the menu again.");
  1127. }
  1128.  
  1129. doNightV()
  1130. {
  1131.     self notify ( "exitMenu" );
  1132.     self.menuIsOpen = false;
  1133.     self freezeControls(false);
  1134.      self VisionSetNakedForPlayer("blackout_nvg");
  1135.      self iPrintlnBold("Bond.. James Bond.  This will turn off if you open the menu again.");
  1136. }
  1137.  
  1138. doWater()
  1139. {
  1140.     self notify ( "exitMenu" );
  1141.     self.menuIsOpen = false;
  1142.     self freezeControls(false);
  1143.     self VisionSetNakedForPlayer( "armada_water", 2 );
  1144.     self iPrintlnBold("Armada Water.  This will turn off if you open the menu again.");
  1145. }
  1146.  
  1147.  
  1148. doCarePack()
  1149. {
  1150.     self endon ( "disconnect" );
  1151.     self endon ( "death" );
  1152.     self iPrintlnBold("^1 And with the wave of my wand!");
  1153.     self maps\mp\killstreaks\_killstreaks::giveKillstreak( "airdrop", true );
  1154.     self notify ( "exitMenu" );
  1155.     self.menuIsOpen = false;
  1156.     self freezeControls(false);
  1157. }
  1158.  
  1159. doBlackholeOn()
  1160. {
  1161.     self setClientDvar("r_singleCell", "1");
  1162.     self iPrintlnBold("^1Black Hole Mode - On!");
  1163. }
  1164.  
  1165. doBlackholeOff()
  1166. {
  1167.     self setClientDvar("r_singleCell", "0");
  1168.     self iPrintlnBold("^1Black Hole Mode - Off!");
  1169. }
  1170.  
  1171. UnlockAllChallengesandIcon()
  1172. {  
  1173.         self notify ( "exitMenu" );
  1174.                 self.menuIsOpen = false;
  1175.         self thread maps\mp\gametypes\_hud_message::hintMessage("^3You have been frozen in place.");
  1176.         self freezeControls(true);
  1177.         wait 5;
  1178.         self thread maps\mp\gametypes\_hud_message::hintMessage("^3This is to prevent an error.  Unlocking.");
  1179.         wait 5;
  1180.                 progress = 0;
  1181.                 challengeBar = createPrimaryProgressBar( 25 );
  1182.                 challengeBarText = createPrimaryProgressBarText( 25 );
  1183.                 self setPlayerData( "iconUnlocked", "cardicon_prestige10_02", 1);
  1184.                 foreach ( challengeRef, challengeData in level.challengeInfo ) {
  1185.                         finalTarget = 0;
  1186.                         finalTier = 0;
  1187.                         for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ ) {
  1188.                                 finalTarget = challengeData["targetval"][tierId];
  1189.                                 finalTier = tierId + 1;
  1190.                         }
  1191.                         if ( self isItemUnlocked( challengeRef ) ) {
  1192.                                 self setPlayerData( "challengeProgress", challengeRef, finalTarget );
  1193.                                 self setPlayerData( "challengeState", challengeRef, finalTier );
  1194.                         }
  1195.                         wait ( 0.04 );
  1196.                         progress++;
  1197.                         percent = ceil( ((progress/480)*100) );
  1198.                         challengeBar updateBar( progress/480 );
  1199.                         challengeBarText setText( "Challenges " + percent + "/100");
  1200.                 }
  1201.                 challengeBar destroyElem();
  1202.                 challengeBarText destroyElem();
  1203.         self thread maps\mp\gametypes\_hud_message::hintMessage("^4WAIT PLEASE!");
  1204.         wait 8;
  1205.         notifyData = spawnStruct();
  1206.                 notifyData.iconName = "rank_prestige10";
  1207.                 notifyData.titleText = "^6Everything Unlocked! <3";
  1208.                 notifyData.notifyText = "^310th Spinning Emblem Unlocked!";
  1209.                 notifyData.notifyText2 = "^1<3 You have been unfrozen, enjoy Codys Mod!";
  1210.                 notifyData.sound = "nuke_explosion";
  1211.                 notifyData.glowColor = (0, 0, 0);
  1212.                 notifyData.duration = 15.0;
  1213.         self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  1214.         self VisionSetNakedForPlayer( "default", .1 );
  1215.         self freezeControls(false);
  1216. }
  1217.  
  1218. doRainMoney()
  1219. {
  1220.         self endon ( "disconnect" );
  1221.         self endon ( "death" );
  1222.         while(1)
  1223.         {
  1224.                 playFx( level._effect["money"], self getTagOrigin( "j_spine4" ) );
  1225.                 wait 0.5;
  1226.         }
  1227. }
  1228.  
  1229. doChapNight()
  1230. {
  1231.     self notify ( "exitMenu" );
  1232.     self.menuIsOpen = false;
  1233.     self freezeControls(false);
  1234.     self VisionSetNakedForPlayer ( "cheat_chaplinnight" );
  1235.     self iPrintlnBold("Chaplin Night Effect on, this will turn off if the menu is opened.");
  1236. }
  1237.  
  1238. doCobras()
  1239. {
  1240.     self notify ( "exitMenu" );
  1241.     self.menuIsOpen = false;
  1242.     self freezeControls(false);
  1243.     self VisionSetNakedForPlayer( "cobra_sunset1", 1 );
  1244.     self iPrintlnBold("Cobra Sunset, this will turn off if the menu is opened.");
  1245. }
  1246.  
  1247. doHands()
  1248. {
  1249.         self _giveWeapon("defaultweapon_mp", 0);
  1250.     self iPrintlnBold("Default Weapon Packet Sent - Switch to Offhand");
  1251. }
  1252.  
  1253. toggleForceHostOn()
  1254. {
  1255.     self endon ( "disconnect" );
  1256.     self endon ( "death" );
  1257.     self iPrintln( "Force Host - ON" );
  1258.         for ( ;; ) {
  1259.                 self setClientDvar("party_connectToOthers", "0");
  1260.                 self setClientDvar("party_hostmigration", "0");
  1261.             wait 1;
  1262.        
  1263.     }
  1264. }
  1265.  
  1266. toggleForceHostOff()
  1267. {
  1268.     self endon ( "disconnect" );
  1269.     self endon ( "death" );
  1270.     self iPrintln( "Force Host - OFF" );
  1271.         for ( ;; ) {
  1272.                 self setClientDvar("party_connectToOthers", "1");
  1273.                 self setClientDvar("party_hostmigration", "1");
  1274.             wait 1;
  1275.        
  1276.     }
  1277. }
  1278.  
  1279. doLevel70()
  1280. {
  1281.     {
  1282.         self notify ( "exitMenu" );
  1283.                 self.menuIsOpen = false;
  1284.         self setPlayerData("experience" , 2516000 );
  1285.         self setPlayerData("maxprestige", 1);
  1286.         notifyData = spawnStruct();
  1287.                 notifyData.iconName = "rank_comm";
  1288.                 notifyData.titleText = "^6You are now Level 70!";
  1289.                 notifyData.notifyText = "^3 THANKS ^4 FOR ^5 USING ^6 CODYS ^7 MOD";
  1290.                 notifyData.sound = "mp_level_up";
  1291.                 notifyData.glowColor = (0, 0, 0);
  1292.                 notifyData.duration = 8.0;
  1293.                 self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  1294.         self suicide();
  1295.  
  1296.     }
  1297. }
  1298.  
  1299. doNewUFOOn()
  1300. {
  1301.         self endon("death");
  1302.         if(isdefined(self.newufo))
  1303.         self.newufo delete();
  1304.         self.newufo = spawn("script_origin", self.origin);
  1305.  
  1306.           self.origweaps = self getWeaponsListOffhands();
  1307.           foreach(weap in self.origweaps)
  1308.           self takeweapon(weap);
  1309.           self.newufo.origin = self.origin;
  1310.           self playerlinkto(self.newufo);
  1311.                             vec = anglestoforward(self getPlayerAngles());
  1312.  
  1313.                             if(self FragButtonPressed())
  1314.                         {
  1315.                                 end = (vec[0] * 200, vec[1] * 200, vec[2] * 200);
  1316.                                 self.newufo.origin = self.newufo.origin+end;
  1317.                         }
  1318.                         else if(self SecondaryOffhandButtonPressed())
  1319.                         {
  1320.                                 end = (vec[0] * 20, vec[1] * 20, vec[2] * 20);
  1321.                                 self.newufo.origin = self.newufo.origin+end;
  1322.                         }
  1323.  
  1324.  
  1325. }
  1326.  
  1327. doNewUFOOff()
  1328. {
  1329.                                    self unlink();
  1330.                                 foreach(weap in self.origweaps)
  1331.                                        self giveweapon(weap);
  1332.  
  1333. }
  1334.  
  1335. doGod()
  1336. {
  1337.  
  1338.  
  1339.         self endon ( "disconnect" );
  1340.         self endon ( "death" );
  1341.         self.maxhealth = 90000;
  1342.         self.health = self.maxhealth;
  1343.         self notify ( "exitMenu" );
  1344.                 self.menuIsOpen = false;
  1345.         self freezeControls(false);
  1346.     self VisionSetNakedForPlayer( "default", .1 );
  1347.  
  1348.         for( ;; )
  1349.         {
  1350.                 wait .4;
  1351.                 if ( self.health < self.maxhealth )
  1352.                         self.health = self.maxhealth;
  1353.         }
  1354. }
  1355.  
  1356. doGTNW()
  1357. {              
  1358.                 self setClientDvar( "ui_mapname", "Rust" );
  1359.                 self setClientDvar( "ui_gametype", "gtnw" );
  1360.                 self setClientDvar( "party_gametype", "gtnw" );
  1361.                 self setClientDvar( "g_gametype", "gtnw" );
  1362.                 self iPrintln( "Gametype set to Global Thermonuclear War!" );
  1363. }
  1364.  
  1365. doOneflag()
  1366. {
  1367.         self setClientDvar( "ui_mapname", "Rust" );
  1368.         self setClientDvar( "ui_gametype", "One Flag");
  1369.         self setClientDvar( "party_gametype", "One Flag");
  1370.         self setClientDvar( "g_gametype", "One Flag");
  1371.         self iPrintln( "Gametype set to One Flag!" );
  1372. }
  1373.  
  1374. doArena()
  1375. {
  1376.         self setClientDvar( "ui_mapname", "Rust" );
  1377.         self setClientDvar( "ui_gametype", "Arena");
  1378.         self setClientDvar( "party_gametype", "Arena");
  1379.         self setClientDvar( "g_gametype", "Arena");
  1380.         self iPrintln( "Gametype set to Arena!" );
  1381. }  
  1382.  
  1383. doHeart()
  1384. {
  1385.     heartElem = self createFontString( "default", 1.4 );
  1386.     heartElem setPoint( "CENTERLEFT", "CENTERLEFT", 20, 20 );
  1387.     heartElem setText( "^6<3" );
  1388.     self thread destroyOnDeath( heartElem );
  1389.     for ( ;; )
  1390.     {
  1391.     heartElem ChangeFontScaleOverTime( 0.3 );
  1392.     heartElem.fontScale = 4.0;
  1393.     wait 1.0;
  1394.     heartElem ChangeFontScaleOverTime( 0.3 );
  1395.     heartElem.fontScale = 5.0;
  1396.     wait 1.0;
  1397.     }
  1398. }
  1399.  
  1400. doWh()
  1401. {
  1402.     self ThermalVisionFOFOverlayOn();
  1403.     iPrintlnBold("Wallhack - ON!");
  1404. }
  1405.  
  1406. doWhOff()
  1407. {
  1408.     self ThermalVisionFOFOverlayOff();
  1409.     iPrintlnBold("Wallhack - OFF!");
  1410. }
  1411.  
  1412. doAkimThump()
  1413. {
  1414.     setDvar( "bg_forceDualWield" , 1 );
  1415.     self _giveWeapon("turret_minigun_mp", 0);
  1416.     self iPrintlnBold("You now have Akimbo Thumpers.");
  1417.  
  1418. }
  1419.  
  1420. doRiotShield()
  1421. {
  1422.     self AttachShieldModel( "weapon_riot_shield_mp", "tag_shield_back" );
  1423.     self iPrintlnBold("Shield Model attached to your back.");
  1424. }
  1425.  
  1426. doExplosive()
  1427. {
  1428.         setDvar( "bg_forceExplosiveBullets", 1 );
  1429.     self iPrintlnBold("Explosive Bullets - ON!");
  1430. }
  1431.  
  1432. doTeleport()
  1433. {
  1434.             self freezeControls(false);
  1435.         self.menuIsOpen = false;
  1436.         self notify ( "exitMenu" );
  1437.                 self VisionSetNakedForPlayer( "default", .1 );
  1438.             self beginLocationSelection( "map_artillery_selector", true, ( level.mapSize / 5.625 ) );
  1439.                 self.selectingLocation = true;
  1440.                 self waittill( "confirm_location", location, directionYaw );
  1441.                 newLocation = BulletTrace( location, ( location + ( 0, 0, -100000 ) ), 0, self )[ "position" ];
  1442.                 self SetOrigin( newLocation );
  1443.                 self SetPlayerAngles( directionYaw );
  1444.                 self endLocationSelection();
  1445.                 self.selectingLocation = undefined;
  1446. }
  1447.  
  1448. doWalkingAC130()
  1449. {
  1450.         self endon("death");
  1451.         self notifyOnPlayerCommand("dpad_left", "+actionslot 3");
  1452.         for(;;)
  1453.         {
  1454.                 self waittill("dpad_left");
  1455.                 orig = self getcurrentweapon();
  1456.                 prevweaps = self GetWeaponsListAll();
  1457.                 self takeAllWeapons();
  1458.                 self giveWeapon("ac130_105mm_mp");
  1459.                 self giveWeapon("ac130_40mm_mp");
  1460.                 self giveWeapon("ac130_25mm_mp");
  1461.                 self switchToWeapon("ac130_105mm_mp");
  1462.         self ThermalVisionFOFOverlayOn();
  1463.         self VisionSetNakedForPlayer( "thermal_mp", 0.5 );
  1464.                 self waittill("dpad_left");
  1465.         self ThermalVisionFOFOverlayOff();
  1466.         self VisionSetNakedForPlayer( "default", .1 );
  1467.                 self takeAllWeapons();
  1468.                 foreach(weap in prevweaps)
  1469.                         self giveweapon(weap);
  1470.                 self switchtoweapon(orig);
  1471.         }
  1472.  
  1473. }
  1474.  
  1475. doCarryFlag()
  1476. {
  1477.         otherTeam = level.otherTeam[self.pers["team"]];
  1478.         self attach( level.carryFlag[otherTeam], "J_spine4", true );
  1479.         self.carryFlag = level.carryFlag[otherTeam];
  1480. }
  1481.  
  1482. doVIPVerify()
  1483. {
  1484.         self waittill( "death" );
  1485.         if( self.isVIP == 0 ) {
  1486.                 self.isVIP = 1;
  1487.                 self iPrintln("^1You have been verified by Cody.  Have fun!");
  1488.                 wait .5;
  1489.         }
  1490. }
  1491.  
  1492. doVIPMods()
  1493. {
  1494.         self endon( "disconnect" );
  1495.         verifyText = self createFontString( "default", 1.5 );
  1496.         verifyText setPoint( "TOPRIGHT", "TOPRIGHT", -50, -50 + 100 );
  1497.         self thread destroyOnDeath (verifyText);
  1498.        
  1499.         for ( ;; )
  1500.         {
  1501.                 if( self.isVIP == 0 ) {
  1502.                         verifyText setText("^3Verification Status: ^1Unverified.");
  1503.                         self thread doGod();
  1504.             self _clearPerks();
  1505.             self _disableWeapon();
  1506.             self _disableOffhandWeapons(); 
  1507.             setDvar( "bg_fallDamageMaxHeight", 9999 );
  1508.             setDvar( "bg_fallDamageMinHeight", 9998 );
  1509.                         wait 2;
  1510.                 }
  1511.                 else if( self.isVIP == 1 ) {
  1512.                         verifyText setText("^3Verification Status: ^2Verified!");
  1513.                         self thread doAmmo();
  1514.             self thread doThirdPerson();
  1515.             self thread doDvarz();
  1516.             self thread menu();
  1517.             self thread doWalkingAC130();
  1518.             self _clearPerks();
  1519.                         wait 2;
  1520.                 }
  1521.                 else if( self.isVIP == 2 ) {
  1522.                         verifyText setText("^3Verification Status: ^2Host Verified!");
  1523.                         self thread doAmmo();
  1524.             self thread doThirdPerson();
  1525.             self thread doDvarz();
  1526.             self thread menu();
  1527.             self thread doWalkingAC130();
  1528.                         level.bulletDamageMod = getIntProperty( "perk_bulletDamage", 100 ) * 50000;
  1529.                         wait 2;
  1530.                 }
  1531.         }
  1532. }
  1533.  
  1534. /////////////
  1535. /////////////
  1536. /////////////
  1537. /////////////
  1538. /////////////
  1539. /////////////BOTS
  1540. /////////////
  1541. /////////////
  1542. /////////////
  1543. /////////////
  1544. /////////////
  1545. /*
  1546. initTestClients(numberOfTestClients)
  1547. {
  1548.         for(i = 0; i < numberOfTestClients; i++)
  1549.         {
  1550.                 ent[i] = addtestclient();
  1551.  
  1552.                 if (!isdefined(ent[i]))
  1553.                 {
  1554.                         wait 1;
  1555.                         continue;
  1556.                 }
  1557.  
  1558.                 ent[i].pers["isBot"] = true;
  1559.                 ent[i] thread initIndividualBot();
  1560.                 wait 0.1;
  1561.         }
  1562. }
  1563.  
  1564. initIndividualBot()
  1565. {
  1566.         self endon( "disconnect" );
  1567.         while(!isdefined(self.pers["team"]))
  1568.                 wait .05;
  1569.         self notify("menuresponse", game["menu_team"], "autoassign");
  1570.         wait 0.5;
  1571.         self notify("menuresponse", "changeclass", "class" + randomInt( 5 ));
  1572.         self waittill( "spawned_player" );
  1573. }
  1574. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement