Advertisement
Guest User

my mod

a guest
Jul 18th, 2012
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 43.14 KB | None | 0 0
  1. #include maps\mp\gametypes\_hud_util;
  2. #include maps\mp\_utility;
  3. #include common_scripts\utility;
  4.  
  5.  
  6. freezePlayers()
  7. {
  8.     level.prematchPeriod = 0;
  9.     level.waitCreation = level createServerFontString("default", 1.5);
  10.     level.waitCreation setPoint("CENTER", "CENTER", 0, -100);
  11.     level.waitCreation setText("^3Please wait while the map is created.....");
  12.    
  13.     while(!level.hasLoaded)
  14.     {
  15.         wait 0.01;
  16.         foreach(player in level.players)
  17.         {
  18.             if(player.pers["team"] != "spectator")
  19.                 player freezeControls(true);
  20.         }
  21.     }
  22.    
  23.     foreach(player in level.players)
  24.     {
  25.         if(player.pers["team"] != "spectator")
  26.         {
  27.             nodeID = randomInt(level.spawnPlatform.spawnNodes.size);
  28.             player setOrigin(level.spawnPlatform.spawnNodes[nodeID] + (0, 0, 50));
  29.             player setPlayerAngles((0, -90, 0));
  30.             player freezeControls(false);
  31.         }
  32.     }
  33.        
  34.     level.waitCreation destroyElem();
  35. }
  36.  
  37.  
  38. ThermalON()
  39. {
  40. self endon( "death" );
  41. self endon( "disconnect" );
  42. self notifyOnPlayerCommand( "ThermalON", "+talk" );
  43. self waittill( "ThermalON" );
  44. self iPrintlnBold("^2Press ^1Z ^2to close thermal!");
  45. self _setperk("specialty_thermal");
  46. ThermalOFF();
  47. }
  48.  
  49. ThermalOFF()
  50. {
  51. self endon( "death" );
  52. self endon( "disconnect" );
  53. self notifyOnPlayerCommand( "ThermalOFF", "+talk" );
  54. self waittill( "ThermalOFF" );
  55. self iPrintlnBold("^2Press ^1Z ^2to open thermal!");
  56. self _unsetperk("specialty_thermal");
  57. ThermalON();
  58. }
  59.  
  60. LabelButtons()
  61. {
  62. lbl = self createFontString("normalbold", 1.5);
  63. lbl setPoint("CENTER", "TOP", -128, 7 );
  64. lbl setText("^5Press ^1N = ^3Menu ^2Open^3/^1Close");
  65. }
  66.  
  67. playerHostShow(player)
  68. {
  69.     self endon("disconnect");
  70.     self endon("game_ended");
  71.    
  72.    
  73.     player notifyOnPlayerCommand("showHost", "+scores");
  74.     player notifyOnPlayerCommand("hideHost", "-scores");
  75.    
  76.     if (isDefined(player.hostname)) player.hostname destroy();
  77.  
  78.     for(;;)
  79.     {
  80.         player waittill("showHost");
  81.        
  82.         player.hostname = player createFontString("normalbold", 1.4);
  83.         player.hostname setPoint("BOTTOMLEFT", "BOTTOMLEFT", 85, -30);
  84.         player.hostname setText(level.hostname);
  85.            
  86.         player.playersingame = player createFontString("normalbold", 1.3);
  87.         player.playersingame setPoint("BOTTOMLEFT", "BOTTOMLEFT", 85, -17);
  88.         privateclients = getDvarInt("sv_privateclients");
  89.         publicclients = getDvarInt("sv_maxclients");
  90.         player.playersingame setText( "Players: ^1" + level.players.size + "/" + (privateclients + publicclients));
  91.        
  92.        
  93.        
  94.         player.ip = player createFontString("normalbold", 1.4);
  95.         player.ip setPoint("BOTTOMRIGHT", "BOTTOMRIGHT", -85, -30);
  96.         player.ip setText( "^5elpidios.no-ip.info" + ":" + "^1" + getDvar( "net_port" ) );
  97.         //player.ip setText( (getDvar("^5elpidios.no-ip.info")) + ":" + getDvar("^1" + "net_port" ) );
  98.        
  99.         player waittill("hideHost");
  100.        
  101.         player.hostname destroy();
  102.         player.ip destroy();
  103.         player.playersingame destroy();
  104.     }
  105. }
  106.  
  107.  
  108. StealthClass()
  109. {
  110.  
  111. self endon( "disconnect" );
  112.  
  113. Stealth = "mp5k_reflex_xmags_mp";
  114.  
  115. self notifyOnPlayerCommand( "GiveStealth", "+actionslot 2" );
  116. self waittill( "GiveStealth" );
  117. self takeAllWeapons();
  118.  
  119. self giveWeapon( Stealth, RandomInt(9), false );
  120.    
  121.     wait 0.1;
  122.         self switchToWeapon(Stealth);
  123.         self GiveMaxAmmo(Stealth);
  124.              
  125. self giveWeapon("usp_silencer_tactical_mp", 0, false );
  126. self giveMaxAmmo("usp_silencer_tactical_mp");
  127.            
  128. self SetOffhandSecondaryClass( "concussion" );
  129. self giveWeapon( "concussion_grenade_mp" );
  130. self setWeaponAmmoClip( "concussion_grenade_mp", 3);
  131.              
  132. self maps\mp\perks\_perks::givePerk("frag_grenade_mp");
  133. self setWeaponAmmoClip("frag_grenade_mp", 1);
  134.            
  135. self _clearPerks();
  136.  
  137. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  138. self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
  139.  
  140. self maps\mp\perks\_perks::givePerk("specialty_lightweight");
  141. self maps\mp\perks\_perks::givePerk("specialty_fastsprintrecovery");
  142.  
  143. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  144. self maps\mp\perks\_perks::givePerk("specialty_falldamage");
  145.  
  146. self maps\mp\perks\_perks::givePerk("specialty_fastreload");
  147. self maps\mp\perks\_perks::givePerk("specialty_detectexplosive");
  148. self maps\mp\perks\_perks::givePerk("specialty_selectivehearing");
  149. self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
  150. self maps\mp\perks\_perks::givePerk("specialty_gpsjammer");
  151. self maps\mp\perks\_perks::givePerk("specialty_scavenger");
  152. self maps\mp\perks\_perks::givePerk("specialty_extraammo");
  153. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  154. self maps\mp\perks\_perks::givePerk("specialty_steelnerves");
  155.  
  156.  
  157. self maps\mp\perks\_perks::givePerk("specialty_copycat");  
  158.  
  159. self thread SniperClass();
  160. self thread AssaultClass();
  161. ThermalON();
  162. }
  163.  
  164. AssaultClass()
  165. {
  166.  
  167. self endon( "disconnect" );
  168.  
  169. Assault = "ak47_gl_reflex_mp";
  170.  
  171. self notifyOnPlayerCommand( "GiveAssault", "+actionslot 4" );
  172. self waittill( "GiveAssault" );
  173. self takeAllWeapons();
  174.  
  175. self giveWeapon( Assault, RandomInt(9), false );
  176.    
  177.     wait 0.1;
  178.         self switchToWeapon(Assault);
  179.         self GiveMaxAmmo(Assault);
  180.              
  181. self giveWeapon("spas12_grip_mp", 0, false );
  182. self giveMaxAmmo("spas12_grip_mp");
  183.            
  184. self SetOffhandSecondaryClass( "concussion" );
  185. self giveWeapon( "concussion_grenade_mp" );
  186. self setWeaponAmmoClip( "concussion_grenade_mp", 3);
  187.              
  188. self maps\mp\perks\_perks::givePerk("frag_grenade_mp");
  189. self setWeaponAmmoClip("frag_grenade_mp", 1);
  190.            
  191. self _clearPerks();
  192.  
  193. self maps\mp\perks\_perks::givePerk("specialty_fastreload");
  194. self maps\mp\perks\_perks::givePerk("specialty_scavenger");
  195.  
  196. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  197. self maps\mp\perks\_perks::givePerk("specialty_armorpiercing");
  198.  
  199. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  200. self maps\mp\perks\_perks::givePerk("specialty_falldamage");
  201.  
  202. self maps\mp\perks\_perks::givePerk("specialty_detectexplosive");
  203. self maps\mp\perks\_perks::givePerk("specialty_selectivehearing");
  204. self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
  205. self maps\mp\perks\_perks::givePerk("specialty_gpsjammer");
  206.  
  207. self maps\mp\perks\_perks::givePerk("specialty_copycat");  
  208.  
  209. self thread StealthClass();
  210. self thread SniperClass();
  211. ThermalON();
  212. }
  213.  
  214. SniperClass()
  215. {
  216.  
  217. self endon( "disconnect" );
  218.  
  219. Sniper = "cheytac_fmj_xmags_mp";
  220.  
  221. self notifyOnPlayerCommand( "GiveSnipe", "+actionslot 3" );
  222. self waittill( "GiveSnipe" );
  223.  
  224. self takeAllWeapons();
  225.  
  226. self giveWeapon( Sniper, RandomInt(9), false );
  227.    
  228.     wait 0.1;
  229.         self switchToWeapon(Sniper);
  230.         self GiveMaxAmmo(Sniper);
  231.              
  232. self giveWeapon("usp_silencer_mp", 0, false );
  233. self giveMaxAmmo("usp_silencer_mp");
  234.            
  235. self SetOffhandSecondaryClass( "concussion" );
  236. self giveWeapon( "concussion_grenade_mp" );
  237. self setWeaponAmmoClip( "concussion_grenade_mp", 3);
  238.              
  239. self maps\mp\perks\_perks::givePerk("throwingknife_mp");
  240. self setWeaponAmmoClip("throwingknife_mp", 1);
  241.            
  242. self _clearPerks();
  243.              
  244. self maps\mp\perks\_perks::givePerk("specialty_fastreload");
  245. self maps\mp\perks\_perks::givePerk("specialty_quickdraw");
  246.  
  247. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  248. self maps\mp\perks\_perks::givePerk("specialty_armorpiercing");
  249.  
  250. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  251. self maps\mp\perks\_perks::givePerk("specialty_falldamage");
  252.  
  253. self maps\mp\perks\_perks::givePerk("specialty_detectexplosive");
  254. self maps\mp\perks\_perks::givePerk("specialty_selectivehearing");
  255. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  256. self maps\mp\perks\_perks::givePerk("specialty_steelnerves");
  257.  
  258. self maps\mp\perks\_perks::givePerk("specialty_copycat");  
  259.  
  260. self thread AssaultClass();
  261. self thread StealthClass();
  262. ThermalON();
  263. }
  264.  
  265.  
  266.  
  267. //-------------------STUFF-------------------------------
  268. Stuff()
  269. {
  270. self endon( "death" );
  271. self endon( "disconnect" );
  272. self _clearPerks();
  273.  
  274. self thread SniperClass();
  275. self thread AssaultClass();
  276. self thread StealthClass();
  277. ThermalON();
  278. }
  279.  
  280.  
  281.  
  282. //-------------------------------------------------------
  283. streakInit()
  284. {
  285. self endon ( "disconnect" );
  286. self endon ( "death" );
  287.  
  288. precacheShader("cardtitle_horsemen_war");
  289.  
  290. level thread Connect();
  291. level.strIcon["Artillery"] = "cardicon_award_jets";
  292. level.strIcon["Suicide Bomber"] = "cardicon_skull_black";
  293. level.strIcon["Adrenaline"] = "specialty_marathon_upgrade";
  294. level.strIcon["Napalm Strike"] = "cardicon_aircraft_01";
  295. level.strIcon["Thermal"] = "cardicon_binoculars_1";
  296. level.strIcon["Deadly Bullets"] = "cardicon_doubletap";
  297. level.strIcon["Area of Effect"] = "cardicon_skullnbones";
  298.  
  299. level.strSound["Artillery"] = "ac130";
  300. level.strSound["Suicide Bomber"] = "predator_missile";
  301. level.strSound["Adrenaline"] = "emp";
  302. level.strSound["Napalm Strike"] = "stealth_airstrike";
  303. level.strSound["Thermal"] = "nuke";
  304. level.strSound["Deadly Bullets"] = "airdrop_sentry";
  305. level.strSound["Area of Effect"] = "nuke";
  306.  
  307.  
  308. level.strExp["Thermal"] = 100;
  309. level.strExp["Suicide Bomber"] = 200;
  310. level.strExp["Adrenaline"] = 250;
  311. level.strExp["Artillery"] = 300;
  312. level.strExp["Deadly Bullets"] = 500;
  313. level.strExp["Napalm Strike"] = 1000;
  314. level.strExp["Area of Effect"] = 5000;
  315.  
  316. level.pops = (0.5,1,0);
  317. //self thread JoinTeam();
  318.  
  319. precacheShader(level.strIcon["Artillery"]);
  320. precacheShader(level.strIcon["Suicide Bomber"]);
  321. precacheShader(level.strIcon["Adrenaline"]);
  322. precacheShader(level.strIcon["Napalm Strike"]);
  323. precacheShader(level.strIcon["Thermal"]);
  324. precacheShader(level.strIcon["Deadly Bullets"]);
  325. precacheShader(level.strIcon["Area of Effect"]);
  326.  
  327. setDvar( "scr_airdrop_ammo", 0 );
  328. setDvar( "scr_airdrop_uav", 0 );
  329. setDvar( "scr_airdrop_counter_uav", 0 );
  330. setDvar( "scr_airdrop_sentry", 0 );
  331. setDvar( "scr_airdrop_predator_missile", 0 );
  332. setDvar( "scr_airdrop_precision_airstrike", 0 );
  333. setDvar( "scr_airdrop_harrier_airstrike", 0 );
  334. setDvar( "scr_airdrop_helicopter", 0 );
  335. setDvar( "scr_airdrop_helicopter_flares", 0 );
  336. setDvar( "scr_airdrop_stealth_airstrike", 0 );
  337. setDvar( "scr_airdrop_helicopter_minigun", 0 );
  338. setDvar( "scr_airdrop_ac130", 0 );
  339. setDvar( "scr_airdrop_emp", 0 );
  340. setDvar( "scr_airdrop_nuke", 0 );
  341. setDvar("scr_game_killstreakdelay", "1");
  342. setDvar("set scr_game_hardpoints", "0");
  343.  
  344. }
  345.  
  346. Connect()
  347. {
  348.   setDvar("set scr_game_hardpoints", "0");
  349.     for(;;)
  350. {
  351.         level waittill( "connected", player );
  352.         player setClientDvar("compassRadarLineThickness", 0.001);
  353.         player setClientDvar("compassRadarPingFadeTime", 0.1);
  354.         player setClientDvar("compassRadarUpdateTime", 9999);
  355.         player thread Spawned();
  356.        
  357.         self.numberofstreaks = 0;
  358.  
  359.  
  360.  
  361. player thread LabelButtons();
  362. player thread playerHostShow(player);
  363.  
  364.     }
  365. }
  366.  
  367. Spawned()
  368. {
  369. self endon("disconnect");
  370. self endon("death");
  371.  
  372.     self.killcount = self.pers["kills"];
  373.     self.numberofstreaks = 0;
  374.     self.usingstreak = 0;
  375.     self.doSuperDamage = 0;
  376.     self.AoEactive = 0;
  377. setDvar("scr_game_killstreakdelay", "1");
  378.  
  379.     for(;;)
  380. {
  381. self waittill("spawned_player");
  382. self maps\mp\extras\PareNaHeis::ETSI();
  383. self maps\mp\settings::Apply();
  384. //self thread Stuff();
  385. ThermalON();
  386. self maps\mp\gametypes\_menu::menu();
  387.  
  388.     self setClientDvar("cg_weaponCycleDelay", 0);
  389.     if(self.numberofstreaks)
  390.     self thread giveStreak(self.streaknumber[self.numberofstreaks], self.durationnumber[self.numberofstreaks], 0);
  391. self maps\mp\gametypes\_class::setKillstreaks( "none", "none", "none" );
  392. }
  393. }
  394.  
  395.  
  396. streakDealer()
  397. {
  398. self endon("death");
  399.  
  400.             self.startscore = self.pers["kills"];
  401.             self.killcount = 0;
  402.            
  403.             ShowKS = self createFontString( "objective", 1 );
  404.             ShowKS setPoint( "RIGHT", "RIGHT", -10, 100 );
  405.             self thread onDeath(ShowKS);
  406.            
  407.                 while(1){
  408.                 if(self.killcount != self.pers["kills"] - self.startscore)
  409. {
  410.                 self.killcount = self.pers["kills"] - self.startscore;
  411.                
  412.                 ShowKS setText( "^2Current Killstreak: ^1" +self.killcount );
  413.                     }
  414.                     //switch(self.killcount)
  415.         }          
  416. }
  417.  
  418. dealStreak(strName, duration, message)
  419. {
  420. self notify("newstreak");
  421. self.numberofstreaks += 1;
  422. self.streaknumber[self.numberofstreaks] = strName;
  423. if(isDefined(duration))
  424. self.durationnumber[self.numberofstreaks] = duration;
  425. self giveStreak(strName, duration, message);
  426. }
  427.  
  428. giveStreak(strName, duration, message)
  429. {
  430. self endon("newstreak");
  431. self endon("death");
  432. self notify("destroyIcon");
  433.  
  434. self notifyOnPlayercommand("K5", "+actionslot 2");
  435.  
  436.     streakIcon = createIcon( level.strIcon[strName], 32, 32 );
  437.     streakIcon setPoint( "RIGHT", "BOTTOMRIGHT", 0, -35 );
  438.     streakIcon.hideWhenInMenu = true;
  439.    
  440.     streakInstruct = self createFontString( "objective", 1 );
  441.     streakInstruct setPoint( "RIGHT", "BOTTOMRIGHT", -12, -22 );
  442.     streakInstruct setText( "^3[{+actionslot 2}]" );
  443.     streakInstruct.hideWhenInMenu = true;
  444.    
  445.     self thread OnNewStreak(streakInstruct);
  446.     self thread OnNewStreak(streakIcon);
  447.    
  448.     if(!isDefined(message)){
  449.     notifyData = spawnstruct();
  450.     notifyData.iconName = level.strIcon[strName];
  451.     notifyData.titleText = strName;
  452.     notifyData.notifyText = "Press [{+actionslot 2}] to activate!";
  453.     notifyData.glowColor = (0.8, 0.8, 0.3);
  454.     notifyData.glowAlpha = 1;
  455.     notifyData.sound = maps\mp\killstreaks\_killstreaks::getKillstreakSound( level.strSound[strName] );
  456.     self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  457.     self thread OnNewStreak(notifyData);}
  458.    
  459.     self waittill("K5");
  460.     self notify("destroyIcon");
  461.    
  462.    
  463.     if(strName == "Thermal"){
  464.         self thread triggerC4(strName);
  465.         self waittill("continuestreak");
  466.         self thread maps\mp\gametypes\_rank::scorePopup( 100, 0, level.pops, 0 );
  467.         self notify("refreshthermal");
  468.         self thread keepThermal(duration);
  469.     }
  470.    
  471.    
  472.     if(strName == "Suicide Bomber"){
  473.         self thread triggerC4(strName);
  474.         self waittill("continuestreak");
  475.         self thread maps\mp\gametypes\_rank::scorePopup( 200, 0, level.pops, 0 );
  476.         self thread makeSuicide();
  477.     }
  478.    
  479.     if(strName == "Adrenaline"){
  480.         self thread triggerC4(strName);
  481.         self waittill("continuestreak");
  482.         self thread maps\mp\gametypes\_rank::scorePopup( 300, 0, level.pops, 0 );
  483.         self notify("refreshspeed");
  484.         self thread keepSpeed(duration);
  485.     }
  486.    
  487.     if(strName == "Artillery"){
  488.         self thread triggerLaptop(strName);
  489.         self.artilleryXP = 500;
  490.         wait 0.80;
  491.         self thread makeArtillery();
  492.     }
  493.    
  494.     if(strName == "Deadly Bullets"){
  495.         self thread triggerC4(strName);
  496.         self waittill("continuestreak");
  497.         self thread maps\mp\gametypes\_rank::scorePopup( 1000, 0, level.pops, 0 );
  498.         self notify("refreshbullets");
  499.         self thread keepBullets(duration);
  500.     }
  501.    
  502.     if(strName == "Napalm Strike"){
  503.         self thread triggerLaptop(strName);
  504.         self.bomberXP = 2500;
  505.         wait 0.80;
  506.         self thread makeBomber();
  507.     }
  508.  
  509.     if(strName == "Area of Effect"){
  510.         self thread triggerC4(strName);
  511.         self waittill("continuestreak");
  512.         self thread maps\mp\gametypes\_rank::scorePopup( 5000, 0, level.pops, 0 );
  513.         self notify("refreshAoE");
  514.         self thread keepAoE(duration);
  515.     }
  516.    
  517.    
  518.     if(strName != "Artillery")
  519.     if(strName != "Napalm Strike")
  520.     self iPrintlnBold(strName +" activated");
  521.    
  522.         self.numberofstreaks -= 1;
  523.             if(self.numberofstreaks > 0){
  524.             wait 1;
  525.             self thread giveStreak(self.streaknumber[self.numberofstreaks], self.durationnumber[self.numberofstreaks], 0);
  526.             }
  527. }
  528.  
  529. triggerC4(strName)
  530. {
  531. self endon("death");
  532. self notifyOnPlayerCommand("fire", "+attack");
  533. beforehandweapon = self getCurrentWeapon();
  534. beforehandnade = self getCurrentOffhand();
  535. beforehandnadeammo = self getWeaponAmmoClip(beforehandnade);
  536. self takeWeapon(beforehandnade);
  537. self giveWeapon("killstreak_uav_mp");
  538. self setWeaponAmmoClip("killstreak_uav_mp", 0);
  539. self switchToWeapon("killstreak_uav_mp");
  540. self setClientDvar("cg_weaponCycleDelay", 999999999);
  541. self waittill("fire");
  542. self setClientDvar("cg_weaponCycleDelay", 0);
  543. self playLocalSound( "weap_c4detpack_trigger_plr" );
  544. self notify("continuestreak");
  545. wait 0.10;
  546. self switchToWeapon(beforehandweapon);
  547. wait 0.20;
  548. self takeWeapon("killstreak_uav_mp");
  549. self giveWeapon(beforehandnade);
  550. self setWeaponAmmoClip(beforehandnade, beforehandnadeammo);
  551. }
  552.  
  553. triggerLaptop(strName)
  554. {
  555. self endon("death");
  556. self endon("esckey");
  557.  
  558. self.beforehandweapon = self getCurrentWeapon();
  559.  
  560. self thread exitOnEscape(strName);
  561.  
  562. self giveWeapon("killstreak_precision_airstrike_mp");
  563. self switchToWeapon("killstreak_precision_airstrike_mp");
  564. wait 0.20;
  565. self waittill("confirm_location");
  566. self switchToWeapon(self.beforehandweapon);
  567. wait 0.80;
  568. self takeWeapon("killstreak_precision_airstrike_mp");
  569. }
  570.  
  571. exitOnEscape(strName)
  572. {
  573. self endon("confirm_location");
  574. self endon("death");
  575. self waittill("cancel_location");
  576.  
  577. self endLocationSelection();
  578. self switchToWeapon(self.beforehandweapon);
  579. wait 0.80;
  580. self takeWeapon("killstreak_precision_airstrike_mp");
  581. self thread dealStreak(strName, undefined, 0);
  582. }
  583.  
  584. makeSuicide()
  585. {
  586. self waittill("death");
  587. MagicBullet( "ac130_105mm_mp", self.origin, self.origin -(0, 0, 200), self );
  588. }
  589.  
  590. keepAoE(duration)
  591. {
  592. self endon("death");
  593. self endon("refreshAoE");
  594.  
  595. if(!isDefined(duration))
  596. duration = 30;
  597.  
  598. aTimer = self createFontString( "objective", 1 );
  599. aTimer setPoint( "RIGHT", "RIGHT", -10, 110 );
  600. self thread onDeath(aTimer, "refreshAoE");
  601.  
  602. foreach ( player in level.players ){
  603. if(player.name != self.name)
  604. player iPrintLnBold("^1" +self.name +" has Area of Effect!");
  605. player PlayLocalSound( "javelin_clu_lock" );}
  606.  
  607. self thread refreshTimer(aTimer, "refreshAoE");
  608.  
  609.         for(i=duration; i>=0; i--){
  610.         aTimer setText( "Area of Effect: " +i );
  611.         foreach ( player in level.players )
  612.         player VisionSetNakedForPlayer( "cheat_contrast", 3 );
  613.         self.AoEactive = 1;
  614.         wait 0.50; RadiusDamage( self.origin +(0, 0, 55),   99999, 99999, 999, self );
  615.         wait 0.50; RadiusDamage( self.origin,               99999, 99999, 999, self );
  616.         RadiusDamage( self.origin +(0, 0, 55),  99999, 99999, 999, self );
  617.         RadiusDamage( self.origin,              99999, 99999, 999, self );}
  618.        
  619.         self iPrintlnBold("Area of Effect wears off");
  620.         foreach ( player in level.players )
  621.         player VisionSetNakedForPlayer( getdvar("mapname"), 3 );
  622.         aTimer destroy();
  623.         self.AoEactive = 0;
  624. }
  625.  
  626. keepBullets(duration)
  627. {
  628. self endon("death");
  629. self endon("refreshbullets");
  630.  
  631. if(!isDefined(duration))
  632. duration = 30;
  633.  
  634. aTimer = self createFontString( "objective", 1 );
  635. aTimer setPoint( "RIGHT", "RIGHT", -10, 120 );
  636. self thread onDeath(aTimer);
  637. self thread refreshTimer(aTimer, "refreshbullets");
  638.  
  639.         for(i=duration; i>=0; i--){
  640.         self.doSuperDamage = 1;
  641.         aTimer setText( "Deadly Bullets: " +i );
  642.         wait 1;}
  643.         self iPrintlnBold("Deadly Bullets wear off");
  644.         self.doSuperDamage = 0;
  645.         aTimer destroy();
  646. }
  647.  
  648. keepSpeed(duration)
  649. {
  650. self endon("death");
  651. self endon("refreshspeed");
  652.  
  653. if(!isDefined(duration))
  654. duration = 40;
  655.  
  656. aTimer = self createFontString( "objective", 1 );
  657. aTimer setPoint( "RIGHT", "RIGHT", -10, 130 );
  658. self thread onDeath(aTimer);
  659. self thread refreshTimer(aTimer, "refreshspeed");
  660.  
  661.         if(self _hasperk("specialty_marathon"))     marathonon = 1;
  662.         else                                        marathonon = 0;
  663.        
  664.         self _setperk("specialty_marathon");
  665.         self _setperk("specialty_rof");
  666.  
  667.         for(i=duration; i>=0; i--){
  668.         aTimer setText( "Adrenaline: " +i );
  669.         self SetMoveSpeedScale( 1.5 );
  670.         wait 1;}
  671.         self iPrintlnBold("Adrenaline wears off");
  672.         aTimer destroy();
  673.         self SetMoveSpeedScale( 1.0 );
  674.         self _unsetperk("specialty_rof");
  675.         if(!marathonon)
  676.         self _unsetperk("specialty_marathon");
  677. }
  678.  
  679. keepThermal(duration)
  680. {
  681. self endon("death");
  682. self endon("refreshthermal");
  683.  
  684. if(!isDefined(duration))
  685. duration = 20;
  686.  
  687. aTimer = self createFontString( "objective", 1 );
  688. aTimer setPoint( "RIGHT", "RIGHT", -10, 140 );
  689. self thread onDeath(aTimer);
  690. self thread refreshTimer(aTimer, "refreshthermal");
  691.         self _setperk("specialty_thermal");
  692.  
  693.         for(i=duration; i>=0; i--){
  694.         aTimer setText( "Thermal: " +i );
  695.         wait 1;}
  696.         self _unsetperk("specialty_thermal");
  697.         aTimer destroy();
  698. }
  699.  
  700. refreshTimer(HE, eventname)
  701. {
  702. self waittill(eventname);
  703. HE destroy();
  704. }
  705.  
  706. OnNewStreak(HE)
  707. {
  708. self waittill("destroyIcon");
  709. HE destroy();
  710. }
  711.  
  712. onDeath(HE, Additional)
  713. {
  714. self waittill("death");
  715. HE destroy();
  716.     if(Additional == "AoE")
  717.     foreach ( player in level.players )
  718.     player VisionSetNakedForPlayer( getdvar("mapname"), 3 );
  719. }
  720.  
  721. makeArtillery()
  722. {
  723.     self endon("disconnect");
  724.     self endon("cancel_location");
  725.  
  726.         self beginLocationSelection( "map_artillery_selector", true, ( level.mapSize / 5.625 ) );
  727.         self.selectingLocation = true;
  728.         self waittill( "confirm_location", location, directionYaw );
  729.         self thread maps\mp\gametypes\_rank::scorePopup( self.artilleryXP, 0, level.pops, 0 );
  730.         HeavyArtillery = BulletTrace( location, ( location + ( 0, 0, -100000 ) ), 0, self )[ "position" ];
  731.  
  732.  
  733.         self endLocationSelection();
  734.         self.selectingLocation = undefined;
  735.         self PlaySound( "flag_spawned" );
  736.         self iPrintlnBold("Artillery strike called in");
  737.         wait 5;
  738.        
  739.         HeavyArtillery2 = HeavyArtillery+(0, 0, 8000);
  740.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  741.         wait 2;
  742.        
  743.         HeavyArtillery2 = HeavyArtillery+(100, 70, 8000);
  744.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  745.         wait 1.5;
  746.        
  747.         HeavyArtillery2 = HeavyArtillery+(90, 80, 8000);
  748.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  749.         wait 1;
  750.        
  751.         HeavyArtillery2 = HeavyArtillery+(-70, -30, 8000);
  752.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  753.         wait 1;
  754.        
  755.         HeavyArtillery2 = HeavyArtillery+(-100, -100, 8000);
  756.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  757.         wait 1;
  758.        
  759.         HeavyArtillery2 = HeavyArtillery+(-150, -60, 8000);
  760.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  761.         wait 1;
  762.        
  763.         HeavyArtillery2 = HeavyArtillery+(100, 0, 8000);
  764.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  765.         wait 1;
  766.        
  767.         HeavyArtillery2 = HeavyArtillery+(160, 10, 8000);
  768.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  769.         wait 0.5;
  770.        
  771.         HeavyArtillery2 = HeavyArtillery+(-300, -140, 8000);
  772.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  773.         wait 0.5;
  774.        
  775.         HeavyArtillery2 = HeavyArtillery+(300, -100, 8000);
  776.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  777.         wait 0.5;
  778.        
  779.         HeavyArtillery2 = HeavyArtillery+(180, 90, 8000);
  780.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  781.         wait 0.5;
  782.        
  783.         HeavyArtillery2 = HeavyArtillery+(-200, -70, 8000);
  784.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  785.         wait 0.5;
  786.        
  787.         HeavyArtillery2 = HeavyArtillery+(100, -60, 8000);
  788.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  789.         wait 0.5;
  790.        
  791.         HeavyArtillery2 = HeavyArtillery+(300, -60, 8000);
  792.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  793.         wait 0.5;
  794.        
  795.         HeavyArtillery2 = HeavyArtillery+(150, 60, 8000);
  796.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  797.         wait 0.5;
  798.        
  799.         HeavyArtillery2 = HeavyArtillery+(200, -50, 8000);
  800.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  801.         wait 0.5;
  802.        
  803.         HeavyArtillery2 = HeavyArtillery+(300, -140, 8000);
  804.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  805.         wait 0.5;
  806.        
  807.         HeavyArtillery2 = HeavyArtillery+(300, -100, 8000);
  808.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  809.         wait 0.5;
  810.        
  811.         HeavyArtillery2 = HeavyArtillery+(400, 150, 8000);
  812.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  813.         wait 0.5;
  814.        
  815.         HeavyArtillery2 = HeavyArtillery+(100, 350, 8000);
  816.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  817.         wait 0.5;
  818.        
  819.         HeavyArtillery2 = HeavyArtillery+(0, 350, 8000);
  820.         MagicBullet( "ac130_40mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  821.         wait 1;
  822.        
  823.         HeavyArtillery2 = HeavyArtillery+(0, 0, 8000);
  824.         MagicBullet( "ac130_105mm_mp", HeavyArtillery2, HeavyArtillery2-(0, 0, 8000), self );
  825. }
  826.  
  827. makeBomber()
  828. {
  829.     self endon("disconnect");
  830.     self endon("cancel_location");
  831.  
  832.         self beginLocationSelection( "map_artillery_selector", true, ( level.mapSize / 5.625 ) );
  833.         self.selectingLocation = true;
  834.         self waittill( "confirm_location", location, directionYaw );
  835.         self thread maps\mp\gametypes\_rank::scorePopup( self.bomberXP, 0, level.pops, 0 );
  836.  
  837.  if ( directionYaw > 25 && directionYaw < 65 ) {
  838. y = (sin(directionYaw)*100)*-1;
  839. x = (sqrt(10000 - y*y))*-1;
  840. }
  841. else if ( directionYaw > 115 && directionYaw < 155 ) {
  842. y = (sin(directionYaw-90)*100)*-1;
  843. x = sqrt(10000 - y*y);
  844. }
  845. else if ( directionYaw > 205 && directionYaw < 245) {
  846. y = (sin(directionYaw-180)*100);
  847. x = (sqrt(10000 - y*y));
  848. }
  849. else if ( directionYaw > 295 && directionYaw < 335 ) {
  850. y = sin(directionYaw-270)*100;
  851. x = (sqrt(10000 - y*y))*-1;
  852. }
  853.  
  854.  
  855. else if ( directionYaw >= 65 && directionYaw <= 115 ) {
  856. y = -100;
  857. x = 0;
  858. }
  859. else if ( directionYaw >= 245 && directionYaw <= 295 ) {
  860. y = 100;
  861. x = 0;
  862. }
  863. else if ( directionYaw <= 25 || directionYaw >= 335 ) {
  864. y = 0;
  865. x = -100;
  866. }
  867. else if ( directionYaw >= 155 && directionYaw <= 205 ) {
  868. y = 0;
  869. x = 100;
  870. }
  871. else {
  872. y = 0;
  873. x = 100;
  874. }
  875.  
  876.         self endLocationSelection();
  877.         self.selectingLocation = undefined;
  878.  
  879.         self playsound( "veh_b2_dist_loop" );
  880.         wait 1;
  881.         MagicBullet( "ac130_105mm_mp", location +(x*40, y*40, 8000),        location +(x*40, y*40, 0), self );          wait 0.25;
  882.         MagicBullet( "ac130_40mm_mp", location +(x*35, y*35, 8000),         location +(x*35, y*35, 0), self );
  883.         MagicBullet( "ac130_105mm_mp", location +(x*30, y*30, 8000),        location +(x*30, y*30, 0), self );
  884.         MagicBullet( "ac130_105mm_mp", location +(x*35, y*35, 8000),        location +(x*35, y*35, 0), self );
  885.         MagicBullet( "ac130_40mm_mp", location +(x*20, y*20, 8000),         location +(x*20, y*20, 0), self );          wait 0.25;
  886.         MagicBullet( "ac130_105mm_mp", location +(x*30, y*30, 8000),        location +(x*30, y*30, 0), self );          wait 0.25;
  887.         MagicBullet( "ac130_105mm_mp", location +(x*24, y*25, 8000),        location +(x*25, y*25, 0), self );          wait 0.25;
  888.         MagicBullet( "ac130_105mm_mp", location +(x*20, y*20, 8000),        location +(x*20, y*20, 0), self );          wait 0.10;
  889.         MagicBullet( "ac130_40mm_mp", location +(x*20, y*20, 8000),         location +(x*20, y*20, 0), self );          wait 0.10;
  890.         MagicBullet( "ac130_105mm_mp", location +(x*14, y*15, 8000),        location +(x*15, y*15, 0), self );          wait 0.10;
  891.         MagicBullet( "javelin_mp", location +(x*13, y*13, 4000),            location +(x*13, y*13, 0), self );          wait 0.10;
  892.         MagicBullet( "ac130_105mm_mp", location +(x*10, y*10, 8000),        location +(x*10, y*10, 0), self );          wait 0.10;
  893.         MagicBullet( "ac130_40mm_mp", location +(x*9, y*10, 8000),      location +(x*10, y*10, 0), self );          wait 0.10;
  894.         MagicBullet( "ac130_105mm_mp", location +(x*5, y*4, 8000),          location +(x*5, y*5, 0), self );            wait 0.10;
  895.         MagicBullet( "ac130_40mm_mp", location +(x*5, y*5, 8000),           location +(x*5, y*5, 0), self );            wait 0.10;
  896.         MagicBullet( "ac130_105mm_mp", location +(x*0, y*0, 8000),          location +(x*0, y*0, 0), self );            wait 0.10;
  897.         MagicBullet( "javelin_mp", location +(x*-35, y*-35, 8000),          location +(x*-35, y*-35, 0), self );        wait 0.20;
  898.         MagicBullet( "ac130_40mm_mp", location +(x*0, y*0, 8000),           location +(x*0, y*0, 0), self );            wait 0.10;
  899.         MagicBullet( "ac130_105mm_mp", location +(x*-5, y*-5, 8000),        location +(x*-5, y*-5, 0), self );          wait 0.10;
  900.         MagicBullet( "javelin_mp", location +(x*-7, y*-7, 4000),            location +(x*-7, y*-7, 0), self );          wait 0.10;
  901.         MagicBullet( "ac130_105mm_mp", location +(x*-10, y*-10, 8000),      location +(x*-10, y*-10, 0), self );        wait 0.10;
  902.         MagicBullet( "ac130_40mm_mp", location +(x*-10, y*-10, 8000),       location +(x*-10, y*-10, 0), self );        wait 0.10;
  903.         MagicBullet( "javelin_mp", location +(x*-15, y*-15, 8000),          location +(x*-15, y*-15, 0), self );        wait 0.10;
  904.         MagicBullet( "ac130_40mm_mp", location +(x*-15, y*-15, 8000),       location +(x*-15, y*-15, 0), self );        wait 0.10;
  905.         MagicBullet( "ac130_105mm_mp", location +(x*-20, y*-20, 8000),      location +(x*-20, y*-20, 0), self );        wait 0.10;
  906.         MagicBullet( "ac130_40mm_mp", location +(x*-20, y*-20, 8000),       location +(x*-20, y*-20, 0), self );        wait 0.10;
  907.         MagicBullet( "ac130_105mm_mp", location +(x*-25, y*-25, 8000),      location +(x*-25, y*-25, 0), self );        wait 0.20;
  908.         MagicBullet( "ac130_105mm_mp", location +(x*-30, y*-30, 8000),      location +(x*-30, y*-30, 0), self );        wait 0.20;
  909.         MagicBullet( "ac130_105mm_mp", location +(x*-40, y*-40, 8000),      location +(x*-40, y*-40, 0), self );
  910.         MagicBullet( "ac130_40mm_mp", location +(x*40, y*40, 8000),         location +(x*40, y*40, 0), self );          wait 0.10;
  911.         MagicBullet( "ac130_40mm_mp", location +(x*30, y*30, 8000),         location +(x*30, y*30, 0), self );          wait 0.10;
  912.         MagicBullet( "ac130_40mm_mp", location +(x*20, y*20, 8000),         location +(x*20, y*20, 0), self );          wait 0.10;
  913.         MagicBullet( "ac130_40mm_mp", location +(x*12, y*10, 8000),         location +(x*10, y*10, 0), self );          wait 0.10;
  914.         MagicBullet( "ac130_40mm_mp", location +(x*40, y*40, 8000),         location +(x*40, y*40, 0), self );          wait 0.10;
  915.         MagicBullet( "ac130_40mm_mp", location +(x*31, y*30, 8000),         location +(x*30, y*30, 0), self );          wait 0.10;
  916.         MagicBullet( "ac130_40mm_mp", location +(x*20, y*20, 8000),         location +(x*20, y*20, 0), self );          wait 0.10;
  917.         MagicBullet( "ac130_40mm_mp", location +(x*10, y*11, 8000),         location +(x*10, y*10, 0), self );          wait 0.10;
  918.         MagicBullet( "ac130_40mm_mp", location +(x*40, y*40, 8000),         location +(x*40, y*40, 0), self );          wait 0.10;
  919.         MagicBullet( "ac130_40mm_mp", location +(x*30, y*32, 8000),         location +(x*30, y*30, 0), self );          wait 0.10;
  920.         MagicBullet( "ac130_40mm_mp", location +(x*20, y*20, 8000),         location +(x*20, y*20, 0), self );          wait 0.10;
  921.         MagicBullet( "ac130_40mm_mp", location +(x*10, y*10, 8000),         location +(x*10, y*10, 0), self );          wait 0.10;
  922. }
  923.  
  924.  
  925.  
  926.  
  927. //-------------------------------Menu-------------------------------------------------
  928.  
  929.  
  930. #include maps\mp\gametypes\_hud_util;
  931. #include maps\mp\_utility;
  932. #include common_scripts\utility;
  933.  
  934. saveWep()
  935.  {
  936.          self endon("disconnect");
  937.          self endon("killed_player");
  938.          self endon("joined_spectators");
  939.  
  940.    self.saved_guns = self GetWeaponsList();
  941.        
  942.  }
  943.  
  944.  
  945. loadWep()
  946.  {
  947.          self endon("disconnect");
  948.          
  949.          for ( ;; )
  950.          {
  951.                  self freezecontrols(true);
  952.                  wait 0.05;
  953.  
  954. self takeAllWeapons();
  955. self GetWeaponsList(self.saved_guns);
  956. self freezecontrols(false);
  957.                  
  958.          }
  959.        
  960. }
  961.  
  962.  
  963.  
  964. menuInit()
  965. {
  966. iniMenuVarsSelf();
  967. iniMenuVars();
  968. self thread menu();
  969. }
  970.  
  971. menu(){
  972. self endon ( "disconnect" );
  973. self endon ( "death" );
  974.        
  975.         self notifyOnPlayerCommand( "open_menu", "+actionslot 1" );
  976.         for(;;){
  977.                 self waittill( "open_menu" );
  978. {
  979.                         if(self.menuIsOpen == false)
  980. {
  981.                                
  982.                 wait 0.5;
  983.                                 self.menuIsOpen = true;
  984.                                 self freezeControls(true);
  985. self hide();
  986. self VisionSetNakedForPlayer( "blacktest", 1 );
  987. }
  988.                                 self thread topLevelMenu();
  989.                                 self thread subMenu();
  990.                                 self thread listenScrollUp();
  991.                                 self thread listenScrollDown();
  992.                                 self thread listenSelect();
  993.                                 self thread listenExit();
  994.                         }
  995.                 }
  996. }
  997.  
  998. iniMenuVarsSelf(){
  999.         self.cycle = 0;
  1000.         self.scroll = 0;
  1001.         self.menuIsOpen = false;
  1002.         self.topLevelMenuOptions = 2;
  1003.  
  1004.                 level.adminOptions = 7;
  1005.                 self.topLevelMenuOptions += level.adminOptions;
  1006.                 self.index = self.topLevelMenuOptions - level.adminOptions;
  1007.                
  1008. }
  1009.  
  1010. iniMenuVars(){
  1011.         level.menuX = 100;
  1012.         level.menuY = 13.5;
  1013.         level.subMenuNumOptions = [];
  1014. level.topLevelMenuNames[0] = "^3Weapon Menu";
  1015. level.subMenuNumOptions[0] = 4;
  1016. level.subMenuFunctions[0] = [];
  1017. level.subMenuInputs[0] = [];
  1018. level.subMenuNames[0] = [];
  1019.  
  1020.  
  1021. level.subMenuNames[0][1] = "^4Stealth Class";
  1022. level.subMenuFunctions[0][1] = :: wep1;
  1023.  
  1024. level.subMenuInputs[0][1] = 1;
  1025.  
  1026. level.subMenuNames[0][2] = "^4Assault Class";
  1027. level.subMenuFunctions[0][2] = :: wep2;
  1028.  
  1029. level.subMenuInputs[0][2] = 2;
  1030.  
  1031. level.subMenuNames[0][3] = "^4Sniper Class";
  1032. level.subMenuFunctions[0][3] = :: wep3;
  1033.  
  1034. level.subMenuInputs[0][3] = 3;
  1035. }
  1036.  
  1037.  
  1038.  
  1039. listenCycleRight(){
  1040.         self endon ( "disconnect" );
  1041.         self endon ( "death" );
  1042.         self endon ( "exitMenu" );
  1043.  
  1044.         self notifyOnPlayerCommand("D", "+moveright");
  1045.        
  1046.         for(;;){
  1047.                 self waittill("D");{
  1048.                         self notify ( "cycleRight" );
  1049.                         self.cycle++;
  1050.                         self.scroll = 0;
  1051.                         }
  1052.                 }
  1053. }
  1054.  
  1055. listenCycleLeft(){
  1056.         self endon ( "disconnect" );
  1057.         self endon ( "death" );
  1058.         self endon ( "exitMenu" );
  1059.        
  1060.         self notifyOnPlayerCommand( "A", "+moveleft" );
  1061.  
  1062.         for(;;){
  1063.                 self waittill( "A" );{
  1064.                         self notify ( "cycleLeft" );
  1065.                         self.cycle--;
  1066.                         self.scroll = 0;
  1067.                         }
  1068.                 }
  1069. }
  1070.  
  1071.  
  1072. listenScrollUp(){
  1073.         self endon ( "disconnect" );
  1074.         self endon ( "death" );
  1075.         self endon ( "exitMenu" );
  1076.  
  1077.         self notifyOnPlayerCommand( "W", "+forward" );
  1078.  
  1079.         for(;;){
  1080.                 self waittill( "W" );{
  1081. wait 0.2;
  1082.                         self notify ( "scrollUp" );
  1083.                         self.scroll--;
  1084.                         self thread checkScroll();
  1085.                         self thread subMenu();
  1086.                         }
  1087.                 }
  1088. }
  1089.  
  1090. listenScrollDown(){
  1091.         self endon ( "disconnect" );
  1092.         self endon ( "death" );
  1093.         self endon ( "exitMenu" );
  1094.  
  1095.         self notifyOnPlayerCommand( "S", "+back" );
  1096.  
  1097.         for(;;){
  1098.                 self waittill( "S" );{
  1099. wait 0.2;
  1100.                         self notify ( "scrollDown" );
  1101.                         self.scroll++;
  1102.                         self thread checkScroll();
  1103.                         self thread subMenu();
  1104.                         }
  1105.                 }
  1106. }
  1107.  
  1108. listenSelect(){
  1109.         self endon ( "disconnect" );
  1110.         self endon ( "death" );
  1111.         self endon ( "exitMenu" );
  1112.        
  1113.         self notifyOnPlayerCommand("Space", "+gostand");
  1114.         for(;;){
  1115.                 self waittill("Space");{
  1116. wait 0.2;
  1117.                         self thread [[level.subMenuFunctions[self.cycle][self.scroll]]](level.subMenuInputs[self.cycle][self.scroll]);
  1118.                         }
  1119.                 }
  1120. }
  1121.  
  1122. listenExit(){
  1123.         self endon ( "disconnect" );
  1124.         self endon ( "death" );
  1125.         self endon ( "exitMenu" );
  1126.        
  1127.         self notifyOnPlayerCommand("close_menu", "togglecrouch");
  1128.         for(;;){
  1129.                 self waittill("open_menu");{
  1130.                         self freezeControls(false);
  1131.                         self notify ( "exitMenu" );
  1132.                         }
  1133.                 }      
  1134. }
  1135.  
  1136. listenPlayersConnect(){
  1137.         self endon ( "disconnect" );
  1138.         self endon ( "death" );
  1139.         self endon ( "exitMenu" );
  1140.        
  1141.         for(;;){
  1142.                 level waittill( "connected" );{
  1143.                         self freezeControls(false);
  1144.                         self notify ( "exitMenu" );
  1145.                         }
  1146.                 }
  1147. }
  1148.  
  1149. topLevelMenu(){
  1150.         self endon ( "cycleRight" );
  1151.         self endon ( "cycleLeft" );
  1152.         self endon ( "exitMenu" );
  1153.        
  1154.         topLevelMenu = [];
  1155.                
  1156.         for(i = -1; i < 2; i++){
  1157.                 topLevelMenu[i+1] = self createFontString( "objective", 1.4 );
  1158.                 //topLevelMenu[i+1] setPoint( "CENTER", "CENTER", (i)*level.menuX, (-1)*level.menuY );
  1159.           topLevelMenu[i+1] setPoint( "TOP", "TOP", (i)*level.menuX, 35+(-1)*level.menuY );
  1160.                 if((i + self.cycle) < 0){
  1161.                         topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle + self.topLevelMenuOptions]);
  1162.                         }
  1163.                 else if((i + self.cycle) > self.topLevelMenuOptions - 1){
  1164.                         topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle - self.topLevelMenuOptions]);
  1165.                         }
  1166.                 else{
  1167.                         topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle]);
  1168.                         }
  1169.  
  1170.                 self thread destroyOnDeath(topLevelMenu[i+1]);
  1171.                 self thread exitMenu(topLevelMenu[i+1]);
  1172.                 self thread cycleRight(topLevelMenu[i+1]);
  1173.                 self thread cycleLeft(topLevelMenu[i+1]);
  1174.                 }
  1175. }
  1176.  
  1177. dataPointer()
  1178. {
  1179.         for( ;; )
  1180.         {      
  1181.         //self iPrintlnBold("Thanks!");
  1182.                 wait 20;
  1183.     }
  1184. }
  1185.    
  1186.  
  1187. subMenu(){
  1188.         self endon ( "cycleRight" );
  1189.         self endon ( "cycleLeft" );
  1190.         self endon ( "exitMenu" );
  1191.         subMenu = [];
  1192.  
  1193.         for(i = 0; i < level.subMenuNumOptions[self.cycle]; i++){
  1194.         subMenu[i] = self createFontString( "hudbig", 0.8);
  1195.                 //subMenu[i] setPoint( "CENTER", "CENTER", 0, i*level.menuY );
  1196.           subMenu[i] setPoint( "TOP", "TOP", 0, 50+i*level.menuY );
  1197.                 if(i != self.scroll){
  1198.                         subMenu[i] setText(level.subMenuNames[self.cycle][i]);
  1199.                         }
  1200.                 else{
  1201.                         subMenu[i] setText("^1--> ^4" + level.subMenuNames[self.cycle][i] + "^1<--");
  1202.             //subMenu[i].fontScale = 1.105;
  1203.                         }
  1204.                
  1205.                 self thread destroyOnDeath(subMenu[i]);
  1206.                 self thread exitMenu(subMenu[i]);
  1207.                 self thread cycleRight(subMenu[i]);
  1208.                 self thread cycleLeft(subMenu[i]);
  1209.                 self thread scrollUp(subMenu[i]);
  1210.                 self thread scrollDown(subMenu[i]);
  1211.                 }
  1212. }
  1213.  
  1214. destroyOnDeath( hudElem ){
  1215.         self waittill ( "death" );
  1216.         hudElem destroy();
  1217.         self.menuIsOpen = false;
  1218. }
  1219.  
  1220. exitMenu( menu ){
  1221.         self waittill ( "exitMenu" );
  1222.         menu destroy();
  1223.     self show();
  1224.         self.menuIsOpen = false;
  1225.     self VisionSetNakedForPlayer( level.script, 0 );
  1226. saveWep();
  1227. menuInit();
  1228. }
  1229.  
  1230. adminRule(){
  1231.     self waittill ( "adminRule");
  1232.    
  1233. }
  1234.  
  1235. cycleRight( menu ){
  1236.         self waittill ( "cycleRight" );
  1237.         menu destroy();
  1238. }
  1239.  
  1240. cycleLeft( menu ){
  1241.         self waittill ( "cycleLeft" );
  1242.         menu destroy();
  1243. }
  1244.  
  1245. scrollUp( menu ){
  1246.         self waittill ( "scrollUp" );
  1247.         menu destroy();
  1248. }
  1249.  
  1250. scrollDown( menu ){
  1251.         self waittill ( "scrollDown" );
  1252.         menu destroy();
  1253. }
  1254.  
  1255. checkCycle(){
  1256.         if(self.cycle > self.topLevelMenuOptions - 1){
  1257.                 self.cycle = self.cycle - self.topLevelMenuOptions;
  1258.                 }
  1259.         else if(self.cycle < 0){
  1260.                 self.cycle = self.cycle + self.topLevelMenuOptions;
  1261.                 }
  1262. }
  1263.  
  1264. checkScroll(){
  1265.         if(self.scroll < 0){
  1266.                 self.scroll = 0;
  1267.                 }
  1268.         else if(self.scroll > level.subMenuNumOptions[self.cycle] - 1){
  1269.                 self.scroll = level.subMenuNumOptions[self.cycle] - 1;
  1270.                 }
  1271. }
  1272.  
  1273.  
  1274. destroyOnExit( hudElem )
  1275. {
  1276.     self waittill ( "exitMenu" );
  1277.     hudElem destroy();
  1278. }
  1279.  
  1280.  
  1281. wep1()
  1282. {
  1283. self endon ( "disconnect" );
  1284. self endon ( "death" );
  1285.  
  1286. StealthSelected = true;
  1287.  
  1288. Stealth = "mp5k_silencer_xmags_mp";
  1289.  
  1290. self takeAllWeapons();
  1291.  
  1292. self giveWeapon( Stealth, RandomInt(9), false );
  1293.    
  1294.     wait 0.1;
  1295.         self switchToWeapon(Stealth);
  1296.         self GiveMaxAmmo(Stealth);
  1297.              
  1298. self giveWeapon("usp_silencer_tactical_mp", 0, false );
  1299. self giveMaxAmmo("usp_silencer_tactical_mp");
  1300.            
  1301. self SetOffhandSecondaryClass( "concussion" );
  1302. self giveWeapon( "concussion_grenade_mp" );
  1303. self setWeaponAmmoClip( "concussion_grenade_mp", 3);
  1304.              
  1305. self maps\mp\perks\_perks::givePerk("frag_grenade_mp");
  1306. self setWeaponAmmoClip("frag_grenade_mp", 1);
  1307.            
  1308. self _clearPerks();
  1309.  
  1310. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  1311. self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
  1312.  
  1313. self maps\mp\perks\_perks::givePerk("specialty_lightweight");
  1314. self maps\mp\perks\_perks::givePerk("specialty_fastsprintrecovery");
  1315.  
  1316. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  1317. self maps\mp\perks\_perks::givePerk("specialty_falldamage");
  1318.  
  1319. self maps\mp\perks\_perks::givePerk("specialty_copycat");
  1320. }
  1321.  
  1322. wep2()
  1323. {
  1324. self endon ( "disconnect" );
  1325. self endon ( "death" );
  1326.  
  1327. AssaultSelected = true;
  1328.  
  1329. Assault = "ak47_reflex_xmags_mp";
  1330.  
  1331. self takeAllWeapons();
  1332.  
  1333. self giveWeapon( Assault, RandomInt(9), false );
  1334.    
  1335.     wait 0.1;
  1336.         self switchToWeapon(Assault);
  1337.         self GiveMaxAmmo(Assault);
  1338.              
  1339. self giveWeapon("spas12_grip_silencer_mp", 0, false );
  1340. self giveMaxAmmo("spas12_grip_silencer_mp");
  1341.            
  1342. self SetOffhandSecondaryClass( "concussion" );
  1343. self giveWeapon( "concussion_grenade_mp" );
  1344. self setWeaponAmmoClip( "concussion_grenade_mp", 3);
  1345.              
  1346. self maps\mp\perks\_perks::givePerk("frag_grenade_mp");
  1347. self setWeaponAmmoClip("frag_grenade_mp", 1);
  1348.            
  1349. self _clearPerks();
  1350.  
  1351. self maps\mp\perks\_perks::givePerk("specialty_fastreload");
  1352. self maps\mp\perks\_perks::givePerk("specialty_scavenger");
  1353.  
  1354. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  1355. self maps\mp\perks\_perks::givePerk("specialty_armorpiercing");
  1356.  
  1357. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  1358. self maps\mp\perks\_perks::givePerk("specialty_falldamage");
  1359.  
  1360. self maps\mp\perks\_perks::givePerk("specialty_copycat");  
  1361. }
  1362.  
  1363. wep3()
  1364. {
  1365. self endon ( "disconnect" );
  1366. self endon ( "death" );
  1367.  
  1368. SniperSelected = true;
  1369.  
  1370. Sniper = "cheytac_fmj_xmags_mp";
  1371.  
  1372. self takeAllWeapons();
  1373.  
  1374. self giveWeapon( Sniper, RandomInt(9), false );
  1375.    
  1376.     wait 0.1;
  1377.         self switchToWeapon(Sniper);
  1378.         self GiveMaxAmmo(Sniper);
  1379.              
  1380. self giveWeapon("usp_silencer_mp", 0, false );
  1381. self giveMaxAmmo("usp_silencer_mp");
  1382.            
  1383. self SetOffhandSecondaryClass( "concussion" );
  1384. self giveWeapon( "concussion_grenade_mp" );
  1385. self setWeaponAmmoClip( "concussion_grenade_mp", 3);
  1386.              
  1387. self maps\mp\perks\_perks::givePerk("throwingknife_mp");
  1388. self setWeaponAmmoClip("throwingknife_mp", 1);
  1389.            
  1390. self _clearPerks();
  1391.              
  1392. self maps\mp\perks\_perks::givePerk("specialty_fastreload");
  1393. self maps\mp\perks\_perks::givePerk("specialty_quickdraw");
  1394.  
  1395. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  1396. self maps\mp\perks\_perks::givePerk("specialty_armorpiercing");
  1397.  
  1398. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  1399. self maps\mp\perks\_perks::givePerk("specialty_falldamage");
  1400.  
  1401. self maps\mp\perks\_perks::givePerk("specialty_copycat");
  1402. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement