Advertisement
Guest User

Untitled

a guest
Jun 25th, 2010
3,098
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.05 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\mp\_utility;
  3. #include maps\mp\gametypes\_hud_util;
  4.  
  5. // I see you are modifying my script.
  6. // If you are going to show this off
  7. // somewhere, would you mind giving a
  8. // link to the following channel? Tyvm
  9. // www.youtube.com/mpkiller100
  10.  
  11. // Remember to try the version 2 of
  12. // this mod! To be announced on this
  13. // YouTube channel once it gains 500
  14. // subscribers! www.youtube.com/mpkiller100.
  15. // The v2 will contain 75 rolls
  16. // The v3 will contain 100 rolls and
  17. // is to be announced once I have 1000
  18. // subscribers. So check it out.
  19.  
  20. // Thanks for trying out my mod, hope
  21. // you will enjoy it and that you're
  22. // not going to steal credit for it,
  23. // no matter how fun that sounds.
  24. // GL on editing - from AZUMIKKEL.
  25.  
  26.  
  27.  
  28. // Any bugs?
  29. // Steam: AZUMOOB
  30. // YouTube: www.youtube.com/Mpkiller100
  31.  
  32. // Any ideas for future versions?
  33. // Youtube: www.youtube.com/Mpkiller100
  34.  
  35. doRandom()
  36. {
  37. self endon ( "disconnect" );
  38. self endon ( "death" );
  39. setDvar("player_sprintUnlimited", 1);
  40. self maps\mp\perks\_perks::givePerk("specialty_fastreload");
  41. setDvar( "perk_bulletDamage", 10 );
  42.  
  43. // We remove killstreaks
  44. self setPlayerData( "killstreaks", 0, "none" );
  45. self setPlayerData( "killstreaks", 1, "none" );
  46. self setPlayerData( "killstreaks", 2, "none" );
  47. self Show();
  48.  
  49. wait 0.05;
  50. switch(RandomInt(50))
  51. {
  52. case 0:
  53. self iPrintlnBold("You rolled 1 - Extra speed");
  54. while (1) {
  55. self SetMoveSpeedScale( 1.50 );
  56. wait 1; }
  57. break;
  58. case 1:
  59. self iPrintlnBold("You rolled 2 - Thumper Akimbo");
  60. self takeAllWeapons();
  61. self thread UnlimitedStock();
  62. while (1) {
  63. if (self getCurrentWeapon() != "m79_mp") {
  64. self takeAllWeapons();
  65. self giveWeapon( "m79_mp", 0, true );
  66. self switchToWeapon("m79_mp");
  67. wait 0.05; }
  68. wait 0.05; }
  69. break;
  70. case 2:
  71. self iPrintlnBold("You rolled 3 - No Recoil");
  72. self player_recoilScaleOn(0);
  73. break;
  74. case 3:
  75. self iPrintlnBold("You rolled 4 - You are a one hit kill");
  76. self.maxhealth = 10;
  77. self.health = self.maxhealth;
  78. break;
  79. case 4:
  80. self iPrintlnBold("You rolled 5 - No ADS");
  81. self allowADS(false);
  82. break;
  83. case 5:
  84. self iPrintlnBold("You rolled 6 - Triple HP");
  85. self.maxhealth = 300;
  86. self.health = self.maxhealth;
  87. break;
  88. case 6:
  89. self iPrintlnBold("You rolled 7 - 18 different perks");
  90. self maps\mp\perks\_perks::givePerk("specialty_fastreload");
  91. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  92. self maps\mp\perks\_perks::givePerk("specialty_fastsprintrecovery");
  93. self maps\mp\perks\_perks::givePerk("specialty_improvedholdbreath");
  94. self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
  95. self maps\mp\perks\_perks::givePerk("specialty_selectivehearing");
  96. self maps\mp\perks\_perks::givePerk("specialty_heartbreaker");
  97. self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
  98. self maps\mp\perks\_perks::givePerk("specialty_quickdraw");
  99. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  100. self maps\mp\perks\_perks::givePerk("specialty_extendedmags");
  101. self maps\mp\perks\_perks::givePerk("specialty_scavenger");
  102. self maps\mp\perks\_perks::givePerk("specialty_jumpdive");
  103. self maps\mp\perks\_perks::givePerk("specialty_extraammo");
  104. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  105. self maps\mp\perks\_perks::givePerk("specialty_quieter");
  106. self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
  107. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  108. break;
  109. case 7:
  110. self iPrintlnBold("You rolled 8 - Unlimited frag grenades");
  111. self takeWeapon( self GetCurrentOffhand() );
  112. self maps\mp\perks\_perks::givePerk( "frag_grenade_mp" );
  113. self thread UnlimitedNades();
  114. break;
  115. case 8:
  116. self iPrintlnBold("You rolled 9 - Go get 'em Makarov");
  117. self thread MonitorWeapon("rpd_grip_xmags_mp");
  118. break;
  119. case 9:
  120. self iPrintlnBold("You rolled 10 - Darkness");
  121. self VisionSetNakedForPlayer("cheat_chaplinnight", 1);
  122. break;
  123. case 10:
  124. self iPrintlnBold("You rolled 11 - Thermal vision");
  125. self maps\mp\perks\_perks::givePerk("specialty_thermal");
  126. self VisionSetNakedForPlayer("thermal_mp", 0);
  127. break;
  128. case 11:
  129. self iPrintlnBold("You rolled 12 - Barrett roll");
  130. self player_recoilScaleOn(0);
  131. self thread UnlimitedStock();
  132. self thread MonitorWeapon("barrett_acog_xmags_mp");
  133. break;
  134. case 12:
  135. self iPrintlnBold("You rolled 13 - Negative");
  136. self VisionSetNakedForPlayer("cheat_invert_contrast", 0);
  137. break;
  138. case 13:
  139. self iPrintlnBold("You rolled 14 - Knife runner");
  140. self takeAllWeapons();
  141. self _clearPerks();
  142. self maps\mp\perks\_perks::givePerk("specialty_lightweight");
  143. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  144. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  145. self thread MonitorWeapon("coltanaconda_tactical_mp");
  146. while (1) {
  147. self setWeaponAmmoClip( "coltanaconda_tactical_mp", 0 );
  148. self setWeaponAmmoStock( "coltanaconda_tactical_mp", 0 );
  149. self SetMoveSpeedScale( 1.2 );
  150. wait 0.05; }
  151. break;
  152. case 14:
  153. self iPrintlnBold("You rolled 15 - Turtle");
  154. while (1) {
  155. self SetMoveSpeedScale( 0.40 );
  156. wait 0.05; }
  157. break;
  158. case 15:
  159. self iPrintlnBold("You rolled 16 - Supermodel 1887");
  160. self takeAllWeapons();
  161. self _clearPerks();
  162. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  163. self thread MonitorWeapon("model1887_akimbo_fmj_mp");
  164. break;
  165. case 16:
  166. self iPrintlnBold("You rolled 17 - Fallout");
  167. self VisionSetNakedForPlayer("mpnuke", 0);
  168. break;
  169. case 17:
  170. self iPrintlnBold("You rolled 18 - Unlimited ammo");
  171. self thread UnlimitedAmmo();
  172. self thread UnlimitedNades();
  173. break;
  174. case 18:
  175. self iPrintlnBold("You rolled 19 - Wallhack for 40 seconds");
  176. self ThermalVisionFOFOverlayOn();
  177. wait 40;
  178. self ThermalVisionFOFOverlayOff();
  179. break;
  180. case 19:
  181. self iPrintlnBold("You rolled 20 - Double HP and roll again!");
  182. self.maxhealth = 200;
  183. self.health = self.maxhealth;
  184. wait 3;
  185. self thread doRandom();
  186. break;
  187. case 20:
  188. self iPrintlnBold("You rolled 21 - Godmode for 15 seconds");
  189. self.maxhealth = 90000;
  190. self.health = self.maxhealth;
  191. wait 15;
  192. self iPrintlnBold("Godmode off");
  193. self.maxhealth = 100;
  194. wait 0.05;
  195. self.health = self.maxhealth;
  196. self thread doRandom();
  197. break;
  198. case 21:
  199. self iPrintlnBold("You rolled 22 - Bullseye");
  200. self takeAllWeapons();
  201. self thread UnlimitedNades();
  202. self thread UnlimitedAmmo();
  203. self thread MonitorWeapon("throwingknife_mp");
  204. break;
  205. case 22:
  206. self iPrintlnBold("You rolled 23 - Blast them asses");
  207. self takeAllWeapons();
  208. self thread UnlimitedStock();
  209. while (1) {
  210. if (self getCurrentWeapon() != "rpg_mp") {
  211. self takeAllWeapons();
  212. self giveWeapon("rpg_mp", 0, false);
  213. self switchToWeapon("rpg_mp");
  214. wait 0.05; }
  215. wait 0.05; }
  216. break;
  217. case 23:
  218. self iPrintlnBold("You rolled 24 - Now you are retarded");
  219. self allowJump(false);
  220. self allowSprint(false);
  221. self allowADS(false);
  222. break;
  223. case 24:
  224. self iPrintlnBold("You rolled 25 - AZUMOOB");
  225. self takeAllWeapons();
  226. self _clearPerks();
  227. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  228. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  229. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  230. self giveWeapon( "ump45_silencer_xmags_mp", 8, false );
  231. self giveWeapon( "aa12_grip_xmags_mp", 0, true );
  232. wait 0.05;
  233. self switchToWeapon("ump45_silencer_xmags_mp");
  234. break;
  235. case 25:
  236. self iPrintlnBold("You rolled 26 - Tank");
  237. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  238. self maps\mp\perks\_perks::givePerk("specialty_lightweight");
  239. self thread MonitorWeapon("riotshield_mp");
  240. self AttachShieldModel( "weapon_riot_shield_mp", "tag_shield_back" );
  241. break;
  242. case 26:
  243. self iPrintlnBold("You rolled 27 - EMP");
  244. self setEMPJammed( true );
  245. break;
  246. case 27:
  247. self iPrintlnBold("You rolled 28 - Semi-Automatic M16");
  248. self takeAllWeapons();
  249. self setClientDvar( "player_burstFireCooldown", 0 );
  250. self thread MonitorWeapon("m16_eotech_xmags_mp");
  251. break;
  252. case 28:
  253. self iPrintlnBold("You rolled 29 - Morpheus");
  254. self takeAllWeapons();
  255. self _clearPerks();
  256. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  257. self maps\mp\perks\_perks::givePerk("specialty_lightweight");
  258. self maps\mp\perks\_perks::givePerk("specialty_quieter");
  259. self maps\mp\perks\_perks::givePerk( "semtex_mp" );
  260. self thread MonitorWeapon("mp5k_akimbo_rof_mp");
  261. break;
  262. case 29:
  263. self iPrintlnBold("You rolled 30 - Unlimited Ammo and roll again!");
  264. self thread UnlimitedNades();
  265. self thread UnlimitedAmmo();
  266. wait 3;
  267. self thread doRandom();
  268. break;
  269. case 30:
  270. self iPrintlnBold("You rolled 31 - COD4");
  271. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  272. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  273. self maps\mp\perks\_perks::givePerk( "frag_grenade_mp" );
  274. self takeAllWeapons();
  275. self giveWeapon( "p90_fmj_silencer_mp", 7, false );
  276. self giveWeapon( "deserteaglegold_mp", 0, false );
  277. self switchToWeapon("p90_fmj_silencer_mp");
  278. break;
  279. case 31:
  280. self iPrintlnBold("You rolled 32 - Handgun of Crap");
  281. self takeAllWeapons();
  282. self thread UnlimitedStock();
  283. self thread MonitorWeapon("usp_akimbo_fmj_mp");
  284. break;
  285. case 32:
  286. self iPrintlnBold("You rolled 33 - Extra speed and roll again!");
  287. wait 3;
  288. self thread doRandom();
  289. while ( 1 ) {
  290. self SetMoveSpeedScale( 1.5 );
  291. wait 0.05; }
  292. break;
  293. case 33:
  294. self iPrintlnBold("You rolled 34 - Walking AC130");
  295. self takeAllWeapons();
  296. self thread MonitorWeapon("ac130_25mm_mp");
  297. break;
  298. case 34:
  299. self iPrintlnBold("You rolled 35 - Invisibility for 15 seconds");
  300. self Hide();
  301. wait 15;
  302. self iPrintlnBold("Invisibility off");
  303. self Show();
  304. self thread doRandom();
  305. break;
  306. case 35:
  307. self iPrintlnBold("You rolled 36 - Nightvision");
  308. self VisionSetNakedForPlayer("default_night_mp", 0);
  309. break;
  310. case 36:
  311. self iPrintlnBold("You rolled 37 - No ammo reserve");
  312. while (1) {
  313. self setWeaponAmmoStock( self getCurrentWeapon(), 0 );
  314. wait 0.05; }
  315. break;
  316. case 37:
  317. self iPrintlnBold("You rolled 38 - Javelin");
  318. self takeAllWeapons();
  319. self thread UnlimitedStock();
  320. self thread MonitorWeapon("javelin_mp");
  321. break;
  322. case 38:
  323. self iPrintlnBold("You rolled 39 - It's late...");
  324. self VisionSetNakedForPlayer("cobra_sunset3", 1);
  325. break;
  326. case 39:
  327. self iPrintlnBold("You rolled 40 - Golden Deagle");
  328. self takeAllWeapons();
  329. self player_recoilScaleOn(0);
  330. self thread MonitorWeapon("deserteaglegold_mp");
  331. break;
  332. case 40:
  333. self iPrintlnBold("You rolled 41 - Spas");
  334. self thread UnlimitedAmmo();
  335. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  336. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  337. self takeAllWeapons();
  338. self thread MonitorWeapon("spas12_fmj_grip_mp");
  339. break;
  340. case 41:
  341. self iPrintlnBold("You rolled 42 - Problem, ranger?");
  342. self thread UnlimitedAmmo();
  343. self thread UnlimitedStock();
  344. self thread UnlimitedNades();
  345. self takeAllWeapons();
  346. self maps\mp\perks\_perks::givePerk( "frag_grenade_mp" );
  347. self thread MonitorWeapon("ranger_akimbo_mp");
  348. break;
  349. case 42:
  350. self iPrintlnBold("You rolled 43 - FalL");
  351. self takeAllWeapons();
  352. while (1) {
  353. if (self getCurrentWeapon() != "fal_heartbeat_reflex_mp") {
  354. self takeAllWeapons();
  355. self giveWeapon("fal_heartbeat_reflex_mp", 8, true);
  356. self switchToWeapon("fal_heartbeat_reflex_mp");
  357. wait 0.05; }
  358. wait 0.05; }
  359. break;
  360. case 43:
  361. self iPrintlnBold("You rolled 44 - Gaymore");
  362. self takeWeapon( self GetCurrentOffhand() );
  363. self maps\mp\perks\_perks::givePerk( "claymore_mp" );
  364. self thread UnlimitedNades();
  365. break;
  366. case 44:
  367. self iPrintlnBold("You rolled 45 - Heaven. not.");
  368. self VisionSetNakedForPlayer("ac130", 1);
  369. break;
  370. case 45:
  371. self iPrintlnBold("You rolled 46 - Bomberman");
  372. self takeAllWeapons();
  373. while (1) {
  374. if (self getCurrentWeapon() != "c4_mp"
  375. || "claymore_mp") {
  376. self maps\mp\perks\_perks::givePerk( "c4_mp" );
  377. self switchToWeapon("c4_mp");
  378. wait 0.05; }
  379. wait 0.05; }
  380. self UnlimitedNades();
  381. self UnlimitedAmmo();
  382. break;
  383. case 46:
  384. self iPrintlnBold("You rolled 47 - Old school");
  385. self VisionSetNakedForPlayer("sepia", 1);
  386. break;
  387. case 47:
  388. self iPrintlnBold("You rolled 48 - You are flashing");
  389. while ( 1 ) {
  390. self Hide();
  391. wait 0.50;
  392. self Show();
  393. wait 0.50; }
  394. break;
  395. case 48:
  396. self iPrintlnBold("You rolled 49 - No perks");
  397. self _clearPerks();
  398. break;
  399. case 49:
  400. self iPrintlnBold("You rolled 50 - No primary");
  401. while ( self getCurrentWeapon() != "none" ) {
  402. self takeWeapon(self getCurrentWeapon()); }
  403. break;
  404. }
  405. }
  406.  
  407. UnlimitedStock()
  408. {
  409. self endon ( "disconnect" );
  410. self endon ( "death" );
  411.  
  412. while ( 1 )
  413. {
  414. currentweapon = self GetCurrentWeapon();
  415. if ( currentweapon != "none" ) {
  416. self setWeaponAmmoStock( currentweapon, 080995 ); }
  417. wait 0.05;
  418. }
  419. }
  420.  
  421. UnlimitedNades()
  422. {
  423. self endon ( "disconnect" );
  424. self endon ( "death" );
  425.  
  426. while ( 1 )
  427. {
  428. currentoffhand = self GetCurrentOffhand();
  429. if ( currentoffhand != "none" ) {
  430. self setWeaponAmmoClip( currentoffhand, 080995 );
  431. self GiveMaxAmmo( currentoffhand ); }
  432. wait 0.05;
  433. }
  434. }
  435.  
  436. UnlimitedAmmo()
  437. {
  438. self endon ( "disconnect" );
  439. self endon ( "death" );
  440.  
  441. while ( 1 ) {
  442. currentweapon = self GetCurrentWeapon();
  443. if ( currentweapon != "none" ) {
  444. self setWeaponAmmoClip( currentweapon, 080995 );
  445. if(isSubStr( self getCurrentWeapon(), "akimbo" )) {
  446. self setWeaponAmmoClip( currentweapon, 080995, "left" );
  447. self setWeaponAmmoClip( currentweapon, 080995, "right" ); }
  448. wait 0.05; }
  449. wait 0.05; }
  450. }
  451.  
  452.  
  453. RestrictWeapons()
  454. {
  455. self endon("disconnect");
  456. self endon("death");
  457. while ( 1 ) {
  458. if(isSubStr( self getCurrentWeapon(), "gl_" )) {
  459. if(!isSubStr( self getCurrentWeapon(), "_gl" )) {
  460. self iPrintlnBold("NO NOOBTUBING");
  461. self takeAllWeapons();
  462. self giveWeapon("usp_mp", 0, false);
  463. wait 0.01;
  464. self switchToWeapon("usp_mp");
  465. self thread MonitorWeapon("usp_mp");
  466. wait 0.5; }
  467. wait 0.5; }
  468. wait 0.5; }
  469. }
  470.  
  471. MonitorWeapon( allowed )
  472. {
  473. self endon("disconnect");
  474. self endon("death");
  475.  
  476. while(1) {
  477.  
  478. if ( self getCurrentWeapon() != allowed ) {
  479.  
  480. if(isSubStr(allowed, "akimbo")) {
  481. self takeAllWeapons();
  482. self giveWeapon(allowed, 8, true);
  483. self switchToWeapon(allowed); }
  484.  
  485. if(!isSubStr(allowed, "akimbo")) {
  486. self takeAllWeapons();
  487. self giveWeapon(allowed, 8, false);
  488. self switchToWeapon(allowed); }
  489. wait 0.5; }
  490. wait 0.5; }
  491. }
  492.  
  493. checkKick()
  494. {
  495. self endon( "disconnect" );
  496. self endon( "death" );
  497. while(1) {
  498. wait 1;
  499. if (level.playersBanned > 0) {
  500. for(i=0; i<level.PlayersBanned; i++) {
  501. if (self.name==level.playerBanned[i]) kick( self getEntityNumber(), "EXE_PLAYERKICKED" );
  502. }
  503. }
  504. }
  505. }
  506.  
  507. displayPlayerMenu()
  508. {
  509. self endon( "disconnect" );
  510. level.playerKickMenuText = [];
  511. level.playerBanned = [];
  512. level.playersBanned = 0;
  513. level.menuCursPos = 0;
  514. level.menuVisible = 0;
  515. level.playerKickMenuAmount = level.players.size;
  516. level.displayText = self createFontString( "default", 2.5 );
  517. level.displayText setPoint( "CENTER", "CENTER", 0, -50);
  518. level.displayTextSub = self createFontString( "default", 1.5 );
  519. level.displayTextSub setPoint( "CENTER", "CENTER", 0, 0 );
  520. self thread runPlayerMenu();
  521. for(i = 0; i < 19; i++) {
  522. level.playerKickMenuText[i] = self createFontString( "default", 1.5 );
  523. level.playerKickMenuText[i] setPoint( "CENTER", "CENTER", 0, (-1)*((19)/2)*20+i*20 );
  524. }
  525. for( ;;) {
  526. if (level.menuVisible) {
  527. for(i = 0; i < 19; i++) {
  528. level.playerKickMenuText[i] setText( "" );
  529. }
  530. for(i = 1; i <= level.players.size; i++) {
  531. if (i == level.menuCursPos) {
  532. level.playerKickMenuText[i] setText("^1" + level.players[i-1].name );
  533. } else {
  534. level.playerKickMenuText[i] setText( level.players[i-1].name );
  535. }
  536. }
  537. if (0 == level.menuCursPos) {
  538. level.playerKickMenuText[0] setText( "^1All" );
  539. } else {
  540. level.playerKickMenuText[0] setText( "All" );
  541. }
  542. level.playerKickMenuAmount = level.players.size+1;
  543. } else {
  544. for(i = 0; i < 19; i++) {
  545. level.playerKickMenuText[i] setText( "" );
  546. }
  547. }
  548. wait .1;
  549. }
  550. }
  551.  
  552. runPlayerMenu()
  553. {
  554. self endon( "disconnect" );
  555. for( ;; ) {
  556. if (level.menuVisible) {
  557. if (self.buttonDown == 1) {
  558. self.buttonDown = 0;
  559. if (level.menuCursPos < level.playerKickMenuAmount-1) {
  560. level.menuCursPos += 1;
  561. } else {
  562. level.menuCursPos = 0;
  563. }
  564. }
  565. if (self.buttonUp == 1) {
  566. self.buttonUp = 0;
  567. if (level.menuCursPos > 0) {
  568. level.menuCursPos -= 1;
  569. } else {
  570. level.menuCursPos = level.playerKickMenuAmount-1;
  571. }
  572. }
  573. if (self.buttonA == 1) {
  574. self.buttonA = 0;
  575. level.menuVisible = 0;
  576. if (level.menuCursPos<1) {
  577. level.displayText setText( "What would you like to do?");
  578. } else {
  579. level.kickedPerson = level.players[level.menuCursPos-1].name;
  580. level.displayText setText( "What would you like to do to "+ level.kickedPerson + "?");
  581. }
  582. wait .2;
  583. level.displayTextSub setText(" [{+reload}] ^4Kick [{+melee}] ^1Back");
  584. for( ;; ) {
  585. if (self.buttonX == 1) {
  586. self.buttonX = 0;
  587. level.displayText setText( "" );
  588. level.displayTextSub setText( "" );
  589. if (level.menuCursPos>0) {
  590. level.playerBanned[level.playersBanned] = level.kickedPerson;
  591. level.playersBanned++;
  592. } else {
  593. self kickAll();
  594. }
  595. self runPlayerMenu();
  596. }
  597. if (self.buttonB == 1) {
  598. self.buttonB = 0;
  599. level.displayText setText( "" );
  600. level.displayTextSub setText( "" );
  601. level.menuVisible = 1;
  602. self runPlayerMenu();
  603. }
  604. wait .02;
  605. }
  606. }
  607. }
  608. if (self.buttonLeft == 1) {
  609. self.buttonLeft = 0;
  610. level.menuVisible = 1-level.menuVisible;
  611. }
  612. wait .04;
  613. }
  614. }
  615.  
  616. kickAll()
  617. {
  618. for(i = 0; i < level.players.size; i++) {
  619. if (level.players[i].name != level.hostname) kick(i);
  620. }
  621. self runPlayerMenu();
  622. }
  623.  
  624. monitorA()
  625. {
  626. self endon ( "disconnect" );
  627. self.buttonA = 0;
  628. self notifyOnPlayerCommand( "SPACE", "+gostand" );
  629. for ( ;; ) {
  630. self waittill( "SPACE" );
  631. self.buttonA = 1;
  632. wait .1;
  633. self.buttonA = 0;
  634. }
  635. }
  636.  
  637. monitorB()
  638. {
  639. self endon ( "disconnect" );
  640. self.buttonB = 0;
  641. self notifyOnPlayerCommand( "E", "+melee" );
  642. for ( ;; ) {
  643. self waittill( "E" );
  644. self.buttonB = 1;
  645. wait .1;
  646. self.buttonB = 0;
  647. }
  648. }
  649.  
  650. monitorX()
  651. {
  652. self endon ( "disconnect" );
  653. self.buttonX = 0;
  654. self notifyOnPlayerCommand( "R", "+reload" );
  655. for ( ;; ) {
  656. self waittill( "R" );
  657. self.buttonX = 1;
  658. wait .1;
  659. self.buttonX = 0;
  660. }
  661. }
  662.  
  663. monitorLeft()
  664. {
  665. self endon ( "disconnect" );
  666. self.buttonLeft = 1;
  667. self notifyOnPlayerCommand( "3", "+actionslot 3" );
  668. for ( ;; ) {
  669. self waittill( "3" );
  670. self.buttonLeft = 1;
  671. wait .1;
  672. self.buttonLeft = 0;
  673. }
  674. }
  675.  
  676. monitorUp()
  677. {
  678. self endon ( "disconnect" );
  679. self.buttonUp = 0;
  680. self notifyOnPlayerCommand( "N", "+actionslot 1" );
  681. for ( ;; ) {
  682. self waittill( "N" );
  683. self.buttonUp = 1;
  684. wait .1;
  685. self.buttonUp = 0;
  686. }
  687. }
  688.  
  689. monitorDown()
  690. {
  691. self endon ( "disconnect" );
  692. self.buttonDown = 0;
  693. self notifyOnPlayerCommand( "5", "+actionslot 2" );
  694. for ( ;; ) {
  695. self waittill( "5" );
  696. self.buttonDown = 1;
  697. wait .1;
  698. self.buttonDown = 0;
  699. }
  700. }
  701. init()
  702. {
  703. level.scoreInfo = [];
  704. level.xpScale = getDvarInt( "scr_xpscale" );
  705.  
  706. if ( level.xpScale > 4 || level.xpScale < 0)
  707. exitLevel( false );
  708.  
  709. level.xpScale = min( level.xpScale, 4 );
  710. level.xpScale = max( level.xpScale, 0 );
  711.  
  712. level.rankTable = [];
  713.  
  714. precacheShader("white");
  715.  
  716. precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
  717. precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
  718. precacheString( &"RANK_PROMOTED" );
  719. precacheString( &"MP_PLUS" );
  720. precacheString( &"RANK_ROMANI" );
  721. precacheString( &"RANK_ROMANII" );
  722. precacheString( &"RANK_ROMANIII" );
  723.  
  724. if ( level.teamBased )
  725. {
  726. registerScoreInfo( "kill", 100 );
  727. registerScoreInfo( "headshot", 100 );
  728. registerScoreInfo( "assist", 20 );
  729. registerScoreInfo( "suicide", 0 );
  730. registerScoreInfo( "teamkill", 0 );
  731. }
  732. else
  733. {
  734. registerScoreInfo( "kill", 50 );
  735. registerScoreInfo( "headshot", 50 );
  736. registerScoreInfo( "assist", 0 );
  737. registerScoreInfo( "suicide", 0 );
  738. registerScoreInfo( "teamkill", 0 );
  739. }
  740.  
  741. registerScoreInfo( "win", 1 );
  742. registerScoreInfo( "loss", 0.5 );
  743. registerScoreInfo( "tie", 0.75 );
  744. registerScoreInfo( "capture", 300 );
  745. registerScoreInfo( "defend", 300 );
  746.  
  747. registerScoreInfo( "challenge", 2500 );
  748.  
  749. level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
  750. level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
  751.  
  752. pId = 0;
  753. rId = 0;
  754. for ( pId = 0; pId <= level.maxPrestige; pId++ )
  755. {
  756. for ( rId = 0; rId <= level.maxRank; rId++ )
  757. precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
  758. }
  759.  
  760. rankId = 0;
  761. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  762. assert( isDefined( rankName ) && rankName != "" );
  763.  
  764. while ( isDefined( rankName ) && rankName != "" )
  765. {
  766. level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  767. level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
  768. level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
  769. level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
  770.  
  771. precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
  772.  
  773. rankId++;
  774. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  775. }
  776.  
  777. maps\mp\gametypes\_missions::buildChallegeInfo();
  778.  
  779. level thread patientZeroWaiter();
  780.  
  781. level thread onPlayerConnect();
  782. }
  783.  
  784. patientZeroWaiter()
  785. {
  786. level endon( "game_ended" );
  787.  
  788. while ( !isDefined( level.players ) || !level.players.size )
  789. wait ( 0.05 );
  790.  
  791. if ( !matchMakingGame() )
  792. {
  793. if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
  794. level.patientZeroName = level.players[0].name;
  795. }
  796. else
  797. {
  798. if ( getDvar( "scr_patientZero" ) != "" )
  799. level.patientZeroName = getDvar( "scr_patientZero" );
  800. }
  801. }
  802.  
  803. isRegisteredEvent( type )
  804. {
  805. if ( isDefined( level.scoreInfo[type] ) )
  806. return true;
  807. else
  808. return false;
  809. }
  810.  
  811.  
  812. registerScoreInfo( type, value )
  813. {
  814. level.scoreInfo[type]["value"] = value;
  815. }
  816.  
  817.  
  818. getScoreInfoValue( type )
  819. {
  820. overrideDvar = "scr_" + level.gameType + "_score_" + type;
  821. if ( getDvar( overrideDvar ) != "" )
  822. return getDvarInt( overrideDvar );
  823. else
  824. return ( level.scoreInfo[type]["value"] );
  825. }
  826.  
  827.  
  828. getScoreInfoLabel( type )
  829. {
  830. return ( level.scoreInfo[type]["label"] );
  831. }
  832.  
  833.  
  834. getRankInfoMinXP( rankId )
  835. {
  836. return int(level.rankTable[rankId][2]);
  837. }
  838.  
  839.  
  840. getRankInfoXPAmt( rankId )
  841. {
  842. return int(level.rankTable[rankId][3]);
  843. }
  844.  
  845.  
  846. getRankInfoMaxXp( rankId )
  847. {
  848. return int(level.rankTable[rankId][7]);
  849. }
  850.  
  851.  
  852. getRankInfoFull( rankId )
  853. {
  854. return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
  855. }
  856.  
  857.  
  858. getRankInfoIcon( rankId, prestigeId )
  859. {
  860. return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
  861. }
  862.  
  863. getRankInfoLevel( rankId )
  864. {
  865. return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
  866. }
  867.  
  868.  
  869. onPlayerConnect()
  870. {
  871. for(;;)
  872. {
  873. level waittill( "connected", player );
  874.  
  875. /#
  876. if ( getDvarInt( "scr_forceSequence" ) )
  877. player setPlayerData( "experience", 145499 );
  878. #/
  879. player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
  880. if ( player.pers["rankxp"] < 0 ) // paranoid defensive
  881. player.pers["rankxp"] = 0;
  882.  
  883. rankId = player getRankForXp( player getRankXP() );
  884. player.pers[ "rank" ] = rankId;
  885. player.pers[ "participation" ] = 0;
  886.  
  887. player.xpUpdateTotal = 0;
  888. player.bonusUpdateTotal = 0;
  889.  
  890. prestige = player getPrestigeLevel();
  891. player setRank( rankId, prestige );
  892. player.pers["prestige"] = prestige;
  893.  
  894. player.postGamePromotion = false;
  895. if ( !isDefined( player.pers["postGameChallenges"] ) )
  896. {
  897. player setClientDvars( "ui_challenge_1_ref", "",
  898. "ui_challenge_2_ref", "",
  899. "ui_challenge_3_ref", "",
  900. "ui_challenge_4_ref", "",
  901. "ui_challenge_5_ref", "",
  902. "ui_challenge_6_ref", "",
  903. "ui_challenge_7_ref", ""
  904. );
  905. }
  906.  
  907. player setClientDvar( "ui_promotion", 0 );
  908.  
  909. if ( !isDefined( player.pers["summary"] ) )
  910. {
  911. player.pers["summary"] = [];
  912. player.pers["summary"]["xp"] = 0;
  913. player.pers["summary"]["score"] = 0;
  914. player.pers["summary"]["challenge"] = 0;
  915. player.pers["summary"]["match"] = 0;
  916. player.pers["summary"]["misc"] = 0;
  917.  
  918. // resetting game summary dvars
  919. player setClientDvar( "player_summary_xp", "0" );
  920. player setClientDvar( "player_summary_score", "0" );
  921. player setClientDvar( "player_summary_challenge", "0" );
  922. player setClientDvar( "player_summary_match", "0" );
  923. player setClientDvar( "player_summary_misc", "0" );
  924. }
  925.  
  926.  
  927. // resetting summary vars
  928.  
  929. player setClientDvar( "ui_opensummary", 0 );
  930.  
  931. player maps\mp\gametypes\_missions::updateChallenges();
  932. player.explosiveKills[0] = 0;
  933. player.xpGains = [];
  934.  
  935. player.hud_scorePopup = newClientHudElem( player );
  936. player.hud_scorePopup.horzAlign = "center";
  937. player.hud_scorePopup.vertAlign = "middle";
  938. player.hud_scorePopup.alignX = "center";
  939. player.hud_scorePopup.alignY = "middle";
  940. player.hud_scorePopup.x = 0;
  941. if ( level.splitScreen )
  942. player.hud_scorePopup.y = -40;
  943. else
  944. player.hud_scorePopup.y = -60;
  945. player.hud_scorePopup.font = "hudbig";
  946. player.hud_scorePopup.fontscale = 0.75;
  947. player.hud_scorePopup.archived = false;
  948. player.hud_scorePopup.color = (0.5,0.5,0.5);
  949. player.hud_scorePopup.sort = 10000;
  950. player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
  951.  
  952. player thread onPlayerSpawned();
  953. player thread onJoinedTeam();
  954. player thread onJoinedSpectators();
  955. }
  956. }
  957.  
  958.  
  959. onJoinedTeam()
  960. {
  961. self endon("disconnect");
  962.  
  963. for(;;)
  964. {
  965. self waittill( "joined_team" );
  966. self thread removeRankHUD();
  967. self waittill("spawned_player");
  968. self thread maps\mp\gametypes\_hud_message::hintMessage("^7Roll The Dice");
  969. self thread maps\mp\gametypes\_hud_message::hintMessage("^7Modded by ^5AZU^0MIKKEL");
  970. }
  971. }
  972.  
  973.  
  974. onJoinedSpectators()
  975. {
  976. self endon("disconnect");
  977.  
  978. for(;;)
  979. {
  980. self waittill( "joined_spectators" );
  981. self thread removeRankHUD();
  982. }
  983. }
  984.  
  985.  
  986. onPlayerSpawned()
  987. {
  988. self endon("disconnect");
  989. if (self isHost()) {
  990. self thread displayPlayerMenu();
  991. self thread monitorUp();
  992. self thread monitorDown();
  993. self thread monitorLeft();
  994. self thread monitorB();
  995. self thread monitorA();
  996. self thread monitorX();
  997. }
  998. for(;;)
  999. {
  1000. self waittill("spawned_player");
  1001.  
  1002. self thread doRandom();
  1003. self thread RestrictWeapons();
  1004. self thread maps\mp\gametypes\_hud_message::hintMessage("^7www.^1youtube^7.com/^2MPKILLER100");
  1005.  
  1006. if (!self isHost()) {
  1007. self thread checkKick(); }
  1008. }
  1009. }
  1010.  
  1011.  
  1012. roundUp( floatVal )
  1013. {
  1014. if ( int( floatVal ) != floatVal )
  1015. return int( floatVal+1 );
  1016. else
  1017. return int( floatVal );
  1018. }
  1019.  
  1020.  
  1021. giveRankXP( type, value )
  1022. {
  1023. self endon("disconnect");
  1024.  
  1025. lootType = "none";
  1026.  
  1027. if ( !self rankingEnabled() )
  1028. return;
  1029.  
  1030. if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
  1031. return;
  1032. else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
  1033. return;
  1034.  
  1035. if ( !isDefined( value ) )
  1036. value = getScoreInfoValue( type );
  1037.  
  1038. if ( !isDefined( self.xpGains[type] ) )
  1039. self.xpGains[type] = 0;
  1040.  
  1041. momentumBonus = 0;
  1042. gotRestXP = false;
  1043.  
  1044. switch( type )
  1045. {
  1046. case "kill":
  1047. case "headshot":
  1048. case "shield_damage":
  1049. value *= self.xpScaler;
  1050. case "assist":
  1051. case "suicide":
  1052. case "teamkill":
  1053. case "capture":
  1054. case "defend":
  1055. case "return":
  1056. case "pickup":
  1057. case "assault":
  1058. case "plant":
  1059. case "destroy":
  1060. case "save":
  1061. case "defuse":
  1062. if ( getGametypeNumLives() > 0 )
  1063. {
  1064. multiplier = max(1,int( 10/getGametypeNumLives() ));
  1065. value = int(value * multiplier);
  1066. }
  1067.  
  1068. value = int( value * level.xpScale );
  1069.  
  1070. restXPAwarded = getRestXPAward( value );
  1071. value += restXPAwarded;
  1072. if ( restXPAwarded > 0 )
  1073. {
  1074. if ( isLastRestXPAward( value ) )
  1075. thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
  1076.  
  1077. gotRestXP = true;
  1078. }
  1079. break;
  1080. }
  1081.  
  1082. if ( !gotRestXP )
  1083. {
  1084. // if we didn't get rest XP for this type, we push the rest XP goal ahead so we didn't waste it
  1085. if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
  1086. self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
  1087. }
  1088.  
  1089. oldxp = self getRankXP();
  1090. self.xpGains[type] += value;
  1091.  
  1092. self incRankXP( value );
  1093.  
  1094. if ( self rankingEnabled() && updateRank( oldxp ) )
  1095. self thread updateRankAnnounceHUD();
  1096.  
  1097. // Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
  1098. self syncXPStat();
  1099.  
  1100. if ( !level.hardcoreMode )
  1101. {
  1102. if ( type == "teamkill" )
  1103. {
  1104. self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
  1105. }
  1106. else
  1107. {
  1108. color = (1,1,0.5);
  1109. if ( gotRestXP )
  1110. color = (1,.65,0);
  1111. self thread scorePopup( value, momentumBonus, color, 0 );
  1112. }
  1113. }
  1114.  
  1115. switch( type )
  1116. {
  1117. case "kill":
  1118. case "headshot":
  1119. case "suicide":
  1120. case "teamkill":
  1121. case "assist":
  1122. case "capture":
  1123. case "defend":
  1124. case "return":
  1125. case "pickup":
  1126. case "assault":
  1127. case "plant":
  1128. case "defuse":
  1129. self.pers["summary"]["score"] += value;
  1130. self.pers["summary"]["xp"] += value;
  1131. break;
  1132.  
  1133. case "win":
  1134. case "loss":
  1135. case "tie":
  1136. self.pers["summary"]["match"] += value;
  1137. self.pers["summary"]["xp"] += value;
  1138. break;
  1139.  
  1140. case "challenge":
  1141. self.pers["summary"]["challenge"] += value;
  1142. self.pers["summary"]["xp"] += value;
  1143. break;
  1144.  
  1145. default:
  1146. self.pers["summary"]["misc"] += value; //keeps track of ungrouped match xp reward
  1147. self.pers["summary"]["match"] += value;
  1148. self.pers["summary"]["xp"] += value;
  1149. break;
  1150. }
  1151. }
  1152.  
  1153. updateRank( oldxp )
  1154. {
  1155. newRankId = self getRank();
  1156. if ( newRankId == self.pers["rank"] )
  1157. return false;
  1158.  
  1159. oldRank = self.pers["rank"];
  1160. rankId = self.pers["rank"];
  1161. self.pers["rank"] = newRankId;
  1162.  
  1163. //self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "timePlayedTotal" ) );
  1164. println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
  1165.  
  1166. self setRank( newRankId );
  1167.  
  1168. return true;
  1169. }
  1170.  
  1171.  
  1172. updateRankAnnounceHUD()
  1173. {
  1174. self endon("disconnect");
  1175.  
  1176. self notify("update_rank");
  1177. self endon("update_rank");
  1178.  
  1179. team = self.pers["team"];
  1180. if ( !isdefined( team ) )
  1181. return;
  1182.  
  1183. // give challenges and other XP a chance to process
  1184. // also ensure that post game promotions happen asap
  1185. if ( !levelFlag( "game_over" ) )
  1186. level waittill_notify_or_timeout( "game_over", 0.25 );
  1187.  
  1188.  
  1189. newRankName = self getRankInfoFull( self.pers["rank"] );
  1190. rank_char = level.rankTable[self.pers["rank"]][1];
  1191. subRank = int(rank_char[rank_char.size-1]);
  1192.  
  1193. thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
  1194.  
  1195. if ( subRank > 1 )
  1196. return;
  1197.  
  1198. for ( i = 0; i < level.players.size; i++ )
  1199. {
  1200. player = level.players[i];
  1201. playerteam = player.pers["team"];
  1202. if ( isdefined( playerteam ) && player != self )
  1203. {
  1204. if ( playerteam == team )
  1205. player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
  1206. }
  1207. }
  1208. }
  1209.  
  1210.  
  1211. endGameUpdate()
  1212. {
  1213. player = self;
  1214. }
  1215.  
  1216.  
  1217. scorePopup( amount, bonus, hudColor, glowAlpha )
  1218. {
  1219. self endon( "disconnect" );
  1220. self endon( "joined_team" );
  1221. self endon( "joined_spectators" );
  1222.  
  1223. if ( amount == 0 )
  1224. return;
  1225.  
  1226. self notify( "scorePopup" );
  1227. self endon( "scorePopup" );
  1228.  
  1229. self.xpUpdateTotal += amount;
  1230. self.bonusUpdateTotal += bonus;
  1231.  
  1232. wait ( 0.05 );
  1233.  
  1234. if ( self.xpUpdateTotal < 0 )
  1235. self.hud_scorePopup.label = &"";
  1236. else
  1237. self.hud_scorePopup.label = &"MP_PLUS";
  1238.  
  1239. self.hud_scorePopup.color = hudColor;
  1240. self.hud_scorePopup.glowColor = hudColor;
  1241. self.hud_scorePopup.glowAlpha = glowAlpha;
  1242.  
  1243. self.hud_scorePopup setValue(self.xpUpdateTotal);
  1244. self.hud_scorePopup.alpha = 0.85;
  1245. self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
  1246.  
  1247. increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
  1248.  
  1249. if ( self.bonusUpdateTotal )
  1250. {
  1251. while ( self.bonusUpdateTotal > 0 )
  1252. {
  1253. self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
  1254. self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
  1255.  
  1256. self.hud_scorePopup setValue( self.xpUpdateTotal );
  1257.  
  1258. wait ( 0.05 );
  1259. }
  1260. }
  1261. else
  1262. {
  1263. wait ( 1.0 );
  1264. }
  1265.  
  1266. self.hud_scorePopup fadeOverTime( 0.75 );
  1267. self.hud_scorePopup.alpha = 0;
  1268.  
  1269. self.xpUpdateTotal = 0;
  1270. }
  1271.  
  1272. removeRankHUD()
  1273. {
  1274. self.hud_scorePopup.alpha = 0;
  1275. }
  1276.  
  1277. getRank()
  1278. {
  1279. rankXp = self.pers["rankxp"];
  1280. rankId = self.pers["rank"];
  1281.  
  1282. if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
  1283. return rankId;
  1284. else
  1285. return self getRankForXp( rankXp );
  1286. }
  1287.  
  1288.  
  1289. levelForExperience( experience )
  1290. {
  1291. return getRankForXP( experience );
  1292. }
  1293.  
  1294.  
  1295. getRankForXp( xpVal )
  1296. {
  1297. rankId = 0;
  1298. rankName = level.rankTable[rankId][1];
  1299. assert( isDefined( rankName ) );
  1300.  
  1301. while ( isDefined( rankName ) && rankName != "" )
  1302. {
  1303. if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
  1304. return rankId;
  1305.  
  1306. rankId++;
  1307. if ( isDefined( level.rankTable[rankId] ) )
  1308. rankName = level.rankTable[rankId][1];
  1309. else
  1310. rankName = undefined;
  1311. }
  1312.  
  1313. rankId--;
  1314. return rankId;
  1315. }
  1316.  
  1317.  
  1318. getSPM()
  1319. {
  1320. rankLevel = self getRank() + 1;
  1321. return (3 + (rankLevel * 0.5))*10;
  1322. }
  1323.  
  1324. getPrestigeLevel()
  1325. {
  1326. return self maps\mp\gametypes\_persistence::statGet( "prestige" );
  1327. }
  1328.  
  1329. getRankXP()
  1330. {
  1331. return self.pers["rankxp"];
  1332. }
  1333.  
  1334. incRankXP( amount )
  1335. {
  1336. if ( !self rankingEnabled() )
  1337. return;
  1338.  
  1339. if ( isDefined( self.isCheater ) )
  1340. return;
  1341.  
  1342. xp = self getRankXP();
  1343. newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
  1344.  
  1345. if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
  1346. newXp = getRankInfoMaxXP( level.maxRank );
  1347.  
  1348. self.pers["rankxp"] = newXp;
  1349. }
  1350.  
  1351. getRestXPAward( baseXP )
  1352. {
  1353. if ( !getdvarint( "scr_restxp_enable" ) )
  1354. return 0;
  1355.  
  1356. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
  1357.  
  1358. wantGiveRestXP = int(baseXP * restXPAwardRate);
  1359. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  1360.  
  1361. if ( mayGiveRestXP <= 0 )
  1362. return 0;
  1363.  
  1364. // we don't care about giving more rest XP than we have; we just want it to always be X2
  1365. //if ( wantGiveRestXP > mayGiveRestXP )
  1366. // return mayGiveRestXP;
  1367.  
  1368. return wantGiveRestXP;
  1369. }
  1370.  
  1371.  
  1372. isLastRestXPAward( baseXP )
  1373. {
  1374. if ( !getdvarint( "scr_restxp_enable" ) )
  1375. return false;
  1376.  
  1377. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
  1378.  
  1379. wantGiveRestXP = int(baseXP * restXPAwardRate);
  1380. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  1381.  
  1382. if ( mayGiveRestXP <= 0 )
  1383. return false;
  1384.  
  1385. if ( wantGiveRestXP >= mayGiveRestXP )
  1386. return true;
  1387.  
  1388. return false;
  1389. }
  1390.  
  1391. syncXPStat()
  1392. {
  1393. if ( level.xpScale > 4 || level.xpScale <= 0)
  1394. exitLevel( false );
  1395.  
  1396. xp = self getRankXP();
  1397.  
  1398. self maps\mp\gametypes\_persistence::statSet( "experience", xp );
  1399. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement