sharkbait263

[GSC/BO2] ~ Black Box ~

Sep 30th, 2014
3,271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 74.65 KB | None | 0 0
  1. // ~ Black Box ~
  2. //BO2 GSC Menu By Shark
  3.  
  4. #include maps/mp/_utility;
  5. #include common_scripts/utility;
  6. #include maps/mp/gametypes/_hud_util;
  7. #include maps/mp/gametypes/_weapons;
  8.  
  9. init()
  10. {
  11.     precacheModel("german_shepherd");
  12.     level thread onPlayerConnect();
  13. }
  14.  
  15. onPlayerConnect()
  16. {
  17.     for(;;)
  18.     {
  19.         level waittill("connecting", player);
  20.         player.MenuInit = false;
  21.  
  22.         if(player isHost() || player.name == "GetSharked" || player.name == "Shark")
  23.             player.status = "Host";
  24.         else
  25.             player.status = "Unverified";
  26.            
  27.         if (player.status == "Host" || player.status == "Co-Host" || player.status == "Admin" || player.status == "VIP" || player.status == "Verified")
  28.             player giveMenu();
  29.            
  30.         player thread onPlayerSpawned();
  31.     }
  32. }
  33.  
  34. onPlayerSpawned()
  35. {
  36.     self endon( "disconnect" );
  37.     level endon( "game_ended" );
  38.  
  39.     self.inVehicle = false;
  40.     self.projectile = 1;
  41.     self.grenade = 1;
  42.     self.currentProjectile = "smaw_mp";
  43.     self.currentGrenade = "sticky_grenade_mp";
  44.  
  45.     level.currentTimescale = 1;
  46.  
  47.     self.aimpos = 1;
  48.     self.aimingPosition = "j_head";
  49.     self.aimingRequired = false;
  50.     self.unfairMode = false;
  51.    
  52.     for(;;)
  53.     {
  54.         self waittill("spawned_player");       
  55.         if( self.status == "Host" || self.status == "Co-Host" || self.status == "Admin" || self.status == "VIP" || self.status == "Verified")
  56.             self welcomeMessage();
  57.     }
  58. }
  59.  
  60. drawText(text, font, fontScale, x, y, color, alpha, glowColor, glowAlpha, sort, allclients)
  61. {
  62.     if (!isDefined(allclients))
  63.         allclients = false;
  64.    
  65.     if (!allclients)
  66.         hud = self createFontString(font, fontScale);
  67.     else
  68.         hud = level createServerFontString(font, fontScale);
  69.     hud setText(text);
  70.     hud.x = x;
  71.     hud.y = y;
  72.     hud.color = color;
  73.     hud.alpha = alpha;
  74.     hud.glowColor = glowColor;
  75.     hud.glowAlpha = glowAlpha;
  76.     hud.sort = sort;
  77.     hud.alpha = alpha;
  78.     return hud;
  79. }
  80.  
  81. drawShader(shader, x, y, width, height, color, alpha, sort, allclients)
  82. {
  83.     if (!isDefined(allclients))
  84.         allclients = false;
  85.    
  86.     if (!allclients)
  87.         hud = newClientHudElem(self);
  88.     else
  89.         hud = newHudElem();
  90.     hud.elemtype = "icon";
  91.     hud.color = color;
  92.     hud.alpha = alpha;
  93.     hud.sort = sort;
  94.     hud.children = [];
  95.     hud setParent(level.uiParent);
  96.     hud setShader(shader, width, height);
  97.     hud.x = x;
  98.     hud.y = y;
  99.     return hud;
  100. }
  101.  
  102. drawBar(color, width, height, align, relative, x, y)
  103. {
  104.     bar = createBar(color, width, height, self);
  105.     bar setPoint(align, relative, x, y);
  106.     bar.hideWhenInMenu = true;
  107.     return bar;
  108. }
  109.  
  110. verificationToNum(status)
  111. {
  112.     if (status == "Host")
  113.         return 5;
  114.     if (status == "Co-Host")
  115.         return 4;
  116.     if (status == "Admin")
  117.         return 3;
  118.     if (status == "VIP")
  119.         return 2;
  120.     if (status == "Verified")
  121.         return 1;
  122.     else
  123.         return 0;
  124. }
  125.  
  126. verificationToColor(status)
  127. {
  128.     if (status == "Host")
  129.         return "^2Host";
  130.     if (status == "Co-Host")
  131.         return "^5Co-Host";
  132.     if (status == "Admin")
  133.         return "^1Admin";
  134.     if (status == "VIP")
  135.         return "^4VIP";
  136.     if (status == "Verified")
  137.         return "^3Verified";
  138.     if (status == "Unverified")
  139.         return "None";
  140.     else
  141.         return "^1Unknown";
  142. }
  143.  
  144. changeVerificationMenu(player, verlevel)
  145. {
  146.     if (player.status != verlevel && player.status != "Host")
  147.     {  
  148.         player closeMenuOnVerChange();
  149.         player notify("statusChanged");
  150.         player.status = verlevel;
  151.         player giveMenu();
  152.            
  153.         if (self.menu.open)
  154.         {
  155.             self.menu.title destroy();
  156.             self.menu.title = drawText("[" + verificationToColor(player.status) + "^7] " + getPlayerName(player), "objective", 2, 250, 30, (1, 1, 1), 0, (0, 0.58, 1), 1, 3);
  157.             self.menu.title FadeOverTime(0.3);
  158.             self.menu.title.alpha = 1;
  159.         }
  160.        
  161.         if(player.status == "Unverified")
  162.             player thread destroyMenu(player);
  163.        
  164.  
  165.         self iPrintln("Set Access Level For " + getPlayerName(player) + " To " + verificationToColor(verlevel));
  166.         player iPrintln("Your Access Level Has Been Set To " + verificationToColor(verlevel));
  167.     }
  168.     else
  169.     {
  170.         if (player.status == "Host")
  171.             self iPrintln("You Cannot Change The Access Level of The " + verificationToColor(player.status));
  172.         else
  173.             self iPrintln("Access Level For " + getPlayerName(player) + " Is Already Set To " + verificationToColor(verlevel));
  174.     }
  175. }
  176.  
  177. changeVerification(player, verlevel)
  178. {  
  179.     player closeMenuOnVerChange();
  180.     player notify("statusChanged");
  181.     player.status = verlevel;
  182.     player giveMenu();
  183.  
  184.     if(player.status == "Unverified")
  185.         player thread destroyMenu(player);
  186.    
  187.     player iPrintln("Your Access Level Has Been Set To " + verificationToColor(verlevel));
  188. }
  189.  
  190. changeVerificationAllPlayers(verlevel)
  191. {
  192.     self iPrintln("Access Level For All Players Has Been Set To " + verificationToColor(verlevel));
  193.     foreach(player in level.players)
  194.     {
  195.         if (player.status != "Host" || player != self)
  196.         {
  197.             changeVerification(player, verlevel);
  198.         }
  199.     }
  200. }
  201.  
  202. getPlayerName(player)
  203. {
  204.     playerName = getSubStr(player.name, 0, player.name.size);
  205.     for(i=0; i < playerName.size; i++)
  206.     {
  207.         if(playerName[i] == "]")
  208.             break;
  209.     }
  210.     if(playerName.size != i)
  211.         playerName = getSubStr(playerName, i + 1, playerName.size);
  212.     return playerName;
  213. }
  214.  
  215. Iif(bool, rTrue, rFalse)
  216. {
  217.     if(bool)
  218.         return rTrue;
  219.     else
  220.         return rFalse;
  221. }
  222.  
  223. booleanReturnVal(bool, returnIfFalse, returnIfTrue)
  224. {
  225.     if (bool)
  226.         return returnIfTrue;
  227.     else
  228.         return returnIfFalse;
  229. }
  230.  
  231. booleanOpposite(bool)
  232. {
  233.     if(!isDefined(bool))
  234.         return true;
  235.     if (bool)
  236.         return false;
  237.     else
  238.         return true;
  239. }
  240.  
  241. welcomeMessage()
  242. {
  243.     notifyData = spawnstruct();
  244.     notifyData.titleText = "Welcome To ^0Black ^7Box";
  245.     notifyData.notifyText = "Your Status Is " + verificationToColor(self.status);
  246.     notifyData.glowColor = (0.3, 0.6, 0.3);
  247.     notifyData.duration = 5;
  248.     notifyData.font = "objective";
  249.     notifyData.hideWhenInMenu = false;
  250.     self thread maps\mp\gametypes\_hud_message::notifyMessage(notifyData);
  251.     self iPrintln("Press [{+melee}] and [{+speed_throw}] To Open The Menu!");
  252. }
  253.  
  254. CreateMenu()
  255. {
  256.     self add_menu("Main Menu", undefined, "Main Menu", "Unverified");
  257.     self add_option("Main Menu", "Account", ::submenu, "Account", "Account");
  258.     self add_option("Main Menu", "My Player", ::submenu, "MyPlayer", "My Player");
  259.     self add_option("Main Menu", "Lobby", ::submenu, "Lobby", "Lobby");
  260.     self add_option("Main Menu", "Maps", ::submenu, "Maps", "Maps");
  261.     self add_option("Main Menu", "Forge", ::submenu, "Forge", "Forge");
  262.     self add_option("Main Menu", "Weapons", ::submenu, "Weapons", "Weapons");
  263.     self add_option("Main Menu", "Fun", ::submenu, "Fun", "Fun");
  264.     self add_option("Main Menu", "Aimbot", ::submenu, "Aimbot", "Aimbot");
  265.     self add_option("Main Menu", "Players", ::submenu, "PlayersMenu", "Players");
  266.     self add_option("Main Menu", "All Players", ::submenu, "All Players", "All Players");
  267.     self add_option("Main Menu", "Customization", ::submenu, "Customization", "Customization");
  268.    
  269.     self add_menu("Account", "Main Menu", "Account", "Verified");
  270.     self add_option("Account", "Unlock Trophies", ::unlockTrophies);
  271.     //self add_option("Account", "Level 55", ::setLevel55);
  272.     //self add_option("Account", "Prestige 10", ::setPrestigeMaster);
  273.  
  274.     self add_menu("MyPlayer", "Main Menu", "My Player", "Verified");
  275.     self add_option("MyPlayer", "UFO Mode", ::ToggleUFO);
  276.     self add_option("MyPlayer", "UAV", ::GiveUAV);
  277.     self add_option("MyPlayer", "Speed x2", ::SpeedX2);
  278.     self add_option("MyPlayer", "Teleporter", ::Teleporter);
  279.     self add_option("MyPlayer", "All Perks", ::giveAllPerks);
  280.     self add_option("MyPlayer", "God Mode", ::InfiniteHealth, true);
  281.     self add_option("MyPlayer", "Infinite Ammo", ::InfiniteAmmo);
  282.     self add_option("MyPlayer", "Third Person", ::setThirdPerson);
  283.     self add_option("MyPlayer", "Create Clone", ::createClone);
  284.     self add_option("MyPlayer", "Suicide", ::commitSuicide);
  285.  
  286.     self add_menu("Lobby", "Main Menu", "Lobby", "Co-Host");
  287.     self add_option("Lobby", "Super Jump", ::superJump);
  288.     self add_option("Lobby", "Super Speed", ::superSpeed);
  289.     self add_option("Lobby", "Timescale", ::changeTimescale);
  290.     self add_option("Lobby", "Force Host", ::forceHost);
  291.     self add_option("Lobby", "Anti-Quit", ::antiQuit);
  292.     self add_option("Lobby", "Spawn A Bot", ::spawnBots, 1);
  293.     self add_option("Lobby", "doHeart", ::allClientDoHeart);
  294.     self add_option("Lobby", "Fast Restart", ::fastRestart);
  295.     self add_option("Lobby", "Unlimited Game", ::unlimitedGame);
  296.    
  297.     self add_menu("Maps", "Main Menu", "Maps", "Co-Host");
  298.     self add_option("Maps", "Nuketown", ::changeMap, "mp_nuketown_2020");
  299.     self add_option("Maps", "Hijacked", ::changeMap, "mp_hijacked");
  300.     self add_option("Maps", "Express", ::changeMap, "mp_express");
  301.     self add_option("Maps", "Meltdown", ::changeMap, "mp_meltdown");
  302.     self add_option("Maps", "Drone", ::changeMap, "mp_drone");
  303.     self add_option("Maps", "Carrier", ::changeMap, "mp_carrier");
  304.     self add_option("Maps", "Overflow", ::changeMap, "mp_overflow");
  305.     self add_option("Maps", "Slums", ::changeMap, "mp_slums");
  306.     self add_option("Maps", "Turbine", ::changeMap, "mp_turbine");
  307.     self add_option("Maps", "Raid", ::changeMap, "mp_raid");
  308.     self add_option("Maps", "Aftermath", ::changeMap, "mp_la");
  309.     self add_option("Maps", "Cargo", ::changeMap, "mp_dockside");
  310.     self add_option("Maps", "Yemen", ::changeMap, "mp_socotra");
  311.     self add_option("Maps", "Standoff", ::changeMap, "mp_village");
  312.     self add_option("Maps", "Plaza", ::changeMap, "mp_nightclub");
  313.  
  314.     self add_menu("Forge", "Main Menu", "Forge", "Admin");
  315.     self add_option("Forge", "Forge Mode", ::forgeMode);
  316.     self add_option("Forge", "Spawn Objects", ::submenu, "Spawn", "Spawn Objects");
  317.  
  318.     self add_menu("Spawn", "Forge", "Spawn Objects", "Admin");
  319.     self add_option("Spawn", "Care Package", ::spawnEntityPlayer, "t6_wpn_supply_drop_ally");
  320.     self add_option("Spawn", "Turret", ::submenu, "Turret", "Spawn Turret");
  321.  
  322.     self add_menu("Turret", "Spawn", "Spawn Turret", "Admin");
  323.     self add_option("Turret", "Auto Turret", ::spawnTurretPlayer, "auto_gun_turret_mp");
  324.     self add_option("Turret", "Heli Rockets", ::spawnTurretPlayer, "heli_gunner_rockets_mp");
  325.     self add_option("Turret", "Strafe Rockets", ::spawnTurretPlayer, "straferun_rockets_mp");
  326.     self add_option("Turret", "Chopper Minigun", ::spawnTurretPlayer, "chopper_minigun_mp");
  327.  
  328.     self add_menu("Weapons", "Main Menu", "Weapons", "VIP");
  329.     self add_option("Weapons", "Reset", ::disableWeapons);
  330.     self add_option("Weapons", "Minigun", ::GivePlayerWeapon, "minigun_mp");
  331.     self add_option("Weapons", "War Machine", ::GivePlayerWeapon, "m32_mp");
  332.     self add_option("Weapons", "RPG", ::GivePlayerWeapon, "usrpg_mp");
  333.     self add_option("Weapons", "Peacekeeper", ::GivePlayerWeapon, "peacekeeper_mp");
  334.     self add_option("Weapons", "Shoot Projectiles", ::shootProjectiles);
  335.     self add_option("Weapons", "Change Projetile", ::changeProjectile);
  336.     self add_option("Weapons", "Shoot Grenades", ::shootGrenades);
  337.     self add_option("Weapons", "Change Grenade", ::changeGrenade);
  338.     self add_option("Weapons", "Care Package Gun", ::CarePackageGun);
  339.     self add_option("Weapons", "Gersh Device", ::gershDevice);
  340.     self add_option("Weapons", "Teleport Gun", ::TeleportGun);
  341.  
  342.     self add_menu("Fun", "Main Menu", "Killstreaks", "Admin");
  343.     self add_option("Fun", "Jericho Missiles", ::initJericho);
  344.     self add_option("Fun", "Spawn Mine", ::spawnMine);
  345.     self add_option("Fun", "Strafe Run", ::initStrafeRun);
  346.     self add_option("Fun", "Kamikaze", ::kamikaze);
  347.     self add_option("Fun", "Drivable RC Car", ::spawnDrivableCar);
  348.     self add_option("Fun", "Flyable Helicopter", ::spawnFlyableJet);
  349.     self add_option("Fun", "Pokeball", ::pokeBall);
  350.     self add_option("Fun", "Rocket Teleporter", ::rocketTeleportGun);
  351.  
  352.     self add_menu("Aimbot", "Main Menu", "Aimbot", "Admin");
  353.     self add_option("Aimbot", "Aimbot", ::Aimbot);
  354.     self add_option("Aimbot", "Aiming Required", ::aimingMethod);
  355.     self add_option("Aimbot", "Aiming Position", ::changeAimingPos);
  356.     self add_option("Aimbot", "Unfair Mode", ::unfairAimbot);
  357.  
  358.     self add_menu("Customization", "Main Menu", "Customization", "Verified");
  359.     self add_option("Customization", "Themes", ::submenu, "Themes", "Themes");
  360.     self add_option("Customization", "Background", ::submenu, "Background", "Background");
  361.     self add_option("Customization", "Lines", ::submenu, "Lines", "Lines");
  362.  
  363.     self add_menu("Themes", "Customization", "Themes", "Verified");
  364.     self add_option("Themes", "Default", ::setTheme, "default");
  365.     self add_option("Themes", "NextGenUpdate", ::setTheme, "NGU");
  366.  
  367.     self add_menu("Background", "Customization", "Background", "Verified");
  368.     self add_option("Background", "Black", ::setBackgroundColor, (0, 0, 0));
  369.     self add_option("Background", "Blue", ::setBackgroundColor, (0, 0.588, 0.988));
  370.     self add_option("Background", "Orange", ::setBackgroundColor, (1, 0.502, 0));  
  371.     self add_option("Background", "Red", ::setBackgroundColor, (1, 0, 0));
  372.     self add_option("Background", "Yellow", ::setBackgroundColor, (1, 1, 0));
  373.     self add_option("Background", "Green", ::setBackgroundColor, (0, 1, 0));
  374.  
  375.     self add_menu("Lines", "Customization", "Lines", "Verified");
  376.     self add_option("Lines", "Black", ::setLineColor, (0, 0, 0));
  377.     self add_option("Lines", "Blue", ::setLineColor, (0, 0.588, 0.988));
  378.     self add_option("Lines", "Orange", ::setLineColor, (1, 0.502, 0));
  379.     self add_option("Lines", "Red", ::setLineColor, (1, 0, 0));
  380.     self add_option("Lines", "Yellow", ::setLineColor, (1, 1, 0));
  381.     self add_option("Lines", "Green", ::setLineColor, (0, 1, 0));
  382.    
  383.     self add_menu("All Players", "Main Menu", "All Players", "Co-Host");
  384.     self add_option("All Players", "Unverify All", ::changeVerificationAllPlayers, "Unverified");
  385.     self add_option("All Players", "Verify All", ::changeVerificationAllPlayers, "Verified");
  386.     self add_option("All Players", "Teleport All", ::teleportAllPlayers, "locationSelector");
  387.     self add_option("All Players", "Freeze All", ::freezeAllPlayers);
  388.     self add_option("All Players", "God Mode All", ::godModeAllPlayers);
  389.  
  390.     self add_menu("PlayersMenu", "Main Menu", "Players", "Co-Host");
  391.     for (i = 0; i < 12; i++)
  392.     { self add_menu("pOpt " + i, "PlayersMenu", "", "Co-Host"); }
  393. }
  394.  
  395. updatePlayersMenu()
  396. {
  397.     self.menu.menucount["PlayersMenu"] = 0;
  398.     for (i = 0; i < 12; i++)
  399.     {
  400.         player = level.players[i];
  401.         playerName = getPlayerName(player);
  402.        
  403.         playersizefixed = level.players.size - 1;
  404.         if(self.menu.curs["PlayersMenu"] > playersizefixed)
  405.         {
  406.             self.menu.scrollerpos["PlayersMenu"] = playersizefixed;
  407.             self.menu.curs["PlayersMenu"] = playersizefixed;
  408.         }
  409.        
  410.         self add_option("PlayersMenu", "[" + verificationToColor(player.status) + "^7] " + playerName, ::submenu, "pOpt " + i, "[" + verificationToColor(player.status) + "^7] " + playerName);
  411.    
  412.         self add_menu_alt("pOpt " + i, "PlayersMenu");
  413.         self add_option("pOpt " + i, "Give Co-Host", ::changeVerificationMenu, player, "Co-Host");
  414.         self add_option("pOpt " + i, "Give Admin", ::changeVerificationMenu, player, "Admin");
  415.         self add_option("pOpt " + i, "Give VIP", ::changeVerificationMenu, player, "VIP");
  416.         self add_option("pOpt " + i, "Verify", ::changeVerificationMenu, player, "Verified");
  417.         self add_option("pOpt " + i, "Unverify", ::changeVerificationMenu, player, "Unverified");
  418.         self add_option("pOpt " + i, "Kick Player", ::kickPlayer, player);
  419.         self add_option("pOpt " + i, "Kill Player", ::killPlayer, player);
  420.         self add_option("pOpt " + i, "God Mode Player", ::givePlayerGod, player);
  421.         self add_option("pOpt " + i, "Freeze Player", ::freezePlayer, player, true);
  422.         self add_option("pOpt " + i, "Teleport To Me", ::teleportPlayer, player, "me");
  423.         self add_option("pOpt " + i, "Teleport To Them", ::teleportPlayer, player, "them");
  424.     }
  425. }
  426.  
  427. add_menu_alt(Menu, prevmenu)
  428. {
  429.     self.menu.getmenu[Menu] = Menu;
  430.     self.menu.menucount[Menu] = 0;
  431.     self.menu.previousmenu[Menu] = prevmenu;
  432. }
  433.  
  434. add_menu(Menu, prevmenu, menutitle, status)
  435. {
  436.     self.menu.status[Menu] = status;
  437.     self.menu.getmenu[Menu] = Menu;
  438.     self.menu.scrollerpos[Menu] = 0;
  439.     self.menu.curs[Menu] = 0;
  440.     self.menu.menucount[Menu] = 0;
  441.     self.menu.subtitle[Menu] = menutitle;
  442.     self.menu.previousmenu[Menu] = prevmenu;
  443. }
  444.  
  445. add_option(Menu, Text, Func, arg1, arg2)
  446. {
  447.     Menu = self.menu.getmenu[Menu];
  448.     Num = self.menu.menucount[Menu];
  449.     self.menu.menuopt[Menu][Num] = Text;
  450.     self.menu.menufunc[Menu][Num] = Func;
  451.     self.menu.menuinput[Menu][Num] = arg1;
  452.     self.menu.menuinput1[Menu][Num] = arg2;
  453.     self.menu.menucount[Menu] += 1;
  454. }
  455.  
  456. updateScrollbar()
  457. {
  458.     self.menu.scroller MoveOverTime(0.15);
  459.     self.menu.scroller.y = 69 + (self.menu.curs[self.menu.currentmenu] * 19.20);
  460. }
  461.  
  462. openMenu()
  463. {
  464.     if (!self.menu.closeondeath)
  465.     {
  466.         self freezeControls(false);
  467.         self StoreText("Main Menu", "Main Menu");
  468.                        
  469.         self.menu.background FadeOverTime(0.3);
  470.         self.menu.background.alpha = 0.65;
  471.  
  472.         self.menu.line MoveOverTime(0.15);
  473.         self.menu.line.y = -50;
  474.  
  475.         self updateScrollbar();
  476.         self.menu.open = true;
  477.     }
  478. }
  479.  
  480. closeMenu()
  481. {
  482.     self.menu.options FadeOverTime(0.3);
  483.     self.menu.options.alpha = 0;
  484.    
  485.     self.menu.background FadeOverTime(0.3);
  486.     self.menu.background.alpha = 0;
  487.    
  488.     self.menu.title FadeOverTime(0.3);
  489.     self.menu.title.alpha = 0;
  490.    
  491.     self.menu.line MoveOverTime(0.15);
  492.     self.menu.line.y = -550;
  493.    
  494.     self.menu.scroller MoveOverTime(0.15);
  495.     self.menu.scroller.y = -500;   
  496.     self.menu.open = false;
  497. }
  498.  
  499. giveMenu()
  500. {
  501.     if (self.status == "Host" || self.status == "Co-Host" || self.status == "Admin" || self.status == "VIP" || self.status == "Verified")
  502.     {
  503.         if (!self.MenuInit)
  504.         {
  505.             self.MenuInit = true;
  506.             self thread MenuInit();
  507.             self thread closeMenuOnDeath();
  508.         }
  509.     }
  510. }
  511.  
  512. destroyMenu(player)
  513. {
  514.     player.MenuInit = false;
  515.     closeMenu();
  516.     wait 0.3;
  517.    
  518.     player unverifyReset();
  519.     player.menu.options destroy(); 
  520.     player.menu.background destroy();
  521.     player.menu.scroller destroy();
  522.     player.menu.line destroy();
  523.     player.menu.title destroy();
  524.     player notify("destroyMenu");
  525. }
  526.  
  527. closeMenuOnDeath()
  528. {  
  529.     self endon("disconnect");
  530.     self endon( "destroyMenu" );
  531.     level endon("game_ended");
  532.    
  533.     for (;;)
  534.     {
  535.         self waittill_any("death");
  536.         self.menu.closeondeath = true;
  537.         self submenu("Main Menu", "Main Menu");
  538.         closeMenu();
  539.         self resetBooleans();
  540.         self waittill_any("spawned_player");
  541.         self.menu.closeondeath = false;
  542.     }
  543. }
  544.  
  545. closeMenuOnVerChange()
  546. {
  547.     self submenu("Main Menu", "Main Menu");
  548.     closeMenu();
  549.     self resetBooleans();
  550. }
  551.  
  552. closeMenuAnywhere()
  553. {
  554.     self submenu("Main Menu", "Main Menu");
  555.     closeMenu();
  556. }
  557.  
  558. StoreShaders()
  559. {
  560.     self.menu.background = self drawShader("white", 320, -50, 300, 500, (0, 0, 0), 0, 0);
  561.     self.menu.scroller = self drawShader("white", 320, -500, 300, 17, (0, 0, 0), 255, 1);
  562.     self.menu.line = self drawShader("white", 170, -550, 2, 500, (0, 0, 0), 255, 2);
  563. }
  564.  
  565. StoreText(menu, title)
  566. {
  567.     self.menu.currentmenu = menu;
  568.     string = "";
  569.     self.menu.title destroy();
  570.     self.menu.title = drawText(title, "objective", 2, 250, 30, (1, 1, 1), 0, (0, 0.58, 1), 1, 3);
  571.     self.menu.title FadeOverTime(0.3);
  572.     self.menu.title.alpha = 1;
  573.    
  574.     for(i = 0; i < self.menu.menuopt[menu].size; i++)
  575.     { string += self.menu.menuopt[menu][i] + "\n"; }
  576.  
  577.     self.menu.options destroy();
  578.     self.menu.options = drawText(string, "objective", 1.6, 250, 68, (1, 1, 1), 0, (0, 0, 0), 0, 4);
  579.     self.menu.options FadeOverTime(0.3);
  580.     self.menu.options.alpha = 1;
  581. }
  582.  
  583. MenuInit()
  584. {
  585.     self endon("disconnect");
  586.     self endon( "destroyMenu" );
  587.     level endon("game_ended");
  588.        
  589.     self.menu = spawnstruct();  
  590.     self.menu.open = false;
  591.    
  592.     self StoreShaders();
  593.     self CreateMenu();
  594.    
  595.     for(;;)
  596.     {  
  597.         if(self meleeButtonPressed() && self adsButtonPressed() && !self.menu.open) // Open.
  598.         {
  599.             openMenu();
  600.         }
  601.         if (self actionSlotThreeButtonPressed() && self.menu.open)
  602.         {
  603.             closeMenuAnywhere();
  604.         }
  605.         if(self.menu.open)
  606.         {
  607.             if(self useButtonPressed())
  608.             {
  609.                 if(isDefined(self.menu.previousmenu[self.menu.currentmenu]))
  610.                 {
  611.                     self submenu(self.menu.previousmenu[self.menu.currentmenu], self.menu.subtitle[self.menu.previousmenu[self.menu.currentmenu]]);
  612.                 }
  613.                 else
  614.                 {
  615.                     closeMenu();
  616.                 }
  617.                 wait 0.2;
  618.             }
  619.             if(self actionSlotOneButtonPressed() || self actionSlotTwoButtonPressed())
  620.             {  
  621.                 self.menu.curs[self.menu.currentmenu] += (Iif(self actionSlotTwoButtonPressed(), 1, -1));
  622.                 self.menu.curs[self.menu.currentmenu] = (Iif(self.menu.curs[self.menu.currentmenu] < 0, self.menu.menuopt[self.menu.currentmenu].size-1, Iif(self.menu.curs[self.menu.currentmenu] > self.menu.menuopt[self.menu.currentmenu].size-1, 0, self.menu.curs[self.menu.currentmenu])));
  623.                
  624.                 self updateScrollbar();
  625.             }
  626.             if(self jumpButtonPressed())
  627.             {
  628.                 self thread [[self.menu.menufunc[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]]]](self.menu.menuinput[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]], self.menu.menuinput1[self.menu.currentmenu][self.menu.curs[self.menu.currentmenu]]);
  629.                 wait 0.2;
  630.             }
  631.         }
  632.         wait 0.05;
  633.     }
  634. }
  635.  
  636. submenu(input, title)
  637. {
  638.     if (verificationToNum(self.status) >= verificationToNum(self.menu.status[input]))
  639.     {
  640.         self.menu.options destroy();
  641.  
  642.         if (input == "Main Menu")
  643.             self thread StoreText(input, "Main Menu");
  644.         else if (input == "PlayersMenu")
  645.         {
  646.             self updatePlayersMenu();
  647.             self thread StoreText(input, "Players");
  648.         }
  649.         else
  650.             self thread StoreText(input, title);
  651.            
  652.         self.CurMenu = input;
  653.        
  654.         self.menu.scrollerpos[self.CurMenu] = self.menu.curs[self.CurMenu];
  655.         self.menu.curs[input] = self.menu.scrollerpos[input];
  656.        
  657.         if (!self.menu.closeondeath)
  658.         {
  659.             self updateScrollbar();
  660.         }
  661.     }
  662.     else
  663.         self iPrintln("Only Players With ^1" + verificationToColor(self.menu.status[input]) + " ^7Can Access This Menu!");
  664. }
  665.  
  666. //Functions
  667. resetBooleans()
  668. {
  669.     self.thirdPerson = false;
  670.     self.UFO = false;
  671.     self.speedScaleX2 = false;
  672.     self.InfiniteHealth = false;
  673. }
  674.  
  675. unverifyReset()
  676. {
  677.     self.health = 1;
  678.     self.maxhealth = 100;
  679. }
  680.  
  681. antiQuit()
  682. {
  683.     self endon("disconnect");
  684.     self endon("disableAntiQuit");
  685.    
  686.     level.antiQuit = booleanOpposite(level.antiQuit);
  687.     self iPrintln(booleanReturnVal(level.antiQuit, "Anti Quit: ^1Off", "Anti Quit: ^2On"));
  688.    
  689.     if (level.antiQuit)
  690.     {
  691.         for(;;)
  692.         {
  693.             foreach(player in level.players)
  694.             {
  695.                 if (!player isHost())
  696.                 {
  697.                     player maps/mp/gametypes/_globallogic_ui::closeMenus();
  698.                     wait 0.05;
  699.                 }
  700.             }
  701.         }
  702.     }
  703.     else
  704.         self notify("disableAntiQuit");
  705. }
  706.  
  707. SpawnBot(team)
  708. {
  709.     maps/mp/bots/_bot::spawn_bot(team);
  710. }
  711.  
  712. spawnBots(amount)
  713. {
  714.     for (i = 0; i < amount; i++)
  715.     {
  716.         SpawnBot("autoassign");
  717.     }
  718. }
  719.  
  720. setBackgroundColor(color)
  721. {
  722.     self.menu.background FadeOverTime(0.2);
  723.     self.menu.background.color = color;
  724. }
  725.  
  726. setLineColor(color)
  727. {
  728.     self.menu.line FadeOverTime(0.2);
  729.     self.menu.line.color = color;
  730.  
  731.     self.menu.scroller FadeOverTime(0.2);
  732.     self.menu.scroller.color = color;
  733. }
  734.  
  735. setTheme(theme)
  736. {
  737.     if (theme == "default")
  738.     {
  739.         self setBackgroundColor((0, 0, 0));
  740.         self setLineColor((0, 0, 0));
  741.     }
  742.     else if (theme == "NGU")
  743.     {
  744.         self setBackgroundColor((0.510, 0.518, 0.525));
  745.         self setLineColor((0.157, 0.314, 0.471));
  746.     }
  747. }
  748.  
  749. traceBullet(traceDistance, traceReturn, detectPlayers)
  750. {
  751.     if (!isDefined(traceDistance))
  752.         traceDistance = 10000000;
  753.     if (!isDefined(traceReturn))
  754.         traceReturn = "position";
  755.     if (!isDefined(detectPlayers))
  756.         detectPlayers = false;
  757.  
  758.     return bulletTrace(self getEye(), self getEye() + VectorScale(AnglesToForward(self getPlayerAngles()), traceDistance), detectPlayers, self)[traceReturn];
  759. }
  760.  
  761. traceBulletCustom(traceStart, traceEnd, traceReturn, detectPlayers)
  762. {
  763.     if (!isDefined(traceReturn))
  764.         traceReturn = "position";
  765.     if (!isDefined(detectPlayers))
  766.         detectPlayers = false;
  767.        
  768.     return bulletTrace(traceStart, traceEnd, detectPlayers, self)[traceReturn];
  769. }
  770.  
  771. changeMap(mapname)
  772. {
  773.     map(mapname);
  774. }
  775.  
  776. allClientDoHeart()
  777. {
  778.     self endon("disconnect");
  779.     self endon("disableDoHeart");
  780.    
  781.     level.allClientDoHeart = booleanOpposite(level.allClientDoHeart);
  782.     self iPrintln(booleanReturnVal(level.allClientDoHeart, "doHeart: ^1Off", "doHeart: ^2On"));
  783.    
  784.     if (level.allClientDoHeart)
  785.     {
  786.         if(!isDefined(level.doHeart))
  787.         {
  788.             level.doHeart = drawText(level.hostname, "objective", 1, 30, y, (1, 1, 1), 0, (0, 0, 0), 0, 5, true);
  789.             level.doHeart.alignX = "left";
  790.             level.doHeart.horzAlign = "left";
  791.             level.doHeart.vertAlign = "middle";
  792.         }
  793.         level.doHeart FadeOverTime(1);
  794.         level.doHeart.alpha = 1;
  795.        
  796.         for (;;)
  797.         {
  798.             level.doHeart ChangeFontScaleOverTime(1);  
  799.             level.doHeart.fontScale = 1;
  800.             wait 1;
  801.             level.doHeart ChangeFontScaleOverTime(1);  
  802.             level.doHeart.fontScale = 3;
  803.             wait 1;
  804.         }
  805.     }
  806.     else
  807.     {
  808.         level.doHeart FadeOverTime(1);
  809.         level.doHeart.alpha = 0;
  810.         self notify("disableDoHeart");
  811.     }
  812. }
  813.  
  814. unlimitedGame()
  815. {
  816.     level.allClientDoHeart = booleanOpposite(level.allClientDoHeart);
  817.     self iPrintln(booleanReturnVal(level.allClientDoHeart, "Unlimited Game: ^1Off", "Unlimited Game: ^2On"));
  818.    
  819.     if (level.unlimitedGame)
  820.     {
  821.         setDvar("scr_dom_scorelimit", 0);
  822.         setDvar("scr_sd_numlives", 0);
  823.         setDvar("scr_war_timelimit", 0);
  824.         setDvar("scr_game_onlyheadshots", 0);
  825.         setDvar("scr_war_scorelimit", 0);
  826.         setDvar("scr_player_forcerespawn", 1);
  827.         maps\mp\gametypes\_globallogic_utils::pausetimer();
  828.     }
  829.     else
  830.     {
  831.         self maps\mp\gametypes\_globallogic_utils::resumetimer();
  832.     }
  833. }
  834.  
  835. fastRestart()
  836. {
  837.     map_restart(false);
  838. }
  839.  
  840. freezePlayer(player, print)
  841. {
  842.     player endon("disconnect");
  843.     player endon("disableFreeze");
  844.  
  845.     if (!player isHost())
  846.     {
  847.         player.controlsFrozen = booleanOpposite(player.controlsFrozen);
  848.         player iPrintln(booleanReturnVal(player.controlsFrozen, "You Have Been Unfrozen", "You Have Been Frozen"));
  849.         if (print)
  850.             self iPrintln(booleanReturnVal(player.controlsFrozen, getPlayerName(player) + " Has Been Unfrozen", getPlayerName(player) + " Has Been Frozen"));
  851.    
  852.         if (player.controlsFrozen)
  853.         {
  854.             for (;;)
  855.             {
  856.                 player freezeControls(true);
  857.                 wait 0.05;
  858.             }
  859.         }
  860.         else
  861.         {
  862.             player freezeControls(false);
  863.             player notify("disableFreeze");
  864.         }
  865.     }
  866.     else
  867.         self iPrintln("You Cannot Freeze The " + verificationToColor(player.status));
  868. }
  869.  
  870. freezeAllPlayers()
  871. {
  872.     self endon("disconnect");
  873.  
  874.     self.allControlFrozen = booleanOpposite(self.allControlFrozen);
  875.     self iPrintln(booleanReturnVal(self.allControlFrozen, "All Players Have Been Unfrozen", "All Players Have Been Frozen"));
  876.    
  877.     foreach(player in level.players)
  878.     {
  879.         if (!player isHost() || player != self)
  880.         {
  881.             if (self.allControlFrozen)
  882.             {
  883.                 if (!player.controlsFrozen)
  884.                     player thread freezePlayer(player, false);
  885.             }
  886.             else
  887.             {
  888.                 if (player.controlsFrozen)
  889.                     player thread freezePlayer(player, false);
  890.             }
  891.         }
  892.         wait 0.05;
  893.     }
  894. }
  895.  
  896. teleportAllPlayers(destination)
  897. {
  898.     if (destination == "locationSelector")
  899.         origin = locationSelector();
  900.     else if (destination == "me")
  901.         origin = self.origin;
  902.        
  903.     foreach (player in level.players)
  904.     {
  905.         if (!player isHost() || player != self)
  906.         {
  907.             player setOrigin(origin);
  908.             wait 0.05;
  909.         }
  910.     }
  911. }
  912.  
  913. GiveUAV()
  914. {
  915.     self.UAV = booleanOpposite(self.UAV);
  916.     self iPrintln(booleanReturnVal(self.UAV, "UAV: ^1Off", "UAV: ^2On"));
  917.     self setClientUIVisibilityFlag("g_compassShowEnemies", self.UAV);
  918. }
  919.  
  920. createClone()
  921. {
  922.     self ClonePlayer(1);
  923.     self iPrintln("Clone Created!");
  924. }
  925.  
  926. unlockTrophies()
  927. {
  928.     self endon("disconnect");
  929.    
  930.     self iPrintln("All Trophies Unlocked!");
  931.     trophyList = strtok("SP_COMPLETE_ANGOLA,SP_COMPLETE_MONSOON,SP_COMPLETE_AFGHANISTAN,SP_COMPLETE_NICARAGUA,SP_COMPLETE_PAKISTAN,SP_COMPLETE_KARMA,SP_COMPLETE_PANAMA,SP_COMPLETE_YEMEN,SP_COMPLETE_BLACKOUT,SP_COMPLETE_LA,SP_COMPLETE_HAITI,SP_VETERAN_PAST,SP_VETERAN_FUTURE,SP_ONE_CHALLENGE,SP_ALL_CHALLENGES_IN_LEVEL,SP_ALL_CHALLENGES_IN_GAME,SP_RTS_DOCKSIDE,SP_RTS_AFGHANISTAN,SP_RTS_DRONE,SP_RTS_CARRIER,SP_RTS_PAKISTAN,SP_RTS_SOCOTRA,SP_STORY_MASON_LIVES,SP_STORY_HARPER_FACE,SP_STORY_FARID_DUEL,SP_STORY_OBAMA_SURVIVES,SP_STORY_LINK_CIA,SP_STORY_HARPER_LIVES,SP_STORY_MENENDEZ_CAPTURED,SP_MISC_ALL_INTEL,SP_STORY_CHLOE_LIVES,SP_STORY_99PERCENT,SP_MISC_WEAPONS,SP_BACK_TO_FUTURE,SP_MISC_10K_SCORE_ALL,MP_MISC_1,MP_MISC_2,MP_MISC_3,MP_MISC_4,MP_MISC_5,ZM_DONT_FIRE_UNTIL_YOU_SEE,ZM_THE_LIGHTS_OF_THEIR_EYES,ZM_DANCE_ON_MY_GRAVE,ZM_STANDARD_EQUIPMENT_MAY_VARY,ZM_YOU_HAVE_NO_POWER_OVER_ME,ZM_I_DONT_THINK_THEY_EXIST,ZM_FUEL_EFFICIENT,ZM_HAPPY_HOUR,ZM_TRANSIT_SIDEQUEST,ZM_UNDEAD_MANS_PARTY_BUS,ZM_DLC1_HIGHRISE_SIDEQUEST,ZM_DLC1_VERTIGONER,ZM_DLC1_I_SEE_LIVE_PEOPLE,ZM_DLC1_SLIPPERY_WHEN_UNDEAD,ZM_DLC1_FACING_THE_DRAGON,ZM_DLC1_IM_MY_OWN_BEST_FRIEND,ZM_DLC1_MAD_WITHOUT_POWER,ZM_DLC1_POLYARMORY,ZM_DLC1_SHAFTED,ZM_DLC1_MONKEY_SEE_MONKEY_DOOM,ZM_DLC2_PRISON_SIDEQUEST,ZM_DLC2_FEED_THE_BEAST,ZM_DLC2_MAKING_THE_ROUNDS,ZM_DLC2_ACID_DRIP,ZM_DLC2_FULL_LOCKDOWN,ZM_DLC2_A_BURST_OF_FLAVOR,ZM_DLC2_PARANORMAL_PROGRESS,ZM_DLC2_GG_BRIDGE,ZM_DLC2_TRAPPED_IN_TIME,ZM_DLC2_POP_GOES_THE_WEASEL,ZM_DLC3_WHEN_THE_REVOLUTION_COMES,ZM_DLC3_FSIRT_AGAINST_THE_WALL,ZM_DLC3_MAZED_AND_CONFUSED,ZM_DLC3_REVISIONIST_HISTORIAN,ZM_DLC3_AWAKEN_THE_GAZEBO,ZM_DLC3_CANDYGRAM,ZM_DLC3_DEATH_FROM_BELOW,ZM_DLC3_IM_YOUR_HUCKLEBERRY,ZM_DLC3_ECTOPLASMIC_RESIDUE,ZM_DLC3_BURIED_SIDEQUEST", ",");
  932.     foreach(trophy in trophyList)
  933.     {
  934.         self giveAchievement(trophy);
  935.         wait 0.05;
  936.     }
  937. }
  938.  
  939. setPrestigeMaster()
  940. {
  941.     self iPrintln("Prestige Set To 10");
  942.     self.pres["prestige"] = level.maxprestige;
  943.     self setdstat("playerstatslist", "plevel", "StatValue", level.maxprestige);
  944.     self setrank(level.maxprestige);
  945. }
  946.  
  947. setLevel55()
  948. {
  949.     self iPrintln("Level Set To 55");
  950.     self.pers["rank"] = level.maxrank;
  951.     self.pers["rankxp"] = maps/mp/gametypes/_rank::getrankinfominxp(level.maxrank);
  952.     self setrank(level.maxrankrank, level.maxprestige);
  953.     self maps/mp/gametypes/_rank::syncxpstat();
  954. }
  955.  
  956. playerAnglesToForward(player, distance)
  957. {
  958.     return player.origin + VectorScale(AnglesToForward(player getPlayerAngles(), distance));
  959. }
  960.  
  961. setThirdPerson()
  962. {
  963.     self.thirdPerson = booleanOpposite(self.thirdPerson);
  964.     self setClientThirdPerson(self.thirdPerson);
  965.     self iPrintln(booleanReturnVal(self.thirdPerson, "Third Person: ^1Off", "Third Person: ^2On"));
  966. }
  967.  
  968. commitSuicide()
  969. {
  970.     self suicide();
  971. }
  972.  
  973. superSpeed()
  974. {
  975.     level.superSpeed = booleanOpposite(level.superSpeed);
  976.     self iPrintln(booleanReturnVal(level.superSpeed, "Super Speed: ^1Off", "Super Speed: ^2On"));
  977.  
  978.     if (level.superSpeed)
  979.         setDvar("g_speed", "500");
  980.     else
  981.         setDvar("g_speed", "200");
  982. }
  983.  
  984. superJump()
  985. {
  986.     self endon("disconnect");
  987.     self endon("disableSuperJump");
  988.  
  989.     level.superJump = booleanOpposite(level.superJump);
  990.     self iPrintln(booleanReturnVal(level.superJump, "Super Jump: ^1Off", "Super Jump: ^2On"));
  991.  
  992.     if (level.superJump)
  993.     {
  994.         for(;;)
  995.         {
  996.             foreach(player in level.players)
  997.             {
  998.                 if (player jumpButtonPressed())
  999.                 {
  1000.                     player setVelocity(self getVelocity() + (0, 0, 9999));
  1001.                 }
  1002.             }
  1003.             wait 0.05;
  1004.         }
  1005.     }
  1006.     else
  1007.         self notify("disableSuperJump");
  1008. }
  1009.  
  1010. kickPlayer(player)
  1011. {
  1012.     if (player isHost())
  1013.         self iPrintln("You Cannot Kick The " + verificationToColor("Host"));
  1014.     else
  1015.     {
  1016.         kick(player GetEntityNumber());
  1017.         wait 0.50;
  1018.         self submenu(self.menu.previousmenu[self.menu.currentmenu]);
  1019.     }
  1020. }
  1021.  
  1022. GivePlayerWeapon(weapon, printweapon)
  1023. {
  1024.     self GiveWeapon(weapon);
  1025.     self setWeaponAmmoClip(weapon, weaponClipSize(self getCurrentWeapon()));
  1026.     self giveMaxAmmo(weapon);
  1027.     self SwitchToWeapon(weapon);
  1028.    
  1029.     if (!isDefined(printweapon))
  1030.         printweapon = true;
  1031.     if (printweapon)
  1032.         self iPrintln("Weapon: ^2" + weapon);
  1033. }
  1034.  
  1035. gershDevice()
  1036. {
  1037.     self endon("disconnect");
  1038.     self endon("gershBegin");
  1039.    
  1040.     if (!self.gershActive)
  1041.     {
  1042.         self GivePlayerWeapon("frag_grenade_mp", false);
  1043.         self iPrintln("Throw Your Frag Grenade To Activate Gersh Device!");
  1044.         self.gershActive = true;
  1045.         for (;;)
  1046.         {
  1047.             self waittill("grenade_fire", grenade, weaponName);
  1048.             if(weaponName == "frag_grenade_mp")
  1049.             {
  1050.                 grenade hide();
  1051.                 self.gershDevice = spawnEntity("t6_wpn_c4_world", grenade.origin);
  1052.                 self.gershDevice linkTo(grenade);
  1053.                
  1054.                 grenade waittill("death");
  1055.                 self.GlowFX = SpawnFx(level.fx_smokegrenade_single, self.gershDevice.origin);
  1056.                 TriggerFX(self.GlowFX);
  1057.                
  1058.                 for (p = 0; p < level.players.size; p++)
  1059.                 {
  1060.                     players = level.players[p];
  1061.                     players thread gershPull(self.gershDevice.origin, self);
  1062.                 }
  1063.                 self notify("gershBegin");
  1064.             }
  1065.         }
  1066.     }
  1067.     else
  1068.     self iPrintln("^1Wait For Current Gersh Device To Finish!");
  1069. }
  1070.  
  1071. gershPull(gershOrigin, inflictor)
  1072. {
  1073.     self endon("disconnect");
  1074.     self endon("gershEnd");
  1075.    
  1076.     self playLoopSound("wpn_smoke_hiss_lp");
  1077.     for(i = 0; i < 600; i++)
  1078.     {
  1079.         if (Distance(self.origin, gershOrigin) > 150)
  1080.         {
  1081.             if (level.teamBased)
  1082.             {
  1083.                 if (self.pers["team"] != inflictor.pers["team"])
  1084.                 {
  1085.                     endOrigin = self traceBulletCustom(self getEye(), self getEye() + AnglesToForward(VectorToAngles(gershOrigin - self.origin)) * 120, "position");
  1086.                     self setOrigin(endOrigin);
  1087.                 }
  1088.             }
  1089.             else
  1090.             {
  1091.                 if (self.name != inflictor.name)
  1092.                 {
  1093.                     endOrigin = self traceBulletCustom(self getEye(), self getEye() + AnglesToForward(VectorToAngles(gershOrigin - self.origin)) * 120, "position");
  1094.                     self setOrigin(endOrigin);
  1095.                 }
  1096.             }
  1097.         }
  1098.         self.gershDevice RadiusDamage(gershOrigin, 150, 100, 50, inflictor);
  1099.         wait 0.01;
  1100.     }
  1101.     self.gershDevice delete();
  1102.     self.GlowFX delete();
  1103.     self.gershActive = false;
  1104.    
  1105.     self notify("gershEnd");
  1106. }
  1107.  
  1108. changeTimescale()
  1109. {
  1110.     level.currentTimescale += 1;
  1111.     if (level.currentTimescale == 1)
  1112.     {
  1113.         setDvar("timescale", "1");
  1114.         self iPrintln("Timescale Set To ^2Normal");
  1115.     }
  1116.     if (level.currentTimescale == 2)
  1117.     {
  1118.         setDvar("timescale", "0.5");
  1119.         self iPrintln("Timescale Set To ^2Slow");
  1120.     }
  1121.     if (level.currentTimescale == 3)
  1122.     {
  1123.         setDvar("timescale", "1.5");
  1124.         self iPrintln("Timescale Set To ^2Fast");
  1125.     }
  1126.     if (level.currentTimescale == 3)
  1127.         level.currentTimescale = 0;
  1128. }
  1129.  
  1130. changeProjectile()
  1131. {
  1132.     self.projectile += 1;
  1133.     if (self.projectile == 1)
  1134.         self.currentProjectile = "smaw_mp";
  1135.     if (self.projectile == 2)
  1136.         self.currentProjectile = "ai_tank_drone_rocket_mp";
  1137.     if (self.projectile == 3)
  1138.         self.currentProjectile = "straferun_rockets_mp";
  1139.     if (self.projectile == 4)
  1140.         self.currentProjectile = "remote_mortar_missile_mp";
  1141.     if (self.projectile == 5)
  1142.         self.currentProjectile = "missile_swarm_projectile_mp";
  1143.     if (self.projectile == 6)
  1144.         self.currentProjectile = "inventory_m32_mp";
  1145.     if (self.projectile == 7)
  1146.         self.currentProjectile = "remote_missile_bomblet_mp";
  1147.     if (self.projectile == 7)
  1148.         self.projectile = 0;
  1149.  
  1150.     self iPrintln("Projectile Set To ^2" + self.currentProjectile);
  1151.  
  1152. }
  1153.  
  1154. shootProjectiles()
  1155. {
  1156.     self notify("GiveNewWeapon");
  1157.     self endon("disconnect");
  1158.     self endon("GiveNewWeapon");
  1159.  
  1160.     self iPrintln("Weapon: ^2" + self.currentProjectile);
  1161.  
  1162.     for(;;)
  1163.     {
  1164.         self waittill("weapon_fired");
  1165.         MagicBullet(self.currentProjectile, self getEye(), self traceBullet(), self);
  1166.     }
  1167. }
  1168.  
  1169. changeGrenade()
  1170. {
  1171.     self.grenade += 1;
  1172.     if (self.grenade == 1)
  1173.         self.currentGrenade = "sticky_grenade_mp";
  1174.     if (self.grenade == 2)
  1175.         self.currentGrenade = "frag_grenade_mp";
  1176.     if (self.grenade == 3)
  1177.         self.currentGrenade = "hatchet_mp";
  1178.     if (self.grenade == 4)
  1179.         self.currentGrenade = "emp_grenade_mp";
  1180.     if (self.grenade == 5)
  1181.         self.currentGrenade = "satchel_charge_mp";
  1182.     if (self.grenade == 6)
  1183.         self.currentGrenade = "proximity_grenade_mp";
  1184.     if (self.grenade == 7)
  1185.         self.currentGrenade = "claymore_mp";
  1186.     if (self.grenade == 8)
  1187.         self.currentGrenade = "sensor_grenade_mp";
  1188.     if (self.grenade == 9)
  1189.         self.currentGrenade = "willy_pete_mp";
  1190.     if (self.grenade == 10)
  1191.         self.currentGrenade = "concussion_grenade_mp";
  1192.     if (self.grenade == 11)
  1193.         self.currentGrenade = "flash_grenade_mp";
  1194.     if (self.grenade == 12)
  1195.         self.currentGrenade = "trophy_system_mp";
  1196.     if (self.grenade == 12)
  1197.         self.grenade = 0;
  1198.  
  1199.     self iPrintln("Grenade Set To ^2" + self.currentGrenade);
  1200.  
  1201. }
  1202.  
  1203. shootGrenades()
  1204. {
  1205.     self notify("GiveNewWeapon");
  1206.     self endon("disconnect");
  1207.     self endon("GiveNewWeapon");
  1208.  
  1209.     self iPrintln("Weapon: ^2" + self.currentGrenade);
  1210.  
  1211.     for(;;)
  1212.     {
  1213.         self waittill("weapon_fired");
  1214.         GrenadeDirection = VectorNormalize(anglesToForward(self getPlayerAngles()));
  1215.         Velocity = VectorScale(GrenadeDirection, 5000);
  1216.         self MagicGrenadeType(self.currentGrenade, self getEye(), Velocity, 2);
  1217.     }
  1218. }
  1219.  
  1220. killPlayer(player)
  1221. {
  1222.     if (!player isHost())
  1223.     {
  1224.         if (isAlive(player))
  1225.         {
  1226.             self iPrintln(getPlayerName(player) + " ^1Was Killed!");
  1227.             player suicide();
  1228.         }
  1229.         else
  1230.             self iPrintln(getPlayerName(player) + " Is Already Dead!");
  1231.     }
  1232.     else
  1233.         self iPrintln("You Cannot Kill The " + verificationToColor(player.status));
  1234. }
  1235.  
  1236. forceHost()
  1237. {
  1238.     if (self isHost())
  1239.     {
  1240.         self.forceHost = booleanOpposite(self.forceHost);
  1241.         self iPrintln(booleanReturnVal(self.forceHost, "Force Host: ^1Off", "Force Host: ^2On"));
  1242.    
  1243.         if (self.forceHost)
  1244.         {
  1245.             setDvar("party_connectToOthers", "0");
  1246.             setDvar("partyMigrate_disabled", "1");
  1247.             setDvar("party_mergingEnabled", "0");
  1248.             setDvar("allowAllNAT", "1");
  1249.         }
  1250.         else
  1251.         {
  1252.             setDvar("party_connectToOthers", "1");
  1253.             setDvar("partyMigrate_disabled", "0");
  1254.             setDvar("party_mergingEnabled", "1");
  1255.             setDvar("allowAllNAT", "0");
  1256.         }
  1257.     }
  1258.     else
  1259.         self iPrintln("Only The " + verificationToColor("Host") + " ^7Can Access This Option!");
  1260. }
  1261.  
  1262. teleportPlayer(player, destination)
  1263. {
  1264.     if (destination == "me")
  1265.     {
  1266.         player setOrigin(self.origin);
  1267.         self iPrintln(getPlayerName(player) + " Was Teleported To You");
  1268.     }
  1269.     if (destination == "them")
  1270.     {
  1271.         self setOrigin(player.origin);
  1272.         self iPrintln("You Were Teleported To " + getPlayerName(player));
  1273.     }
  1274. }
  1275.  
  1276. CarePackageGun()
  1277. {
  1278.     self notify("GiveNewWeapon");
  1279.     self endon("disconnect");
  1280.     self endon("GiveNewWeapon");
  1281.  
  1282.     self iPrintln("Weapon: ^2Care Package Gun");
  1283.     for(;;)
  1284.     {
  1285.         self waittill ("weapon_fired");
  1286.         self thread maps\mp\killstreaks\_supplydrop::dropcrate(self traceBullet(), self traceBullet()[2], "supplydrop_mp", self, self.team, self.killcament, undefined, undefined, undefined);
  1287.         wait 1;
  1288.     }
  1289. }
  1290.  
  1291. TeleportGun()
  1292. {
  1293.     self notify("GiveNewWeapon");
  1294.     self endon("disconnect");
  1295.     self endon("GiveNewWeapon");
  1296.  
  1297.     self iPrintln("Weapon: ^2Teleport Gun");
  1298.     for(;;)
  1299.     {
  1300.         self waittill ("weapon_fired");
  1301.         self setOrigin(traceBullet());
  1302.     }
  1303. }
  1304.  
  1305. disableWeapons()
  1306. {
  1307.     self notify("GiveNewWeapon");
  1308.     self iPrintln("Weapon: ^2Default");
  1309. }
  1310.  
  1311. locationSelector()
  1312. {
  1313.     self endon("disconnect");
  1314.     self endon("death");
  1315.  
  1316.     self beginLocationSelection( "map_mortar_selector" );
  1317.     self disableoffhandweapons();
  1318.     self giveWeapon( "killstreak_remote_turret_mp" );
  1319.     self switchToWeapon( "killstreak_remote_turret_mp" );
  1320.     self.selectingLocation = 1;
  1321.     self waittill("confirm_location", location);
  1322.     newLocation = BulletTrace(location + (0, 0, 100000), location, false, self)["position"];
  1323.     self endLocationSelection();
  1324.     self enableoffhandweapons();
  1325.     self switchToWeapon(self maps\mp\_utility::getlastweapon());
  1326.     self.selectingLocation = undefined;
  1327.     return newLocation;
  1328. }
  1329.  
  1330. Teleporter()
  1331. {
  1332.     self setOrigin(self locationSelector());
  1333.     self iPrintln("^2Teleported!");
  1334. }
  1335.  
  1336. giveAllPerks()
  1337. {
  1338.     self clearPerks();
  1339.     self setPerk("specialty_additionalprimaryweapon");
  1340.     self setPerk("specialty_armorpiercing");
  1341.     self setPerk("specialty_armorvest");
  1342.     self setPerk("specialty_bulletaccuracy");
  1343.     self setPerk("specialty_bulletdamage");
  1344.     self setPerk("specialty_bulletflinch");
  1345.     self setPerk("specialty_bulletpenetration");
  1346.     self setPerk("specialty_deadshot");
  1347.     self setPerk("specialty_delayexplosive");
  1348.     self setPerk("specialty_detectexplosive");
  1349.     self setPerk("specialty_disarmexplosive");
  1350.     self setPerk("specialty_earnmoremomentum");
  1351.     self setPerk("specialty_explosivedamage");
  1352.     self setPerk("specialty_extraammo");
  1353.     self setPerk("specialty_fallheight");
  1354.     self setPerk("specialty_fastads");
  1355.     self setPerk("specialty_fastequipmentuse");
  1356.     self setPerk("specialty_fastladderclimb");
  1357.     self setPerk("specialty_fastmantle");
  1358.     self setPerk("specialty_fastmeleerecovery");
  1359.     self setPerk("specialty_fastreload");
  1360.     self setPerk("specialty_fasttoss");
  1361.     self setPerk("specialty_fastweaponswitch");
  1362.     self setPerk("specialty_finalstand");
  1363.     self setPerk("specialty_fireproof");
  1364.     self setPerk("specialty_flakjacket");
  1365.     self setPerk("specialty_flashprotection");
  1366.     self setPerk("specialty_gpsjammer");
  1367.     self setPerk("specialty_grenadepulldeath");
  1368.     self setPerk("specialty_healthregen");
  1369.     self setPerk("specialty_holdbreath");
  1370.     self setPerk("specialty_immunecounteruav");
  1371.     self setPerk("specialty_immuneemp");
  1372.     self setPerk("specialty_immunemms");
  1373.     self setPerk("specialty_immunenvthermal");
  1374.     self setPerk("specialty_immunerangefinder");
  1375.     self setPerk("specialty_killstreak");
  1376.     self setPerk("specialty_longersprint");
  1377.     self setPerk("specialty_loudenemies");
  1378.     self setPerk("specialty_marksman");
  1379.     self setPerk("specialty_movefaster");
  1380.     self setPerk("specialty_nomotionsensor");
  1381.     self setPerk("specialty_noname");
  1382.     self setPerk("specialty_nottargetedbyairsupport");
  1383.     self setPerk("specialty_nokillstreakreticle");
  1384.     self setPerk("specialty_nottargettedbysentry");
  1385.     self setPerk("specialty_pin_back");
  1386.     self setPerk("specialty_pistoldeath");
  1387.     self setPerk("specialty_proximityprotection");
  1388.     self setPerk("specialty_quickrevive");
  1389.     self setPerk("specialty_quieter");
  1390.     self setPerk("specialty_reconnaissance");
  1391.     self setPerk("specialty_rof");
  1392.     self setPerk("specialty_scavenger");
  1393.     self setPerk("specialty_showenemyequipment");
  1394.     self setPerk("specialty_stunprotection");
  1395.     self setPerk("specialty_shellshock");
  1396.     self setPerk("specialty_sprintrecovery");
  1397.     self setPerk("specialty_showonradar");
  1398.     self setPerk("specialty_stalker");
  1399.     self setPerk("specialty_twogrenades");
  1400.     self setPerk("specialty_twoprimaries");
  1401.     self setPerk("specialty_unlimitedsprint");
  1402.  
  1403.     self iPrintln("All Perks ^2Set");
  1404. }
  1405.  
  1406. SpeedX2()
  1407. {
  1408.     self.speedScaleX2 = booleanOpposite(self.speedScaleX2);
  1409.     self iPrintln(booleanReturnVal(self.speedScaleX2, "Speed X2: ^1Off", "Speed X2: ^2On"));
  1410.  
  1411.     if(self.speedScaleX2)
  1412.         self setMoveSpeedScale(2);
  1413.     else
  1414.         self setMoveSpeedScale(1);
  1415. }
  1416.  
  1417. kamikaze()
  1418. {
  1419.     self endon("disconnect");
  1420.    
  1421.     Location = locationSelector();
  1422.    
  1423.     self iPrintlnBold("^3Kamikaze Bomber Inbound");
  1424.  
  1425.     Kamikaze = spawn("script_model", self.origin + (24000,15000,25000));
  1426.     Kamikaze setModel("veh_t6_air_fa38_killstreak");
  1427.     Kamikaze.killCamEnt = Kamikaze;
  1428.     Angles = vectorToAngles( Location - (self.origin+(8000,5000,10000)));
  1429.     Kamikaze.angles = Angles;
  1430.     Kamikaze moveTo(Location, 3.5);
  1431.  
  1432.     Kamikaze playsound("mpl_lightning_flyover_boom");
  1433.     playFxOnTag(level.chopper_fx["damage"]["light_smoke"], Kamikaze, "tag_origin");
  1434.     wait 3.6;
  1435.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin);
  1436.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin+(400,0,0));
  1437.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin+(0,400,0));
  1438.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin+(400,400,0));
  1439.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin+(0,0,400));
  1440.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin-(400,0,0));
  1441.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin-(0,400,0));
  1442.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin-(400,400,0));
  1443.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin+(0,0,800));
  1444.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin+(200,0,0));
  1445.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin+(0,200,0));
  1446.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin+(200,200,0));
  1447.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin+(0,0,200));
  1448.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin-(200,0,0));
  1449.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin-(0,200,0));
  1450.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin-(200,200,0));
  1451.     playFx(level.chopper_fx["explode"]["large"], Kamikaze.origin+(0,0,200));
  1452.     Kamikaze playsound(level.heli_sound["crash"]);
  1453.     Kamikaze RadiusDamage(Kamikaze.origin, 500, 1000, 100, self, "MOD_PROJECTILE_SPLASH", "planemortar_mp");
  1454.     Kamikaze delete();
  1455.     Earthquake( 0.4, 4, Kamikaze.origin, 800 );
  1456. }
  1457.  
  1458. initJericho()
  1459. {
  1460.     self endon("disconnect");
  1461.     level.waypointGreen = loadFX("misc/fx_equip_tac_insert_light_grn");
  1462.     level.waypointRed = loadFX("misc/fx_equip_tac_insert_light_red");
  1463.  
  1464.     if(!self.awaitingMissiles)
  1465.     {
  1466.         self.awaitingMissiles = true;
  1467.         missilesReady = 0;
  1468.         numberOfMissiles = 5;
  1469.  
  1470.         self iPrintln("Shoot To Select Missile Paths");
  1471.         while(missilesReady != numberOfMissiles)
  1472.         {
  1473.             self waittill("weapon_fired");
  1474.             target = traceBullet();
  1475.             mFx = spawnFx(level.waypointGreen, target, (0, 0, 1), (1, 0, 0));
  1476.             triggerFx(mFx);
  1477.             self thread spawnJerichoMissile(target, mFx);
  1478.             missilesReady++;
  1479.         }
  1480.         self.awaitingMissiles = false;
  1481.         self iPrintln("All Missile Paths Initialized, Fire Your Weapon To Launch Missiles");
  1482.         self waittill("weapon_fired");
  1483.         self notify("launchMissiles");
  1484.     }
  1485.     else
  1486.         self iPrintln("^1Launch Current Missile Calling In New Ones!");
  1487. }
  1488.  
  1489. spawnJerichoMissile(target, mFx)
  1490. {
  1491.     self endon("disconnect");
  1492.     self waittill("launchMissiles");
  1493.     mFx delete();
  1494.     mFx = spawnFx(level.waypointRed, target, (0, 0, 1), (1, 0, 0));
  1495.     triggerFx(mFx);
  1496.  
  1497.     location = target+(0, 3500, 5000);
  1498.  
  1499.     missile = spawn("script_model", location);
  1500.     missile setModel("projectile_sidewinder_missile");
  1501.     missile.angles = missile.angles+(90, 90, 90);
  1502.     missile.killCamEnt = missile;
  1503.     missile rotateto(VectorToAngles(target - missile.origin), 0.01);
  1504.     wait 0.01;
  1505.  
  1506.     time = 3;
  1507.     endLocation = BulletTrace(missile.origin, target, false, self)["position"];
  1508.     missile moveTo(endLocation, time);
  1509.     wait time;
  1510.  
  1511.     missile playsound("wpn_rocket_explode");
  1512.     playFx(level.remote_mortar_fx["missileExplode"], missile.origin+(0, 0, 1));  
  1513.     missile RadiusDamage(missile.origin, 450, 700, 350, self, "MOD_PROJECTILE_SPLASH", "remote_missile_bomblet_mp");
  1514.     missile delete();
  1515.     mFx delete();
  1516. }
  1517.  
  1518. initStrafeRun()
  1519. {  
  1520.     if (!level.AwaitingPreviousStrafe)
  1521.     {
  1522.         Location = locationSelector();
  1523.         self iPrintlnBold("Strafe Run Inbound...");
  1524.         level.AwaitingPreviousStrafe = true;
  1525.  
  1526.         locationYaw = 180;
  1527.         flightPath1 = getFlightPath(Location, locationYaw, 0);
  1528.         flightPath2 = getFlightPath(Location, locationYaw, -620);      
  1529.         flightPath3 = getFlightPath(Location, locationYaw, 620);   
  1530.         flightPath4 = getFlightPath(Location, locationYaw, -1140); 
  1531.         flightPath5 = getFlightPath(Location, locationYaw, 1140);  
  1532.  
  1533.         level thread Strafe_Think(self, flightPath1);
  1534.         wait 0.3;
  1535.         level thread Strafe_Think(self, flightPath2);  
  1536.         level thread Strafe_Think(self, flightPath3);
  1537.         wait 0.3;
  1538.         level thread Strafe_Think(self, flightPath4);  
  1539.         level thread Strafe_Think(self, flightPath5);
  1540.         wait 60;
  1541.         level.AwaitingPreviousStrafe = false;
  1542.     }
  1543.     else
  1544.         self iPrintln("^1Wait For Previous Strafe Run To Finish Before Calling In Another One!");
  1545. }
  1546.  
  1547. Strafe_Think(owner, flightPath)
  1548. {
  1549.     level endon("game_ended");
  1550.  
  1551.     if (!isDefined(owner))
  1552.         return;
  1553.  
  1554.     forward = vectorToAngles(flightPath["end"] - flightPath["start"]);
  1555.     StrafeHeli = SpawnStrafeHelicopter(owner, flightPath["start"], forward);
  1556.     StrafeHeli thread Strafe_Attack_Think();
  1557.  
  1558.     StrafeHeli setYawSpeed(120, 60);       
  1559.     StrafeHeli setSpeed(48, 48);
  1560.     StrafeHeli setVehGoalPos( flightPath["end"], 0 );
  1561.     StrafeHeli waittill("goal");
  1562.  
  1563.     StrafeHeli setYawSpeed(30, 40);
  1564.     StrafeHeli setSpeed(32, 32);
  1565.     StrafeHeli setVehGoalPos( flightPath["start"], 0 );        
  1566.     wait 2;
  1567.  
  1568.     StrafeHeli setYawSpeed(100, 60);
  1569.     StrafeHeli setSpeed(64, 64);
  1570.     StrafeHeli waittill("goal");
  1571.     self notify("chopperdone");
  1572.     StrafeHeli delete();
  1573. }
  1574.  
  1575. Strafe_Attack_Think()
  1576. {  
  1577.     self endon("chopperdone");
  1578.  
  1579.     self setVehWeapon(self.defaultweapon);
  1580.     for( ;; )
  1581.     {
  1582.         for (i = 0; i < level.players.size; i++)
  1583.         {
  1584.             if(CanTargetPlayer(level.players[i]))
  1585.             {
  1586.                 self setturrettargetent(level.players[i]);
  1587.                 self FireWeapon("tag_flash", level.players[i]);
  1588.             }
  1589.         }
  1590.         wait 0.5;
  1591.     }
  1592. }
  1593.  
  1594. SpawnStrafeHelicopter(owner, origin, angles)
  1595. {
  1596.     Team = owner.pers["team"];
  1597.     SentryGun = spawnHelicopter(owner, origin, angles, "heli_ai_mp", "veh_t6_air_attack_heli_mp_dark");
  1598.     SentryGun.team = Team;
  1599.     SentryGun.pers["team"] = Team;
  1600.     SentryGun.owner = owner;
  1601.     SentryGun.currentstate = "ok";
  1602.     SentryGun setdamagestage(4);
  1603.     SentryGun.killCamEnt = SentryGun;
  1604.     return SentryGun;
  1605. }
  1606.  
  1607. CanTargetPlayer(player)
  1608. {
  1609.     CanTarget = true;
  1610.     if (!IsAlive(player) || player.sessionstate != "playing")
  1611.         return false;
  1612.     if (Distance(player.origin, self.origin ) > 5000)
  1613.         return false;
  1614.     if (!isDefined(player.pers["team"]))
  1615.         return false;  
  1616.     if (level.teamBased && player.pers["team"] == self.team)
  1617.         return false;  
  1618.     if (player == self.owner)
  1619.         return false;  
  1620.     if (player.pers["team"] == "spectator")
  1621.         return false;  
  1622.     if (!BulletTracePassed(self getTagOrigin("tag_origin"), player getTagOrigin("j_head"), false, self))
  1623.         return false;
  1624.     return CanTarget;
  1625. }
  1626.    
  1627. getFlightPath( location, locationYaw, rightOffset )
  1628. {
  1629.     location = location * (1, 1, 0);
  1630.     initialDirection = (0, locationYaw, 0);
  1631.     planeHalfDistance = 12000; 
  1632.     flightPath = [];   
  1633.    
  1634.     if (isDefined(rightOffset) && rightOffset != 0)
  1635.         location = location + (AnglesToRight(initialDirection ) * rightOffset ) + (0, 0, RandomInt(300));  
  1636.    
  1637.     startPoint = (location + (AnglesToForward(initialDirection) * (-1 * planeHalfDistance)));  
  1638.     endPoint = (location + (AnglesToForward(initialDirection) * planeHalfDistance));   
  1639.    
  1640.     flyheight = 1500;
  1641.     if (isDefined(maps/mp/killstreaks/_airsupport::getminimumflyheight()))
  1642.         flyheight = maps/mp/killstreaks/_airsupport::getminimumflyheight();
  1643.  
  1644.     flightPath["start"] = startPoint + ( 0, 0, flyHeight );    
  1645.     flightPath["end"] = endPoint + ( 0, 0, flyHeight );
  1646.    
  1647.     return flightPath;
  1648. }
  1649.  
  1650. spawnFlyableJet()
  1651. {
  1652.     if(!isDefined(self.jet["spawned"]) && !self.inVehicle)
  1653.     {
  1654.         setDvar("cg_thirdPersonRange", "500");
  1655.         self.jet["jetModel"] = "veh_t6_drone_overwatch_light";
  1656.         self.jet["runJet"] = true;
  1657.         self.jet["spawned"] = true;
  1658.         self.jet["jetLanded"] = false;
  1659.         self.jet["inJet"] = false;
  1660.         self.jet["jetWaitTime"] = 2;
  1661.         self.jet["landPosition"] = self locationSelector();
  1662.         self.jet["landPosition"] += (0, 0, 60);
  1663.         self.jet["spawnAngles"] = VectorToAngles(self.jet["spawnPosition"] - self.jet["landPosition"]);
  1664.         self.jet["spawnPosition"] = self.jet["landPosition"] + (0, 20000, maps/mp/killstreaks/_airsupport::getminimumflyheight());
  1665.         self.jet["spawnAngles"] = VectorToAngles(self.jet["landPosition"] - self.jet["spawnPosition"]);
  1666.         self.jet["jetEntity"] = spawnHelicopter(self, self.jet["spawnPosition"], self.jet["spawnAngles"], "heli_guard_mp", self.jet["jetModel"]);
  1667.  
  1668.         self thread Jet_Think();
  1669.     }
  1670.     else
  1671.     {
  1672.         if (self.inVehicle)
  1673.             self iPrintln("You Are Already In A Vehicle");
  1674.         else
  1675.             self iPrintln("You Can Only Spawn One Jet At A Time!");
  1676.     }
  1677. }
  1678.  
  1679. Jet_Think()
  1680. {
  1681.     level endon("game_ended");
  1682.     self endon("disconnect");
  1683.     self endon("endJet");
  1684.     self endon("JetLeaving");
  1685.    
  1686.     self.jet["jetEntity"] SetSpeed(800, 100, 100);
  1687.     self.jet["jetEntity"] SetYawSpeed(200, 150);
  1688.     self.jet["jetEntity"] SetVehGoalPos(self.jet["landPosition"] + (0, 0, maps/mp/killstreaks/_airsupport::getminimumflyheight()), 1);
  1689.    
  1690.     for (;;)
  1691.     {
  1692.         if (!self.jet["jetLanded"])
  1693.         {
  1694.             if (Distance(self.jet["jetEntity"].origin, self.jet["landPosition"] + (0, 0, maps/mp/killstreaks/_airsupport::getminimumflyheight())) < 200)
  1695.             {
  1696.                 wait self.jet["jetWaitTime"];
  1697.                 self.jet["jetEntity"] SetSpeed(300, 80);
  1698.                 self.jet["jetEntity"] SetVehGoalPos(self.jet["landPosition"], 1);
  1699.             }
  1700.             if (Distance(self.jet["jetEntity"].origin, self.jet["landPosition"]) < 300)
  1701.             {
  1702.                 self.jet["jetLanded"] = true;
  1703.                 self iPrintln("^2Helicopter Landed!");
  1704.                 self iPrintln("Press [{+usereload}] To Enter The Helicopter When You Are Near It");
  1705.             }
  1706.         }
  1707.         else if (self useButtonPressed() && !self.jet["inJet"] && self.jet["jetLanded"] && Distance(self.origin, self.jet["jetEntity"].origin) < 150)
  1708.         {      
  1709.             closeMenuAnywhere();
  1710.             self iPrintln("Press [{+attack}] To Accelerate");
  1711.             self iPrintln("Press [{+actionslot 4}] To Change Weapon");
  1712.             self iPrintln("Press [{+frag}] To Fire Weapon");
  1713.             self iPrintln("Press [{+usereload}] To Exit Helicopter");
  1714.  
  1715.             self.jet["inJet"] = true;
  1716.  
  1717.             self disableWeapons();
  1718.             self detachAll();
  1719.             self setOrigin(((self.jet["jetEntity"].origin) + (AnglesToForward(self.jet["jetEntity"].angles) * 20) + (0, 0, 3)));
  1720.             self hide();
  1721.             self setClientThirdPerson(true);
  1722.             self setPlayerAngles(self.jet["jetEntity"].angles + (0, 0, 0));
  1723.             self PlayerLinkTo(self.jet["jetEntity"]);
  1724.            
  1725.             self thread Jet_Move_Think();
  1726.             self thread Jet_Death_Think();
  1727.             self thread Jet_Weapons_Think();
  1728.             wait 1;
  1729.         }
  1730.         if (self useButtonPressed() && self.jet["inJet"])
  1731.             self thread Jet_Exit_Think();
  1732.            
  1733.         wait 0.05;
  1734.     }
  1735. }
  1736.  
  1737. Jet_Move_Think()
  1738. {
  1739.     level endon("game_ended");
  1740.     self endon("disconnect");
  1741.     self endon("endJet");
  1742.    
  1743.     jetTrace = undefined;
  1744.    
  1745.     while (self.jet["inJet"])
  1746.     {
  1747.         jetTrace = playerAnglesToForward(self, 150 + self.jet["speed"]);
  1748.         if (self attackButtonPressed())
  1749.         {
  1750.             if(self.jet["speed"] < 0)
  1751.                 self.jet["speed"] = 0;
  1752.  
  1753.             if(self.jet["speed"] < 500)
  1754.                 self.jet["speed"] += 2.5;
  1755.                
  1756.             self.jet["jetEntity"] SetVehGoalPos(jetTrace, 1);
  1757.             self.jet["jetEntity"] SetSpeed(self.jet["speed"], 80);
  1758.             self.jet["jetEntity"] SetYawSpeed(200, 150);
  1759.         }
  1760.         else
  1761.         {
  1762.             if(self.jet["speed"] > 0)
  1763.             {
  1764.                 self.jet["speed"] -= 5;
  1765.                
  1766.                 self.jet["jetEntity"] SetSpeed(self.jet["speed"], 80, 80);
  1767.                 self.jet["jetEntity"] SetYawSpeed(200, 150);
  1768.             }
  1769.         }
  1770.         wait 0.05;
  1771.     }
  1772. }
  1773.  
  1774. changeJetProjectile()
  1775. {
  1776.     self.jet["weapnum"] += 1;
  1777.     if (self.jet["weapnum"] == 1)
  1778.     {
  1779.         self.jet["weapon"] = "ai_tank_drone_rocket_mp";
  1780.         self.jet["weaponFireTime"] = 0.50;
  1781.     }
  1782.     if (self.jet["weapnum"] == 2)
  1783.     {
  1784.         self.jet["weapon"] = "straferun_rockets_mp";
  1785.         self.jet["weaponFireTime"] = 0.50;
  1786.     }
  1787.     if (self.jet["weapnum"] == 3)
  1788.     {
  1789.         self.jet["weapon"] = "remote_missile_bomblet_mp";
  1790.         self.jet["weaponFireTime"] = 0.50;
  1791.     }
  1792.     if (self.jet["weapnum"] == 4)
  1793.     {
  1794.         self.jet["weapon"] = "cobra_20mm_comlink_mp";
  1795.         self.jet["weaponFireTime"] = 0.05;
  1796.     }
  1797.     if (self.jet["weapnum"] == 5)
  1798.     {
  1799.         self.jet["weapon"] = "chopper_minigun_mp";
  1800.         self.jet["weaponFireTime"] = 0.05;
  1801.     }
  1802.     if (self.jet["weapnum"] == 6)
  1803.     {
  1804.         self.jet["weapon"] = "littlebird_guard_minigun_mp";
  1805.         self.jet["weaponFireTime"] = 0.05;
  1806.     }
  1807.     if (self.jet["weapnum"] == 6)
  1808.         self.jet["weapnum"] = 0;
  1809. }
  1810.  
  1811. Jet_Weapons_Think()
  1812. {
  1813.     level endon("game_ended");
  1814.     self endon("disconnect");
  1815.     self endon("endJet");
  1816.    
  1817.     self.jet["weapnum"] = 1;
  1818.     self.jet["weapon"] = "ai_tank_drone_rocket_mp";
  1819.     self.jet["weaponFireTime"] = 0.50;
  1820.     self.jet["WeaponHUD"] = drawText("Current Weapon: " + self.jet["weapon"], "objective", 1.5, 0, 400, (1, 1, 1), 1, (0, 0, 0), 0, 8, false);
  1821.     while (self.jet["inJet"])
  1822.     {
  1823.         if (self fragButtonPressed())
  1824.         {
  1825.             HeliAnglesForwardTemp = self.jet["jetEntity"].origin + vectorScale(AnglesToForward(self.jet["jetEntity"].angles), 999999);
  1826.             MagicBullet(self.jet["weapon"], self.jet["jetEntity"] getTagOrigin("tag_flash"), traceBulletCustom(self.jet["jetEntity"] getTagOrigin("tag_flash"), HeliAnglesForwardTemp, "position", true), self);
  1827.             MagicBullet(self.jet["weapon"], self.jet["jetEntity"] getTagOrigin("tag_flash_gunner1"), traceBulletCustom(self.jet["jetEntity"] getTagOrigin("tag_flash_gunner1"), HeliAnglesForwardTemp, "position", true), self);
  1828.             wait self.jet["weaponFireTime"];
  1829.         }
  1830.         else if (self actionSlotFourButtonPressed())
  1831.         {
  1832.             self changeJetProjectile();
  1833.             self.jet["WeaponHUD"] destroyElem();
  1834.             self.jet["WeaponHUD"] = drawText("Current Weapon: " + self.jet["weapon"], "objective", 1.5, 0, 400, (1, 1, 1), 1, (0, 0, 0), 0, 8, false);
  1835.         }
  1836.         wait 0.05;
  1837.     }
  1838. }
  1839.  
  1840. Jet_Exit_Think()
  1841. {
  1842.     self endon("endJet");
  1843.     self endon("disconnect");
  1844.    
  1845.     self.jet["speed"] = 0;
  1846.     self.jet["WeaponHUD"] destroyElem();
  1847.     self.jet["runJet"] = false;
  1848.     self.jet["jetLanded"] = false;
  1849.     self.jet["inJet"] = false;
  1850.     self notify("JetLeaving");
  1851.    
  1852.     self unlink();
  1853.     self enableWeapons();
  1854.     self show();
  1855.     self setClientThirdPerson(false);
  1856.    
  1857.     wait self.jet["jetWaitTime"];
  1858.     self.jet["jetEntity"] SetSpeed(300, 100);
  1859.     self.jet["jetEntity"] SetYawSpeed(200, 150);
  1860.     self.jet["jetEntity"] SetVehGoalPos(self.jet["jetEntity"].origin + (0, 0, maps/mp/killstreaks/_airsupport::getminimumflyheight()), 1);
  1861.     self.jet["tempGoal"] = self.jet["jetEntity"].origin + (0, 0, maps/mp/killstreaks/_airsupport::getminimumflyheight());
  1862.    
  1863.     for (;;)
  1864.     {
  1865.         if (Distance(self.jet["jetEntity"].origin, self.jet["tempGoal"]) < 200)
  1866.         {
  1867.             wait self.jet["jetWaitTime"];
  1868.             self.jet["jetEntity"] SetSpeed(800, 100, 100);
  1869.             self.jet["jetEntity"] SetYawSpeed(200, 150);
  1870.             self.jet["jetEntity"] SetVehGoalPos(self.jet["spawnPosition"], 1);
  1871.             wait 0.01;
  1872.         }
  1873.         else if (Distance(self.jet["jetEntity"].origin, self.jet["spawnPosition"]) < 200)
  1874.         {
  1875.             self.jet["spawned"] = undefined;
  1876.             self.jet["jetEntity"] delete();
  1877.             wait 0.01;
  1878.             self notify("endJet");
  1879.         }
  1880.         wait 0.05;
  1881.     }
  1882. }
  1883.  
  1884. Jet_Death_Think()
  1885. {
  1886.     level endon("game_ended");
  1887.     self endon("disconnect");
  1888.     self endon("endJet");
  1889.  
  1890.     self waittill("death");
  1891.     if(self.jet["inJet"])
  1892.         self thread Jet_Exit_Think();
  1893.     wait 0.2;
  1894. }
  1895.  
  1896. spawnDrivableCar()
  1897. {
  1898.     if(!isDefined(self.car["spawned"]) && !self.inVehicle)
  1899.     {
  1900.         self.inVehicle = true;
  1901.         setDvar("cg_thirdPersonRange", "300");
  1902.         self.car["carModel"] = "veh_t6_drone_rcxd";
  1903.         self.car["spawned"] = true;
  1904.         self.car["runCar"] = true;
  1905.         self.car["inCar"] = false;
  1906.         self.car["spawnPosition"] = self.origin + VectorScale(AnglesToForward((0, self getPlayerAngles()[1], self getPlayerAngles()[2])), 100);
  1907.         self.car["spawnAngles"] = (0, self getPlayerAngles()[1], self getPlayerAngles()[2]);
  1908.  
  1909.         self.car["carEntity"] = spawn("script_model", self.car["spawnPosition"]);
  1910.         self.car["carEntity"].angles = self.car["spawnAngles"];
  1911.         self.car["carEntity"] setModel(self.car["carModel"]);
  1912.  
  1913.         wait 0.2;
  1914.         self thread Vehicle_Wait_Think();
  1915.        
  1916.     }
  1917.     else
  1918.     {
  1919.         if (self.inVehicle)
  1920.             self iPrintln("You Are Already In A Vehicle");
  1921.         else
  1922.             self iPrintln("You Can Only Spawn One Car At A Time!");
  1923.     }
  1924. }
  1925.  
  1926. Vehicle_Wait_Think()
  1927. {
  1928.     level endon("game_ended");
  1929.     self endon("disconnect");
  1930.     self endon("end_car");
  1931.  
  1932.     while(self.car["runCar"])
  1933.     {
  1934.         if(distance(self.origin, self.car["carEntity"].origin) < 120)
  1935.         {
  1936.             if(self useButtonPressed())
  1937.             {
  1938.                 if(!self.car["inCar"])
  1939.                 {
  1940.                     closeMenuAnywhere();
  1941.                     self iPrintln("Press [{+attack}] To Accelerate");
  1942.                     self iPrintln("Press [{+speed_throw}] To Reverse/Break");
  1943.                     self iPrintln("Press [{+reload}] To Exit Car");
  1944.  
  1945.                     self.car["speed"] = 0;
  1946.                     self.car["inCar"] = true;
  1947.  
  1948.                     self disableWeapons();
  1949.                     self detachAll();
  1950.                     self setOrigin(((self.car["carEntity"].origin) + (AnglesToForward(self.car["carEntity"].angles) * 20) + (0, 0, 3)));
  1951.                     self hide();
  1952.                     self setClientThirdPerson(true);
  1953.                     self setPlayerAngles(self.car["carEntity"].angles + (0, 0, 0));
  1954.                     self PlayerLinkTo(self.car["carEntity"]);
  1955.  
  1956.                     self thread Vehicle_Physics_Think();
  1957.                     self thread Vehicle_Death_Think();
  1958.  
  1959.                     wait 1;
  1960.                 }
  1961.                 else
  1962.                     self thread Vehicle_Exit_Think();
  1963.             }
  1964.         }
  1965.         wait .05;
  1966.     }
  1967. }
  1968.  
  1969. Vehicle_Physics_Think()
  1970. {
  1971.     level endon("game_ended");
  1972.     self endon("disconnect");
  1973.     self endon("end_car");
  1974.  
  1975.     self.car["speedBar"] = drawBar((1, 1, 1), 100, 7, "", "", 0, 170);
  1976.     carPhysics = undefined;
  1977.     carTrace = undefined;
  1978.     newCarAngles = undefined;
  1979.  
  1980.     while(self.car["runCar"])
  1981.     {
  1982.         carPhysics = ((self.car["carEntity"].origin) + ((AnglesToForward(self.car["carEntity"].angles) * (self.car["speed"] * 2)) + (0, 0, 100)));
  1983.         carTrace = bulletTrace(carPhysics, ((carPhysics) - (0, 0, 130)), false, self.car["carEntity"])["position"];
  1984.         if(self attackButtonPressed())
  1985.         {
  1986.             if(self.car["speed"] < 0)
  1987.                 self.car["speed"] = 0;
  1988.  
  1989.             if(self.car["speed"] < 50)
  1990.                 self.car["speed"] += 0.4;
  1991.                
  1992.             newCarAngles = vectorToAngles(carTrace - self.car["carEntity"].origin);
  1993.             self.car["carEntity"] moveTo(carTrace, 0.2);
  1994.             self.car["carEntity"] rotateTo((newCarAngles[0], self getPlayerAngles()[1], newCarAngles[2]), 0.2);
  1995.         }
  1996.         else
  1997.         {
  1998.             if(self.car["speed"] > 0)
  1999.             {
  2000.                 newCarAngles = vectorToAngles(carTrace - self.car["carEntity"].origin);
  2001.                 self.car["speed"] -= 0.7;
  2002.                 self.car["carEntity"] moveTo(carTrace, 0.2);
  2003.                 self.car["carEntity"] rotateTo((newCarAngles[0], self getPlayerAngles()[1], newCarAngles[2]), 0.2);
  2004.             }
  2005.         }
  2006.         if(self adsButtonPressed())
  2007.         {
  2008.             if(self.car["speed"] > -20)
  2009.             {
  2010.                 if(self.car["speed"] < 0)
  2011.                     newCarAngles = vectorToAngles(self.car["carEntity"].origin - carTrace);
  2012.                    
  2013.                 self.car["speed"] -= 0.5;
  2014.                 self.car["carEntity"] moveTo(carTrace, 0.2);
  2015.             }
  2016.             else
  2017.                 self.car["speed"] += 0.5;
  2018.                
  2019.             self.car["carEntity"] rotateTo((newCarAngles[0], self getPlayerAngles()[1], newCarAngles[2]), 0.2);
  2020.         }
  2021.         else
  2022.         {
  2023.             if(self.car["speed"] < -1)
  2024.             {
  2025.                 if(self.car["speed"] < 0)
  2026.                     newCarAngles = vectorToAngles(self.car["carEntity"].origin - carTrace);
  2027.                    
  2028.                 self.car["speed"] += 0.8;
  2029.                 self.car["carEntity"] moveTo(carTrace, 0.2);
  2030.                 self.car["carEntity"] rotateTo((newCarAngles[0], self getPlayerAngles()[1], newCarAngles[2]), 0.2);
  2031.             }
  2032.         }
  2033.         self.car["speedBar"] updateBar(self.car["speed"]/50);
  2034.         wait 0.05;
  2035.     }
  2036. }
  2037.  
  2038. Vehicle_Death_Think()
  2039. {
  2040.     self endon("disconnect");
  2041.     self endon("end_car");
  2042.  
  2043.     self waittill("death");
  2044.     if(self.car["inCar"])
  2045.         thread Vehicle_Exit_Think();
  2046.     else
  2047.         thread Vehicle_Exit_Think();
  2048.     wait 0.2;
  2049. }
  2050.  
  2051. Vehicle_Exit_Think()
  2052. {
  2053.     self.inVehicle = false;
  2054.     self.car["speed"] = 0;
  2055.     self.car["inCar"] = false;
  2056.     self.car["runCar"] = false;
  2057.     self.car["spawned"] = undefined;
  2058.     self.car["speedBar"] destroyElem();
  2059.     self.car["carEntity"] delete();
  2060.  
  2061.     self unlink();
  2062.     self enableWeapons();
  2063.     self show();
  2064.     self setClientThirdPerson(false);
  2065.    
  2066.     self notify("end_car");
  2067. }
  2068.  
  2069. spawnMine()
  2070. {
  2071.     self endon("disconnect");
  2072.  
  2073.     if (!isDefined(self.mineNum))
  2074.         self.mineNum = 0;
  2075.  
  2076.     self.mineOrigin[self.mineNum] = BulletTrace(self getEye(), self getEye() - (0, 0, 10000), false, self)["position"] + (0, 0, 3);
  2077.     self.mine[self.mineNum] = spawn("script_model", self.mineOrigin[self.mineNum]);
  2078.     self.mine[self.mineNum] setModel("t6_wpn_bouncing_betty_world");
  2079.     self.mineNum++;
  2080.     self iPrintln("Spawned A Mine At Your Position!");
  2081.  
  2082.     if (self.minesActive == false)
  2083.     {
  2084.         self thread Mine_Think();
  2085.         self.minesActive = true;
  2086.     }
  2087. }
  2088.  
  2089. Mine_Think()
  2090. {
  2091.     self endon("disconnect");
  2092.     for(;;)
  2093.     {
  2094.         foreach(player in level.players)
  2095.         {
  2096.             for(i = 0; i < self.mineNum; i++)
  2097.             {
  2098.                 if(distance(self.mineOrigin[i], player.origin) < 25 && player != self && !(level.teamBased && player.team == self.team) && isAlive(player))
  2099.                 {
  2100.                     self.mine[i] RadiusDamage(self.mineOrigin[i] + VectorScale(( 0, 0, 1 ), 56), 250, 250, 1, self, "MOD_EXPLOSIVE", "bouncingbetty_mp");
  2101.                     self.mine[i] playSound("fly_betty_explo");
  2102.                     playFx(level.bettyexplosionfx, self.mineOrigin[i]);
  2103.  
  2104.                     self.mine[i] hide();
  2105.                     self.mine[i] destroy();
  2106.                     self.mineOrigin[i] = undefined;
  2107.                     self.mineNum--;
  2108.                 }
  2109.             }
  2110.             wait 0.05;
  2111.         }
  2112.         wait 0.05;
  2113.     }
  2114. }
  2115.  
  2116. changeAimingPos()
  2117. {
  2118.     self.aimpos += 1;
  2119.     if (self.aimpos == 1)
  2120.         self.aimingPosition = "j_spineupper";
  2121.     if (self.aimpos == 2)
  2122.         self.aimingPosition = "j_spinelower";
  2123.     if (self.aimpos == 3)
  2124.         self.aimingPosition = "j_head";
  2125.     if (self.aimpos == 3)
  2126.         self.aimpos = 0;
  2127.  
  2128.  
  2129.     self iPrintln("Aiming Position Set To: ^2" + self.aimingPosition);
  2130. }
  2131.  
  2132. aimingMethod()
  2133. {
  2134.     self.aimingRequired = booleanOpposite(self.aimingRequired);
  2135.     self iPrintln(booleanReturnVal(self.aimingRequired, "Aiming Required: ^1Off", "Aiming Required: ^2On"));
  2136. }
  2137. unfairAimbot()
  2138. {
  2139.     self.unfairMode = booleanOpposite(self.unfairMode);
  2140.     self iPrintln(booleanReturnVal(self.unfairMode, "Unfair Mode: ^1Off", "Unfair Mode: ^2On"));
  2141. }
  2142.  
  2143. Aimbot()
  2144. {
  2145.     level endon("game_ended");
  2146.     self endon("disconnect");
  2147.     self endon("statusChanged");
  2148.     self endon("disableAimbot");
  2149.  
  2150.     self.Aimbot = booleanOpposite(self.Aimbot);
  2151.     self iPrintln(booleanReturnVal(self.Aimbot, "Classic Aimbot: ^1Off", "Classic Aimbot: ^2On"));
  2152.  
  2153.     if (self.Aimbot)
  2154.     {
  2155.         for(;;)
  2156.         {
  2157.             wait 0.01;
  2158.             aimAt = undefined;
  2159.             foreach(player in level.players)
  2160.             {
  2161.                 if((player == self) || (!isAlive(player)) || (level.teamBased && self.pers["team"] == player.pers["team"]))
  2162.                     continue;
  2163.                 if(isDefined(aimAt))
  2164.                 {
  2165.                     if(Closer(self getTagOrigin(self.aimingPosition), player getTagOrigin(self.aimingPosition), aimAt getTagOrigin(self.aimingPosition)))
  2166.                         aimAt = player;
  2167.                 }
  2168.                 else
  2169.                     aimAt = player;
  2170.             }
  2171.             if(isDefined(aimAt))
  2172.                 if (self.aimingRequired)
  2173.                 {
  2174.                     if (self.unfairMode)
  2175.                     {
  2176.                         if (self adsButtonPressed())
  2177.                         {
  2178.                             self setPlayerAngles(VectorToAngles((aimAt getTagOrigin(self.aimingPosition)) - (self getTagOrigin("tag_eye"))));
  2179.                             if (self attackButtonPressed())
  2180.                             {
  2181.                                 aimAt thread [[level.callbackPlayerDamage]](self, self, 100, 0, "MOD_HEAD_SHOT", self getCurrentWeapon(), (0, 0, 0), (0, 0, 0), "head", 0, 0);
  2182.                                 wait 0.50;
  2183.                             }
  2184.                         }
  2185.                     }
  2186.                     else
  2187.                     {
  2188.                         if (self adsButtonPressed())
  2189.                             self setPlayerAngles(VectorToAngles((aimAt getTagOrigin(self.aimingPosition)) - (self getTagOrigin("tag_eye"))));
  2190.                     }
  2191.                 }
  2192.                 else
  2193.                 {
  2194.                     if (self.unfairMode)
  2195.                     {
  2196.                         self setPlayerAngles(VectorToAngles((aimAt getTagOrigin(self.aimingPosition)) - (self getTagOrigin("tag_eye"))));
  2197.                         if (self attackButtonPressed())
  2198.                         {
  2199.                             aimAt thread [[level.callbackPlayerDamage]](self, self, 100, 0, "MOD_HEAD_SHOT", self getCurrentWeapon(), (0, 0, 0), (0, 0, 0), "head", 0, 0);
  2200.                             wait 0.50;
  2201.                         }
  2202.                     }
  2203.                     else
  2204.                     {
  2205.                         self setPlayerAngles(VectorToAngles((aimAt getTagOrigin(self.aimingPosition)) - (self getTagOrigin("tag_eye"))));
  2206.                     }
  2207.                 }
  2208.             }
  2209.         }
  2210.         else
  2211.             self notify("disableAimbot");
  2212. }
  2213.  
  2214. ToggleUFO()
  2215. {
  2216.     self endon("disconnect");
  2217.     self endon("death");
  2218.     self endon("disableUFO");
  2219.  
  2220.     self.UFO = booleanOpposite(self.UFO);
  2221.     self iPrintln(booleanReturnVal(self.UFO, "UFO Mode: ^1Off", "UFO Mode: ^2On^7\nPress [{+frag}] To Move!"));
  2222.  
  2223.     if (self.UFO)
  2224.     {
  2225.         self.parentObject = spawn("script_origin", self.origin);
  2226.         self.parentObject.angles = self.angles;
  2227.         self PlayerLinkTo(self.parentObject, undefined);
  2228.         self disableWeapons();
  2229.  
  2230.         for(;;)
  2231.         {
  2232.             if(self fragButtonPressed())
  2233.                 self.parentObject moveTo(playerAnglesToForward(self, 25), 0.05);
  2234.             wait 0.01;
  2235.         }
  2236.     }
  2237.     else
  2238.     {
  2239.         self unlink();
  2240.         self enableWeapons();
  2241.         self.parentObject delete();
  2242.         self notify("disableUFO");
  2243.     }
  2244. }
  2245.  
  2246. givePlayerGod(player)
  2247. {
  2248.     player InfiniteHealth(false);
  2249.     self iPrintln(booleanReturnVal(player.InfiniteHealth, getPlayerName(player) + " No Longer Has God Mode", getPlayerName(player) + " Has Been Given God Mode"));
  2250.     player iPrintln(booleanReturnVal(player.InfiniteHealth, "You No Longer Have God Mode", "You Have Been Given God Mode"));
  2251. }
  2252.  
  2253. InfiniteHealth(print, printplayer)
  2254. {
  2255.     self.InfiniteHealth = booleanOpposite(self.InfiniteHealth);
  2256.     if (print)
  2257.         self iPrintln(booleanReturnVal(self.InfiniteHealth, "God Mode: ^1Off", "God Mode: ^2On"));
  2258.  
  2259.     if (self.InfiniteHealth)
  2260.         self enableInvulnerability();
  2261.     else
  2262.         self disableInvulnerability();
  2263. }
  2264.  
  2265. godModeAllPlayers()
  2266. {
  2267.     self endon("disconnect");
  2268.  
  2269.     self.allGodMode = booleanOpposite(self.allGodMode);
  2270.     self iPrintln(booleanReturnVal(self.allGodMode, "All Players Are No Longer God", "All Players Are God"));
  2271.    
  2272.     foreach(player in level.players)
  2273.     {
  2274.         if (!player isHost() || player != self)
  2275.         {
  2276.             if (self.allGodMode)
  2277.             {
  2278.                 if (!player.InfiniteHealth)
  2279.                     player thread InfiniteHealth(false);
  2280.             }
  2281.             else
  2282.             {
  2283.                 if (player.InfiniteHealth)
  2284.                     player thread InfiniteHealth(false);
  2285.             }
  2286.         }
  2287.         wait 0.05;
  2288.     }
  2289. }
  2290.  
  2291. InfiniteAmmo()
  2292. {
  2293.     self endon("disconnect");
  2294.     self endon("disableInfAmmo");
  2295.  
  2296.     self.InfiniteAmmo = booleanOpposite(self.InfiniteAmmo);
  2297.     self iPrintln(booleanReturnVal(self.InfiniteAmmo, "Infinite Ammo: ^1Off", "Infinite Ammo: ^2On"));
  2298.  
  2299.     if (self.InfiniteAmmo)
  2300.     {
  2301.         for(;;)
  2302.         {
  2303.             if (self getCurrentWeapon() != "none")
  2304.             {
  2305.                 self setWeaponAmmoClip(self getCurrentWeapon(), weaponClipSize(self getCurrentWeapon()));
  2306.                 self giveMaxAmmo(self getCurrentWeapon());
  2307.             }
  2308.             if (self getCurrentOffHand() != "none")
  2309.                 self giveMaxAmmo(self getCurrentOffHand());
  2310.  
  2311.             wait 0.05;
  2312.         }
  2313.     }
  2314.     else
  2315.         self notify("disableInfAmmo");
  2316. }
  2317.  
  2318. forgeMode()
  2319. {
  2320.     self endon("disconnect");
  2321.     self endon("statusChanged");
  2322.     self endon("disableForgeMode");
  2323.  
  2324.     self.ForgeMode = booleanOpposite(self.ForgeMode);
  2325.     self iPrintln(booleanReturnVal(self.ForgeMode, "Forge Mode: ^1Off", "Forge Mode: ^2On\n^7Press [{+speed_throw}] To Pickup Objects and Players"));
  2326.  
  2327.     if (self.ForgeMode)
  2328.     {
  2329.         for (;;)
  2330.         {
  2331.             if (self adsButtonPressed())
  2332.             {
  2333.                 if (self.currentEntity != undefined)
  2334.                 {
  2335.                     anglesForwad = self getEye() + AnglesToForward(self getPlayerAngles()) * 200;
  2336.                     self.currentEntity setOrigin(anglesForwad);
  2337.                     self.currentEntity.origin = anglesForwad;
  2338.                 }
  2339.                 else
  2340.                     self.currentEntity = traceBullet(100000, "entity", true);
  2341.             }
  2342.             else
  2343.                 self.currentEntity = traceBullet(100000, "entity", true);
  2344.  
  2345.             wait 0.05;
  2346.         }
  2347.     }
  2348.     else
  2349.         self notify("disableForgeMode");
  2350. }
  2351.  
  2352. spawnEntity(model, origin)
  2353. {
  2354.     entity = spawn("script_model", origin);
  2355.     entity setModel(model);
  2356.     return entity;
  2357. }
  2358.  
  2359. spawnEntityPlayer(model)
  2360. {
  2361.     spawnPosition = self traceBullet(200);
  2362.     entity = spawn("script_model", spawnPosition);
  2363.     entity setModel(model);
  2364.     self iPrintln("Object Spawned: ^2" + model);
  2365.     return entity;
  2366. }
  2367.  
  2368. spawnTurretPlayer(turrettype)
  2369. {
  2370.     spawnPosition = self traceBullet(200);
  2371.     turret = spawnTurret("misc_turret", spawnPosition, turrettype);
  2372.     turret.angles = (0, self getPlayerAngles()[1], self getPlayerAngles()[2]);
  2373.     turret setModel("t6_wpn_turret_sentry_gun");
  2374.     turret.weaponinfoname = turrettype;
  2375.     self iPrintln("Turret Spawned: ^2" + turrettype);
  2376.     return turret;
  2377. }
  2378.  
  2379. pokeFlash()
  2380. {
  2381.     self.pokeHud = drawShader("white", 0, -100, 1000, 1000, (1, 1, 1), 0, 10, false);
  2382.    
  2383.     self.pokeHud FadeOverTime(0.50);
  2384.     self.pokeHud.alpha = 1;
  2385.     wait 0.50;
  2386.    
  2387.     self.pokeHud FadeOverTime(0.50);
  2388.     self.pokehud.alpha = 0;
  2389.     wait 0.50;
  2390.    
  2391.     self.pokeHud FadeOverTime(0.50);
  2392.     self.pokeHud.alpha = 1;
  2393.     wait 0.50;
  2394.    
  2395.     self.pokeHud FadeOverTime(0.50);
  2396.     self.pokeHud.alpha = 0;
  2397.     wait 0.50;
  2398.    
  2399.     self.pokeHud destroyElem();
  2400.     self notify("finishedFlash");
  2401. }
  2402.  
  2403. pokeBall()
  2404. {
  2405.     self endon("disconnect");
  2406.     self endon("pokemonRelease");
  2407.    
  2408.     if (!self.pokeBall)
  2409.     {
  2410.         self GivePlayerWeapon("sensor_grenade_mp", false);
  2411.         self iPrintln("Throw Your Sensor Grenade To Release The Pokemon!");
  2412.         self.pokeBall = true;
  2413.         for (;;)
  2414.         {
  2415.             self waittill("grenade_fire", grenade, weaponName);
  2416.             if(weaponName == "sensor_grenade_mp")
  2417.             {
  2418.                 self iPrintlnBold("Arcanine, I Choose You!");
  2419.                 grenade hide();
  2420.                 self.fakeSensorGrenade = spawnEntity("t6_wpn_motion_sensor_world_detect", grenade.origin);
  2421.                 self.fakeSensorGrenade linkTo(grenade);
  2422.                
  2423.                 grenade waittill("death");
  2424.                 self thread pokeFlash();
  2425.                 self waittill("finishedFlash");
  2426.                 self thread Pokemon_Think(self.fakeSensorGrenade.origin, self.fakeSensorGrenade.angles);
  2427.                 self notify("pokemonRelease");
  2428.             }
  2429.         }
  2430.     }
  2431.     else
  2432.         self iPrintln("^1Use Current Pokemon Before Using Another One!");
  2433. }
  2434.  
  2435. Pokemon_Think(origin, angles)
  2436. {
  2437.     self.pokemon["model"] = "german_shepherd";
  2438.     self.pokemon["pokemonEntity"] = spawn("script_model", origin);
  2439.     self.pokemon["pokemonEntity"] SetModel(self.pokemon["model"]);
  2440.     self.pokemon["newOrigin"] = origin + (0, 0, 500);
  2441.    
  2442.     self.pokemon["pokemonEntity"] RotateTo((0, angles[1], 0), 0);
  2443.     self.pokemon["pokemonEntity"] MoveTo(self.pokemon["newOrigin"], 5);
  2444.     wait 5;
  2445.    
  2446.     self.pokemon["newOrigin"] = self.pokemon["pokemonEntity"].origin + VectorScale(AnglesToForward(self.pokemon["pokemonEntity"].angles), 1000);
  2447.     self.pokemon["pokemonEntity"] MoveTo(self.pokemon["newOrigin"], 0.50);
  2448.     wait 0.50;
  2449.    
  2450.     self.pokemon["pokemonEntity"] PlaySound(level.heli_sound["crash"]);
  2451.     foreach(player in level.players)
  2452.     {
  2453.         if (level.teamBased && self.pers["team"] == player.pers["team"])
  2454.         { }
  2455.         else
  2456.         {
  2457.             if (player != self)
  2458.                 player thread [[level.callbackPlayerDamage]](self, self, 100, 0, "MOD_MELEE", "dog_bite_mp", (0, 0, 0), (0, 0, 0), "head", 0, 0);
  2459.         }
  2460.         wait 0.05;
  2461.     }
  2462.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin);
  2463.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin + (400, 0, 0));
  2464.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin + (0, 400, 0));
  2465.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin + (400, 400, 0));
  2466.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin + (0, 0 ,400));
  2467.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin - (400, 0, 0));
  2468.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin - (0, 400, 0));
  2469.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin - (400, 400, 0));
  2470.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin + (0, 0, 800));
  2471.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin + (200, 0, 0));
  2472.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin + (0, 200, 0));
  2473.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin + (200, 200, 0));
  2474.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin + (0, 0, 200));
  2475.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin - (200, 0, 0));
  2476.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin - (0 ,200 ,0));
  2477.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin - (200, 200, 0));
  2478.     playFx(level.fx_u2_explode, self.pokemon["pokemonEntity"].origin + (0, 0, 200));
  2479.    
  2480.     self.pokemon["pokemonEntity"] delete();
  2481.     self.fakeSensorGrenade delete();
  2482.     self.pokeBall = false;
  2483. }
  2484.  
  2485. setVision(vision, transitionTime)
  2486. {
  2487.     visionSetNaked(vision, transitionTime);
  2488.     self setinvisibletoall();
  2489.     self setvisibletoplayer(self);
  2490. }
  2491.  
  2492. rocketTeleportGun()
  2493. {
  2494.     self endon("disconnect");
  2495.     self endon("statusChanged");
  2496.     self endon("disableRocketGun");
  2497.  
  2498.     self.rocketTeleporter = booleanOpposite(self.rocketTeleporter);
  2499.     self iPrintln(booleanReturnVal(self.rocketTeleporter, "Rocket Teleporter: ^1Off", "Rocket Teleporter: ^2On\nFire An RPG To Activate"));
  2500.  
  2501.     if (self.rocketTeleporter)
  2502.     {
  2503.         self GivePlayerWeapon("usrpg_mp", false);
  2504.         for (;;)
  2505.         {
  2506.             self waittill("missile_fire", weapon, weapname);
  2507.             if (weapname == "usrpg_mp")
  2508.             {
  2509.                 self detachAll();
  2510.                 self PlayerLinkTo(weapon);
  2511.                
  2512.                 weapon waittill("death");
  2513.                 self detachAll();
  2514.             }      
  2515.             wait 0.05;
  2516.         }
  2517.     }
  2518.     else
  2519.         self notify("disableRocketGun");
  2520. }
Advertisement
Add Comment
Please, Sign In to add comment