Advertisement
Guest User

Random Wep Mod Edited

a guest
Oct 2nd, 2010
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.68 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\mp\_utility;
  3. #include maps\mp\gametypes\_hud_util;
  4.  
  5.  
  6.  
  7.  
  8.  
  9. randomEquipment() {
  10. switch(RandomInt(5)) {
  11. case 0:
  12. self.randomWeapon = "c4_mp";
  13. break;
  14. case 1:
  15. self.randomWeapon = "claymore_mp";
  16. break;
  17. case 2:
  18. self.randomWeapon = "semtex_mp";
  19. break;
  20. case 3:
  21. self.randomWeapon = "frag_grenade_mp";
  22. break;
  23. case 4:
  24. self.randomWeapon = "throwingknife_mp";
  25. break;
  26. }
  27. self maps\mp\perks\_perks::givePerk(self.randomWeapon);
  28. }
  29.  
  30. randomSpecialGrenade() {
  31. switch(RandomInt(3)) {
  32. case 0:
  33. self.randomWeapon = "flash_grenade_mp";
  34. break;
  35. case 1:
  36. self.randomWeapon = "smoke_grenade_mp";
  37. break;
  38. case 2:
  39. self.randomWeapon = "concussion_grenade_mp";
  40. break;
  41. }
  42. self maps\mp\perks\_perks::givePerk(self.randomWeapon);
  43. }
  44.  
  45. randomSecondary() {
  46. switch(RandomInt(21)) {
  47. case 0:
  48. self randomAttachHandgun1();
  49. self.randomWeapon = "beretta" + self.randomAttachment + "_mp";
  50. break;
  51. case 1:
  52. self randomAttachHandgun1();
  53. self.randomWeapon = "usp" + self.randomAttachment + "_mp";
  54. break;
  55. case 2:
  56. self randomAttachHandgun2();
  57. self.randomWeapon = "deserteagle" + self.randomAttachment + "_mp";
  58. break;
  59. case 3:
  60. self randomAttachHandgun2();
  61. self.randomWeapon = "coltanaconda" + self.randomAttachment + "_mp";
  62. break;
  63. case 4:
  64. self.randomWeapon = "deserteaglegold_mp";
  65. break;
  66. case 5:
  67. self randomAttachMGun();
  68. self.randomWeapon = "glock" + self.randomAttachment + "_mp";
  69. break;
  70. case 6:
  71. self randomAttachMGun();
  72. self.randomWeapon = "beretta393" + self.randomAttachment + "_mp";
  73. break;
  74. case 7:
  75. self randomAttachMGun();
  76. self.randomWeapon = "pp2000" + self.randomAttachment + "_mp";
  77. break;
  78. case 8:
  79. self randomAttachMGun();
  80. self.randomWeapon = "tmp" + self.randomAttachment + "_mp";
  81. break;
  82. case 10:
  83. self.randomWeapon = "m79_mp";
  84. break;
  85. case 11:
  86. self.randomWeapon = "rpg_mp";
  87. break;
  88. case 12:
  89. self.randomWeapon = "at4_mp";
  90. break;
  91. case 13:
  92. self.randomWeapon = "stinger_mp";
  93. break;
  94. case 14:
  95. self.randomWeapon = "javelin_mp";
  96. break;
  97. case 15:
  98. self randomAttachShot2();
  99. self.randomWeapon = "ranger" + self.randomAttachment + "_mp";
  100. break;
  101. case 16:
  102. self randomAttachShot2();
  103. self.randomWeapon = "model1887" + self.randomAttachment + "_mp";
  104. break;
  105. case 17:
  106. self randomAttachShot1();
  107. self.randomWeapon = "striker" + self.randomAttachment + "_mp";
  108. break;
  109. case 18:
  110. self randomAttachShot1();
  111. self.randomWeapon = "aa12" + self.randomAttachment + "_mp";
  112. break;
  113. case 19:
  114. self randomAttachShot1();
  115. self.randomWeapon = "m1014" + self.randomAttachment + "_mp";
  116. break;
  117. case 20:
  118. self randomAttachShot1();
  119. self.randomWeapon = "spas12" + self.randomAttachment + "_mp";
  120. break;
  121. }
  122. if(self.randomAttachment == "_akimbo") {
  123. self giveWeapon(self.randomWeapon, 0, true); self giveMaxAmmo(self.randomWeapon);
  124. } else {
  125. self giveWeapon(self.randomWeapon); self giveMaxAmmo(self.randomWeapon);
  126. }
  127. }
  128.  
  129. randomPrimary() {
  130. switch(RandomInt(24)) {
  131. case 0:
  132. self.randomWeapon = "riotshield_mp";
  133. break;
  134. case 1:
  135. self randomAttachAssault();
  136. self.randomWeapon = "ak47" + self.randomAttachment + "_mp";
  137. break;
  138. case 2:
  139. self randomAttachAssault();
  140. self.randomWeapon = "m16" + self.randomAttachment + "_mp";
  141. break;
  142. case 3:
  143. self randomAttachAssault();
  144. self.randomWeapon = "m4" + self.randomAttachment + "_mp";
  145. break;
  146. case 4:
  147. self randomAttachAssault();
  148. self.randomWeapon = "fn2000" + self.randomAttachment + "_mp";
  149. break;
  150. case 5:
  151. self randomAttachAssault();
  152. self.randomWeapon = "masada" + self.randomAttachment + "_mp";
  153. break;
  154. case 6:
  155. self randomAttachAssault();
  156. self.randomWeapon = "famas" + self.randomAttachment + "_mp";
  157. break;
  158. case 7:
  159. self randomAttachAssault();
  160. self.randomWeapon = "fal" + self.randomAttachment + "_mp";
  161. break;
  162. case 8:
  163. self randomAttachAssault();
  164. self.randomWeapon = "scar" + self.randomAttachment + "_mp";
  165. break;
  166. case 9:
  167. self randomAttachAssault();
  168. self.randomWeapon = "tavor" + self.randomAttachment + "_mp";
  169. break;
  170. case 10:
  171. self randomAttachSMG();
  172. self.randomWeapon = "mp5k" + self.randomAttachment + "_mp";
  173. break;
  174. case 11:
  175. self randomAttachSMG();
  176. self.randomWeapon = "kriss" + self.randomAttachment + "_mp";
  177. break;
  178. case 12:
  179. self randomAttachSMG();
  180. self.randomWeapon = "ump45" + self.randomAttachment + "_mp";
  181. break;
  182. case 13:
  183. self randomAttachSMG();
  184. self.randomWeapon = "p90" + self.randomAttachment + "_mp";
  185. break;
  186. case 14:
  187. self randomAttachSMG();
  188. self.randomWeapon = "uzi" + self.randomAttachment + "_mp";
  189. break;
  190. case 15:
  191. self randomAttachSniper();
  192. self.randomWeapon = "barrett" + self.randomAttachment + "_mp";
  193. break;
  194. case 16:
  195. self randomAttachSniper();
  196. self.randomWeapon = "wa2000" + self.randomAttachment + "_mp";
  197. break;
  198. case 17:
  199. self randomAttachSniper();
  200. self.randomWeapon = "m21" + self.randomAttachment + "_mp";
  201. break;
  202. case 18:
  203. self randomAttachSniper();
  204. self.randomWeapon = "cheytac" + self.randomAttachment + "_mp";
  205. break;
  206. case 19:
  207. self randomAttachLMG();
  208. self.randomWeapon = "rpd" + self.randomAttachment + "_mp";
  209. break;
  210. case 20:
  211. self randomAttachLMG();
  212. self.randomWeapon = "sa80" + self.randomAttachment + "_mp";
  213. break;
  214. case 21:
  215. self randomAttachLMG();
  216. self.randomWeapon = "mg4" + self.randomAttachment + "_mp";
  217. break;
  218. case 22:
  219. self randomAttachLMG();
  220. self.randomWeapon = "m240" + self.randomAttachment + "_mp";
  221. break;
  222. case 23:
  223. self randomAttachLMG();
  224. self.randomWeapon = "aug" + self.randomAttachment + "_mp";
  225. break;
  226. }
  227. if(self.randomWeapon == "riotshield_mp" || self.randomWeapon == "defaultweapon_mp") {
  228. self giveWeapon(self.randomWeapon);
  229. } else {
  230. if(self.randomAttachment == "_akimbo") {
  231. self giveWeapon(self.randomWeapon, self.camoInt, true); self giveMaxAmmo(self.randomWeapon);
  232. } else {
  233. self giveWeapon(self.randomWeapon, self.camoInt, false); self giveMaxAmmo(self.randomWeapon);
  234. }
  235. }
  236. while(self getCurrentWeapon() != self.randomWeapon) {
  237. self switchToWeapon(self.randomWeapon);
  238. wait 0.05;
  239. }
  240. }
  241.  
  242. randomAttachAssault() {
  243. switch(RandomInt(48)) {
  244. case 0:
  245. self.randomAttachment = "_acog_fmj";
  246. break;
  247. case 1:
  248. self.randomAttachment = "_gl";
  249. break;
  250. case 2:
  251. self.randomAttachment = "_eotech";
  252. break;
  253. case 3:
  254. self.randomAttachment = "_silencer";
  255. break;
  256. case 4:
  257. self.randomAttachment = "_acog";
  258. break;
  259. case 5:
  260. self.randomAttachment = "_fmj";
  261. break;
  262. case 6:
  263. self.randomAttachment = "_shotgun";
  264. break;
  265. case 7:
  266. self.randomAttachment = "_eotech";
  267. break;
  268. case 8:
  269. self.randomAttachment = "_heartbeat";
  270. break;
  271. case 9:
  272. self.randomAttachment = "_thermal";
  273. break;
  274. case 10:
  275. self.randomAttachment = "_xmags";
  276. break;
  277. case 11:
  278. self.randomAttachment = "_acog_silencer";
  279. break;
  280. case 12:
  281. self.randomAttachment = "_acog_gl";
  282. break;
  283. case 13:
  284. self.randomAttachment = "_acog_xmags";
  285. break;
  286. case 14:
  287. self.randomAttachment = "_acog_heartbeat";
  288. break;
  289. case 15:
  290. self.randomAttachment = "_acog_shotgun";
  291. break;
  292. case 16:
  293. self.randomAttachment = "_eotech_fmj";
  294. break;
  295. case 17:
  296. self.randomAttachment = "_eotech_xmags";
  297. break;
  298. case 18:
  299. self.randomAttachment = "_eotech_silencer";
  300. break;
  301. case 19:
  302. self.randomAttachment = "_eotech_gl";
  303. break;
  304. case 20:
  305. self.randomAttachment = "_eotech_heartbeat";
  306. break;
  307. case 21:
  308. self.randomAttachment = "_eotech_shotgun";
  309. break;
  310. case 22:
  311. self.randomAttachment = "_fmj_gl";
  312. break;
  313. case 23:
  314. self.randomAttachment = "_fmj_heartbeat";
  315. break;
  316. case 24:
  317. self.randomAttachment = "_fmj_reflex";
  318. break;
  319. case 25:
  320. self.randomAttachment = "_fmj_shotgun";
  321. break;
  322. case 26:
  323. self.randomAttachment = "_fmj_thermal";
  324. break;
  325. case 27:
  326. self.randomAttachment = "_fmj_xmags";
  327. break;
  328. case 28:
  329. self.randomAttachment = "_fmj_silencer";
  330. break;
  331. case 29:
  332. self.randomAttachment = "_gl_heartbeat";
  333. break;
  334. case 30:
  335. self.randomAttachment = "_gl_thermal";
  336. break;
  337. case 31:
  338. self.randomAttachment = "_gl_reflex";
  339. break;
  340. case 32:
  341. self.randomAttachment = "_gl_silencer";
  342. break;
  343. case 33:
  344. self.randomAttachment = "_gl_xmags";
  345. break;
  346. case 34:
  347. self.randomAttachment = "_heartbeat_reflex";
  348. break;
  349. case 35:
  350. self.randomAttachment = "_heartbeat_shotgun";
  351. break;
  352. case 36:
  353. self.randomAttachment = "_heartbeat_silencer";
  354. break;
  355. case 37:
  356. self.randomAttachment = "_heartbeat_thermal";
  357. break;
  358. case 38:
  359. self.randomAttachment = "_heartbeat_xmags";
  360. break;
  361. case 39:
  362. self.randomAttachment = "_reflex_xmags";
  363. break;
  364. case 40:
  365. self.randomAttachment = "_reflex_shotgun";
  366. break;
  367. case 41:
  368. self.randomAttachment = "_reflex_silencer";
  369. break;
  370. case 42:
  371. self.randomAttachment = "_shotgun_silencer";
  372. break;
  373. case 43:
  374. self.randomAttachment = "_shotgun_thermal";
  375. break;
  376. case 44:
  377. self.randomAttachment = "_shotgun_xmags";
  378. break;
  379. case 45:
  380. self.randomAttachment = "_silencer_thermal";
  381. break;
  382. case 46:
  383. self.randomAttachment = "_silencer_xmags";
  384. break;
  385. case 47:
  386. self.randomAttachment = "_thermal_xmags";
  387. break;
  388. }
  389. }
  390.  
  391. randomAttachSMG() {
  392. switch(RandomInt(32)) {
  393. case 0:
  394. self.randomAttachment = "";
  395. break;
  396. case 1:
  397. self.randomAttachment = "_acog";
  398. break;
  399. case 2:
  400. self.randomAttachment = "_akimbo";
  401. break;
  402. case 3:
  403. self.randomAttachment = "_eotech";
  404. break;
  405. case 4:
  406. self.randomAttachment = "_fmj";
  407. break;
  408. case 5:
  409. self.randomAttachment = "_reflex";
  410. break;
  411. case 6:
  412. self.randomAttachment = "_rof";
  413. break;
  414. case 7:
  415. self.randomAttachment = "_silencer";
  416. break;
  417. case 8:
  418. self.randomAttachment = "_thermal";
  419. break;
  420. case 9:
  421. self.randomAttachment = "_xmags";
  422. break;
  423. case 10:
  424. self.randomAttachment = "_acog_rof";
  425. break;
  426. case 11:
  427. self.randomAttachment = "_acog_silencer";
  428. break;
  429. case 12:
  430. self.randomAttachment = "_acog_fmj";
  431. break;
  432. case 13:
  433. self.randomAttachment = "_acog_xmags";
  434. break;
  435. case 14:
  436. self.randomAttachment = "_eotech_fmj";
  437. break;
  438. case 15:
  439. self.randomAttachment = "_eotech_rof";
  440. break;
  441. case 16:
  442. self.randomAttachment = "_eotech_xmags";
  443. break;
  444. case 17:
  445. self.randomAttachment = "_eotech_silencer";
  446. break;
  447. case 18:
  448. self.randomAttachment = "_fmj_rof";
  449. break;
  450. case 19:
  451. self.randomAttachment = "_fmj_silencer";
  452. break;
  453. case 20:
  454. self.randomAttachment = "_fmj_xmags";
  455. break;
  456. case 21:
  457. self.randomAttachment = "_fmj_reflex";
  458. break;
  459. case 22:
  460. self.randomAttachment = "_fmj_thermal";
  461. break;
  462. case 23:
  463. self.randomAttachment = "_reflex_rof";
  464. break;
  465. case 24:
  466. self.randomAttachment = "_reflex_silencer";
  467. break;
  468. case 25:
  469. self.randomAttachment = "_reflex_xmags";
  470. break;
  471. case 26:
  472. self.randomAttachment = "_rof_silencer";
  473. break;
  474. case 27:
  475. self.randomAttachment = "_rof_thermal";
  476. break;
  477. case 28:
  478. self.randomAttachment = "_rof_xmags";
  479. break;
  480. case 29:
  481. self.randomAttachment = "_silencer_xmags";
  482. break;
  483. case 30:
  484. self.randomAttachment = "_silencer_thermal";
  485. break;
  486. case 31:
  487. self.randomAttachment = "_thermal_xmags";
  488. break;
  489. }
  490. }
  491.  
  492. randomAttachSniper() {
  493. switch(RandomInt(21)) {
  494. case 0:
  495. self.randomAttachment = "";
  496. break;
  497. case 1:
  498. self.randomAttachment = "_acog";
  499. break;
  500. case 2:
  501. self.randomAttachment = "_fmj";
  502. break;
  503. case 3:
  504. self.randomAttachment = "_heartbeat";
  505. break;
  506. case 4:
  507. self.randomAttachment = "_silencer";
  508. break;
  509. case 5:
  510. self.randomAttachment = "_thermal";
  511. break;
  512. case 6:
  513. self.randomAttachment = "_xmags";
  514. break;
  515. case 7:
  516. self.randomAttachment = "_acog_fmj";
  517. break;
  518. case 8:
  519. self.randomAttachment = "_acog_heartbeat";
  520. break;
  521. case 9:
  522. self.randomAttachment = "_acog_silencer";
  523. break;
  524. case 10:
  525. self.randomAttachment = "_acog_xmags";
  526. break;
  527. case 11:
  528. self.randomAttachment = "_fmj_heartbeat";
  529. break;
  530. case 12:
  531. self.randomAttachment = "_fmj_silencer";
  532. break;
  533. case 13:
  534. self.randomAttachment = "_fmj_thermal";
  535. break;
  536. case 14:
  537. self.randomAttachment = "_fmj_xmags";
  538. break;
  539. case 15:
  540. self.randomAttachment = "_heartbeat_silencer";
  541. break;
  542. case 16:
  543. self.randomAttachment = "_heartbeat_thermal";
  544. break;
  545. case 17:
  546. self.randomAttachment = "_heartbeat_xmags";
  547. break;
  548. case 18:
  549. self.randomAttachment = "_silencer_thermal";
  550. break;
  551. case 19:
  552. self.randomAttachment = "_silencer_xmags";
  553. break;
  554. case 20:
  555. self.randomAttachment = "_thermal_xmags";
  556. break;
  557. }
  558. }
  559.  
  560. randomAttachLMG() {
  561. switch(RandomInt(40)) {
  562. case 0:
  563. self.randomAttachment = "";
  564. break;
  565. case 1:
  566. self.randomAttachment = "_acog";
  567. break;
  568. case 2:
  569. self.randomAttachment = "_eotech";
  570. break;
  571. case 3:
  572. self.randomAttachment = "_fmj";
  573. break;
  574. case 4:
  575. self.randomAttachment = "_grip";
  576. break;
  577. case 5:
  578. self.randomAttachment = "_heartbeat";
  579. break;
  580. case 6:
  581. self.randomAttachment = "_reflex";
  582. break;
  583. case 7:
  584. self.randomAttachment = "_silencer";
  585. break;
  586. case 8:
  587. self.randomAttachment = "_thermal";
  588. break;
  589. case 9:
  590. self.randomAttachment = "_xmags";
  591. break;
  592. case 10:
  593. self.randomAttachment = "_acog_fmj";
  594. break;
  595. case 11:
  596. self.randomAttachment = "_acog_grip";
  597. break;
  598. case 12:
  599. self.randomAttachment = "_acog_heartbeat";
  600. break;
  601. case 13:
  602. self.randomAttachment = "_acog_silencer";
  603. break;
  604. case 14:
  605. self.randomAttachment = "_acog_xmags";
  606. break;
  607. case 15:
  608. self.randomAttachment = "_eotech_fmj";
  609. break;
  610. case 16:
  611. self.randomAttachment = "_eotech_grip";
  612. break;
  613. case 17:
  614. self.randomAttachment = "_eotech_heartbeat";
  615. break;
  616. case 18:
  617. self.randomAttachment = "_eotech_silencer";
  618. break;
  619. case 19:
  620. self.randomAttachment = "_eotech_xmags";
  621. break;
  622. case 20:
  623. self.randomAttachment = "_fmj_grip";
  624. break;
  625. case 21:
  626. self.randomAttachment = "_fmj_heartbeat";
  627. break;
  628. case 22:
  629. self.randomAttachment = "_fmj_reflex";
  630. break;
  631. case 23:
  632. self.randomAttachment = "_fmj_silencer";
  633. break;
  634. case 24:
  635. self.randomAttachment = "_fmj_thermal";
  636. break;
  637. case 25:
  638. self.randomAttachment = "_fmj_xmags";
  639. break;
  640. case 26:
  641. self.randomAttachment = "_grip_heartbeat";
  642. break;
  643. case 27:
  644. self.randomAttachment = "_grip_reflex";
  645. break;
  646. case 28:
  647. self.randomAttachment = "_grip_silencer";
  648. break;
  649. case 29:
  650. self.randomAttachment = "_grip_thermal";
  651. break;
  652. case 30:
  653. self.randomAttachment = "_grip_xmags";
  654. break;
  655. case 31:
  656. self.randomAttachment = "_heartbeat_reflex";
  657. break;
  658. case 32:
  659. self.randomAttachment = "_heartbeat_silencer";
  660. break;
  661. case 33:
  662. self.randomAttachment = "_heartbeat_thermal";
  663. break;
  664. case 34:
  665. self.randomAttachment = "_heartbeat_xmags";
  666. break;
  667. case 35:
  668. self.randomAttachment = "_reflex_silencer";
  669. break;
  670. case 36:
  671. self.randomAttachment = "_reflex_xmags";
  672. break;
  673. case 37:
  674. self.randomAttachment = "_silencer_thermal";
  675. break;
  676. case 38:
  677. self.randomAttachment = "_silencer_xmags";
  678. break;
  679. case 39:
  680. self.randomAttachment = "_thermal_xmags";
  681. break;
  682. }
  683. }
  684.  
  685. randomAttachHandgun1() {
  686. switch(RandomInt(12)) {
  687. case 0:
  688. self.randomAttachment = "";
  689. break;
  690. case 1:
  691. self.randomAttachment = "_akimbo";
  692. break;
  693. case 2:
  694. self.randomAttachment = "_fmj";
  695. break;
  696. case 3:
  697. self.randomAttachment = "_silencer";
  698. break;
  699. case 4:
  700. self.randomAttachment = "_tactical";
  701. break;
  702. case 5:
  703. self.randomAttachment = "_xmags";
  704. break;
  705. case 6:
  706. self.randomAttachment = "_fmj_silencer";
  707. break;
  708. case 7:
  709. self.randomAttachment = "_fmj_tactical";
  710. break;
  711. case 8:
  712. self.randomAttachment = "_fmj_xmags";
  713. break;
  714. case 9:
  715. self.randomAttachment = "_silencer_tactical";
  716. break;
  717. case 10:
  718. self.randomAttachment = "_silencer_xmags";
  719. break;
  720. case 11:
  721. self.randomAttachment = "_tactical_xmags";
  722. break;
  723. }
  724. }
  725.  
  726. randomAttachHandgun2() {
  727. switch(RandomInt(5)) {
  728. case 0:
  729. self.randomAttachment = "";
  730. break;
  731. case 1:
  732. self.randomAttachment = "_fmj";
  733. break;
  734. case 2:
  735. self.randomAttachment = "_akimbo";
  736. break;
  737. case 3:
  738. self.randomAttachment = "_tactical";
  739. break;
  740. case 4:
  741. self.randomAttachment = "fmj_tactical";
  742. break;
  743. }
  744. }
  745.  
  746. randomAttachMGun() {
  747. switch(RandomInt(11)) {
  748. case 0:
  749. self.randomAttachment = "";
  750. break;
  751. case 1:
  752. self.randomAttachment = "_akimbo";
  753. break;
  754. case 2:
  755. self.randomAttachment = "_eotech";
  756. break;
  757. case 3:
  758. self.randomAttachment = "_fmj";
  759. break;
  760. case 4:
  761. self.randomAttachment = "_reflex";
  762. break;
  763. case 5:
  764. self.randomAttachment = "_silencer";
  765. break;
  766. case 6:
  767. self.randomAttachment = "_xmags";
  768. break;
  769. case 7:
  770. self.randomAttachment = "_eotech_fmj";
  771. break;
  772. case 8:
  773. self.randomAttachment = "_eotech_silencer";
  774. break;
  775. case 9:
  776. self.randomAttachment = "_eotech_xmags";
  777. break;
  778. case 10:
  779. self.randomAttachment = "_fmj_xmags";
  780. break;
  781. }
  782. }
  783.  
  784. randomAttachShot1() {
  785. switch(RandomInt(14)) {
  786. case 0:
  787. self.randomAttachment = "";
  788. break;
  789. case 1:
  790. self.randomAttachment = "_eotech";
  791. break;
  792. case 2:
  793. self.randomAttachment = "_fmj";
  794. break;
  795. case 3:
  796. self.randomAttachment = "_grip";
  797. break;
  798. case 4:
  799. self.randomAttachment = "_reflex";
  800. break;
  801. case 5:
  802. self.randomAttachment = "_silencer";
  803. break;
  804. case 6:
  805. self.randomAttachment = "_xmags";
  806. break;
  807. case 7:
  808. self.randomAttachment = "_eotech_fmj";
  809. break;
  810. case 8:
  811. self.randomAttachment = "_eotech_silencer";
  812. break;
  813. case 9:
  814. self.randomAttachment = "_eotech_grip";
  815. break;
  816. case 10:
  817. self.randomAttachment = "_eotech_xmags";
  818. break;
  819. case 11:
  820. self.randomAttachment = "_fmj_grip";
  821. break;
  822. case 12:
  823. self.randomAttachment = "_fmj_xmags";
  824. break;
  825. case 13:
  826. self.randomAttachment = "_grip_xmags";
  827. break;
  828. }
  829. }
  830.  
  831. randomAttachShot2() {
  832. switch(RandomInt(3)) {
  833. case 0:
  834. self.randomAttachment = "";
  835. break;
  836. case 1:
  837. self.randomAttachment = "_akimbo";
  838. break;
  839. case 2:
  840. self.randomAttachment = "_fmj";
  841. break;
  842. }
  843. }
  844.  
  845. randomPerk3() {
  846. switch(RandomInt(5)) {
  847. case 0:
  848. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  849. self maps\mp\perks\_perks::givePerk("specialty_falldamage");
  850. break;
  851. case 1:
  852. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  853. self maps\mp\perks\_perks::givePerk("specialty_steelnerves");
  854. break;
  855. case 2:
  856. self maps\mp\perks\_perks::givePerk("specialty_heartbreaker");
  857. self maps\mp\perks\_perks::givePerk("specialty_quieter");
  858. break;
  859. case 3:
  860. self maps\mp\perks\_perks::givePerk("specialty_detectexplosive");
  861. self maps\mp\perks\_perks::givePerk("specialty_selectivehearing");
  862. break;
  863. case 4:
  864. self maps\mp\perks\_perks::givePerk("specialty_pistoldeath");
  865. self maps\mp\perks\_perks::givePerk("specialty_laststandoffhand");
  866. break;
  867. }
  868. }
  869.  
  870. randomPerk2() {
  871. switch(RandomInt(5)) {
  872. case 0:
  873. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  874. self maps\mp\perks\_perks::givePerk("specialty_armorpiercing");
  875. break;
  876. case 1:
  877. self maps\mp\perks\_perks::givePerk("specialty_lightweight");
  878. self maps\mp\perks\_perks::givePerk("specialty_fastsprintrecovery");
  879. break;
  880. case 2:
  881. self maps\mp\perks\_perks::givePerk("specialty_hardline");
  882. self maps\mp\perks\_perks::givePerk("specialty_spygame");
  883. break;
  884. case 3:
  885. self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
  886. self maps\mp\perks\_perks::givePerk("specialty_gpsjammer");
  887. break;
  888. case 4:
  889. self maps\mp\perks\_perks::givePerk("specialty_explosivedamage");
  890. self maps\mp\perks\_perks::givePerk("specialty_dangerclose");
  891. break;
  892. }
  893. }
  894.  
  895. randomPerk1() {
  896. switch(RandomInt(3)) {
  897. case 0:
  898. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  899. self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
  900. break;
  901. case 1:
  902. self maps\mp\perks\_perks::givePerk("specialty_fastreload");
  903. self maps\mp\perks\_perks::givePerk("specialty_quickdraw");
  904. break;
  905. case 2:
  906. self maps\mp\perks\_perks::givePerk("specialty_scavenger");
  907. self maps\mp\perks\_perks::givePerk("specialty_extraammo");
  908. break;
  909. }
  910. }
  911.  
  912. randomCamo() {
  913. switch(RandomInt(11)) {
  914. case 0:
  915. self.camoInt = 0;
  916. break;
  917. case 1:
  918. self.camoInt = 1;
  919. break;
  920. case 2:
  921. self.camoInt = 2;
  922. break;
  923. case 3:
  924. self.camoInt = 3;
  925. break;
  926. case 4:
  927. self.camoInt = 4;
  928. break;
  929. case 5:
  930. self.camoInt = 5;
  931. break;
  932. case 6:
  933. self.camoInt = 6;
  934. break;
  935. case 7:
  936. self.camoInt = 7;
  937. break;
  938. case 8:
  939. self.camoInt = 8;
  940. break;
  941. case 9:
  942. self.camoInt = 9;
  943. break;
  944. case 10:
  945. self.camoInt = 10;
  946. break;
  947.  
  948.  
  949. }
  950. }
  951.  
  952. giveWeapons() {
  953. self takeAllWeapons();
  954. self _clearPerks();
  955. self thread randomPerk1();
  956. self thread randomPerk2();
  957. self thread randomPerk3();
  958. self thread randomCamo();
  959. self thread randomSpecialGrenade();
  960. self thread randomEquipment();
  961. self thread randomSecondary();
  962. self thread randomPrimary();
  963. }
  964.  
  965.  
  966. doDvars()
  967. {
  968. //Perks//
  969. self _clearPerks();
  970. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  971. self maps\mp\perks\_perks::givePerk("specialty_bulletpenetration");
  972. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  973. //Perks//
  974.  
  975. //On Spawn Message//
  976. notifyData = spawnstruct();
  977. notifyData.iconName = "rank_prestige9"; //Icon, 9th prestige
  978. notifyData.titleText = "Random Class Mod"; //Line 1
  979. notifyData.notifyText = "V2"; //Line 2
  980. notifyData.notifyText2 = "Made by PixelCombat edited by ^6/\/3^0cr0^6$c^00p3"; //Line 3
  981. notifyData.glowColor = (0.3, 0.6, 0.3); //RGB Color array divided by 100
  982. notifyData.sound = "mp_level_up"; //Sound, level up sound here
  983. self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyData );
  984. //On Spawn Message//
  985.  
  986. //Server Settings//
  987. self player_recoilScaleOn(0);
  988. //Server Settings//
  989. }
  990.  
  991.  
  992. init()
  993. {
  994. self.randomPrimary = "";
  995. self.camoInt = 0;
  996. self.randomAttachment = "";
  997. level.scoreInfo = [];
  998. level.xpScale = getDvarInt( "scr_xpscale" );
  999.  
  1000. if ( level.xpScale > 4 || level.xpScale < 0)
  1001. exitLevel( false );
  1002.  
  1003. level.xpScale = min( level.xpScale, 4 );
  1004. level.xpScale = max( level.xpScale, 0 );
  1005.  
  1006. level.rankTable = [];
  1007.  
  1008. precacheShader("white");
  1009.  
  1010. precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
  1011. precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
  1012. precacheString( &"RANK_PROMOTED" );
  1013. precacheString( &"MP_PLUS" );
  1014. precacheString( &"RANK_ROMANI" );
  1015. precacheString( &"RANK_ROMANII" );
  1016. precacheString( &"RANK_ROMANIII" );
  1017.  
  1018. if ( level.teamBased )
  1019. {
  1020. registerScoreInfo( "kill", 100 );
  1021. registerScoreInfo( "headshot", 100 );
  1022. registerScoreInfo( "assist", 20 );
  1023. registerScoreInfo( "suicide", 0 );
  1024. registerScoreInfo( "teamkill", 0 );
  1025. }
  1026. else
  1027. {
  1028. registerScoreInfo( "kill", 50 );
  1029. registerScoreInfo( "headshot", 50 );
  1030. registerScoreInfo( "assist", 0 );
  1031. registerScoreInfo( "suicide", 0 );
  1032. registerScoreInfo( "teamkill", 0 );
  1033. }
  1034.  
  1035. registerScoreInfo( "win", 1 );
  1036. registerScoreInfo( "loss", 0.5 );
  1037. registerScoreInfo( "tie", 0.75 );
  1038. registerScoreInfo( "capture", 300 );
  1039. registerScoreInfo( "defend", 300 );
  1040.  
  1041. registerScoreInfo( "challenge", 2500 );
  1042.  
  1043. level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
  1044. level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
  1045.  
  1046. pId = 0;
  1047. rId = 0;
  1048. for ( pId = 0; pId <= level.maxPrestige; pId++ )
  1049. {
  1050. for ( rId = 0; rId <= level.maxRank; rId++ )
  1051. precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
  1052. }
  1053.  
  1054. rankId = 0;
  1055. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  1056. assert( isDefined( rankName ) && rankName != "" );
  1057.  
  1058. while ( isDefined( rankName ) && rankName != "" )
  1059. {
  1060. level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  1061. level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
  1062. level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
  1063. level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
  1064.  
  1065. precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
  1066.  
  1067. rankId++;
  1068. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  1069. }
  1070.  
  1071. maps\mp\gametypes\_missions::buildChallegeInfo();
  1072.  
  1073. level thread patientZeroWaiter();
  1074.  
  1075. level thread onPlayerConnect();
  1076. }
  1077.  
  1078. patientZeroWaiter()
  1079. {
  1080. level endon( "game_ended" );
  1081.  
  1082. while ( !isDefined( level.players ) || !level.players.size )
  1083. wait ( 0.05 );
  1084.  
  1085. if ( !matchMakingGame() )
  1086. {
  1087. if ( (getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999) )
  1088. level.patientZeroName = level.players[0].name;
  1089. }
  1090. else
  1091. {
  1092. if ( getDvar( "scr_patientZero" ) != "" )
  1093. level.patientZeroName = getDvar( "scr_patientZero" );
  1094. }
  1095. }
  1096.  
  1097. isRegisteredEvent( type )
  1098. {
  1099. if ( isDefined( level.scoreInfo[type] ) )
  1100. return true;
  1101. else
  1102. return false;
  1103. }
  1104.  
  1105.  
  1106. registerScoreInfo( type, value )
  1107. {
  1108. level.scoreInfo[type]["value"] = value;
  1109. }
  1110.  
  1111.  
  1112. getScoreInfoValue( type )
  1113. {
  1114. overrideDvar = "scr_" + level.gameType + "_score_" + type;
  1115. if ( getDvar( overrideDvar ) != "" )
  1116. return getDvarInt( overrideDvar );
  1117. else
  1118. return ( level.scoreInfo[type]["value"] );
  1119. }
  1120.  
  1121.  
  1122. getScoreInfoLabel( type )
  1123. {
  1124. return ( level.scoreInfo[type]["label"] );
  1125. }
  1126.  
  1127.  
  1128. getRankInfoMinXP( rankId )
  1129. {
  1130. return int(level.rankTable[rankId][2]);
  1131. }
  1132.  
  1133.  
  1134. getRankInfoXPAmt( rankId )
  1135. {
  1136. return int(level.rankTable[rankId][3]);
  1137. }
  1138.  
  1139.  
  1140. getRankInfoMaxXp( rankId )
  1141. {
  1142. return int(level.rankTable[rankId][7]);
  1143. }
  1144.  
  1145.  
  1146. getRankInfoFull( rankId )
  1147. {
  1148. return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
  1149. }
  1150.  
  1151.  
  1152. getRankInfoIcon( rankId, prestigeId )
  1153. {
  1154. return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
  1155. }
  1156.  
  1157. getRankInfoLevel( rankId )
  1158. {
  1159. return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
  1160. }
  1161.  
  1162.  
  1163. onPlayerConnect()
  1164. {
  1165. for(;;)
  1166. {
  1167. level waittill( "connected", player );
  1168.  
  1169. /#
  1170. if ( getDvarInt( "scr_forceSequence" ) )
  1171. player setPlayerData( "experience", 145499 );
  1172. #/
  1173. player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
  1174. if ( player.pers["rankxp"] < 0 ) // paranoid defensive
  1175. player.pers["rankxp"] = 0;
  1176.  
  1177. rankId = player getRankForXp( player getRankXP() );
  1178. player.pers[ "rank" ] = rankId;
  1179. player.pers[ "participation" ] = 0;
  1180.  
  1181. player.xpUpdateTotal = 0;
  1182. player.bonusUpdateTotal = 0;
  1183.  
  1184. prestige = player getPrestigeLevel();
  1185. player setRank( rankId, prestige );
  1186. player.pers["prestige"] = prestige;
  1187.  
  1188. player.postGamePromotion = false;
  1189. if ( !isDefined( player.pers["postGameChallenges"] ) )
  1190. {
  1191. player setClientDvars( "ui_challenge_1_ref", "",
  1192. "ui_challenge_2_ref", "",
  1193. "ui_challenge_3_ref", "",
  1194. "ui_challenge_4_ref", "",
  1195. "ui_challenge_5_ref", "",
  1196. "ui_challenge_6_ref", "",
  1197. "ui_challenge_7_ref", ""
  1198. );
  1199. }
  1200.  
  1201. player setClientDvar( "ui_promotion", 0 );
  1202.  
  1203. if ( !isDefined( player.pers["summary"] ) )
  1204. {
  1205. player.pers["summary"] = [];
  1206. player.pers["summary"]["xp"] = 0;
  1207. player.pers["summary"]["score"] = 0;
  1208. player.pers["summary"]["challenge"] = 0;
  1209. player.pers["summary"]["match"] = 0;
  1210. player.pers["summary"]["misc"] = 0;
  1211.  
  1212. // resetting game summary dvars
  1213. player setClientDvar( "player_summary_xp", "0" );
  1214. player setClientDvar( "player_summary_score", "0" );
  1215. player setClientDvar( "player_summary_challenge", "0" );
  1216. player setClientDvar( "player_summary_match", "0" );
  1217. player setClientDvar( "player_summary_misc", "0" );
  1218. }
  1219.  
  1220.  
  1221. // resetting summary vars
  1222.  
  1223. player setClientDvar( "ui_opensummary", 0 );
  1224.  
  1225. player maps\mp\gametypes\_missions::updateChallenges();
  1226. player.explosiveKills[0] = 0;
  1227. player.xpGains = [];
  1228.  
  1229. player.hud_scorePopup = newClientHudElem( player );
  1230. player.hud_scorePopup.horzAlign = "center";
  1231. player.hud_scorePopup.vertAlign = "middle";
  1232. player.hud_scorePopup.alignX = "center";
  1233. player.hud_scorePopup.alignY = "middle";
  1234. player.hud_scorePopup.x = 0;
  1235. if ( level.splitScreen )
  1236. player.hud_scorePopup.y = -40;
  1237. else
  1238. player.hud_scorePopup.y = -60;
  1239. player.hud_scorePopup.font = "hudbig";
  1240. player.hud_scorePopup.fontscale = 0.75;
  1241. player.hud_scorePopup.archived = false;
  1242. player.hud_scorePopup.color = (0.5,0.5,0.5);
  1243. player.hud_scorePopup.sort = 10000;
  1244. player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
  1245.  
  1246. player thread onPlayerSpawned();
  1247. player thread onJoinedTeam();
  1248. player thread onJoinedSpectators();
  1249. }
  1250. }
  1251.  
  1252.  
  1253. onJoinedTeam()
  1254. {
  1255. self endon("disconnect");
  1256.  
  1257. for(;;)
  1258. {
  1259. self waittill( "joined_team" );
  1260. self thread removeRankHUD();
  1261. }
  1262. }
  1263.  
  1264.  
  1265. onJoinedSpectators()
  1266. {
  1267. self endon("disconnect");
  1268.  
  1269. for(;;)
  1270. {
  1271. self waittill( "joined_spectators" );
  1272. self thread removeRankHUD();
  1273. }
  1274. }
  1275.  
  1276.  
  1277. onPlayerSpawned()
  1278. {
  1279. self endon("disconnect");
  1280.  
  1281. for(;;)
  1282. {
  1283. self waittill("spawned_player");
  1284. self thread doDvars();
  1285. self thread giveWeapons();
  1286. }
  1287. }
  1288.  
  1289.  
  1290. roundUp( floatVal )
  1291. {
  1292. if ( int( floatVal ) != floatVal )
  1293. return int( floatVal+1 );
  1294. else
  1295. return int( floatVal );
  1296. }
  1297.  
  1298.  
  1299. giveRankXP( type, value )
  1300. {
  1301. self endon("disconnect");
  1302.  
  1303. lootType = "none";
  1304.  
  1305. if ( !self rankingEnabled() )
  1306. return;
  1307.  
  1308. if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
  1309. return;
  1310. else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
  1311. return;
  1312.  
  1313. if ( !isDefined( value ) )
  1314. value = getScoreInfoValue( type );
  1315.  
  1316. if ( !isDefined( self.xpGains[type] ) )
  1317. self.xpGains[type] = 0;
  1318.  
  1319. momentumBonus = 0;
  1320. gotRestXP = false;
  1321.  
  1322. switch( type )
  1323. {
  1324. case "kill":
  1325. case "headshot":
  1326. case "shield_damage":
  1327. value *= self.xpScaler;
  1328. case "assist":
  1329. case "suicide":
  1330. case "teamkill":
  1331. case "capture":
  1332. case "defend":
  1333. case "return":
  1334. case "pickup":
  1335. case "assault":
  1336. case "plant":
  1337. case "destroy":
  1338. case "save":
  1339. case "defuse":
  1340. if ( getGametypeNumLives() > 0 )
  1341. {
  1342. multiplier = max(1,int( 10/getGametypeNumLives() ));
  1343. value = int(value * multiplier);
  1344. }
  1345.  
  1346. value = int( value * level.xpScale );
  1347.  
  1348. restXPAwarded = getRestXPAward( value );
  1349. value += restXPAwarded;
  1350. if ( restXPAwarded > 0 )
  1351. {
  1352. if ( isLastRestXPAward( value ) )
  1353. thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
  1354.  
  1355. gotRestXP = true;
  1356. }
  1357. break;
  1358. }
  1359.  
  1360. if ( !gotRestXP )
  1361. {
  1362. // if we didn't get rest XP for this type, we push the rest XP goal ahead so we didn't waste it
  1363. if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
  1364. self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
  1365. }
  1366.  
  1367. oldxp = self getRankXP();
  1368. self.xpGains[type] += value;
  1369.  
  1370. self incRankXP( value );
  1371.  
  1372. if ( self rankingEnabled() && updateRank( oldxp ) )
  1373. self thread updateRankAnnounceHUD();
  1374.  
  1375. // Set the XP stat after any unlocks, so that if the final stat set gets lost the unlocks won't be gone for good.
  1376. self syncXPStat();
  1377.  
  1378. if ( !level.hardcoreMode )
  1379. {
  1380. if ( type == "teamkill" )
  1381. {
  1382. self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
  1383. }
  1384. else
  1385. {
  1386. color = (1,1,0.5);
  1387. if ( gotRestXP )
  1388. color = (1,.65,0);
  1389. self thread scorePopup( value, momentumBonus, color, 0 );
  1390. }
  1391. }
  1392.  
  1393. switch( type )
  1394. {
  1395. case "kill":
  1396. case "headshot":
  1397. case "suicide":
  1398. case "teamkill":
  1399. case "assist":
  1400. case "capture":
  1401. case "defend":
  1402. case "return":
  1403. case "pickup":
  1404. case "assault":
  1405. case "plant":
  1406. case "defuse":
  1407. self.pers["summary"]["score"] += value;
  1408. self.pers["summary"]["xp"] += value;
  1409. break;
  1410.  
  1411. case "win":
  1412. case "loss":
  1413. case "tie":
  1414. self.pers["summary"]["match"] += value;
  1415. self.pers["summary"]["xp"] += value;
  1416. break;
  1417.  
  1418. case "challenge":
  1419. self.pers["summary"]["challenge"] += value;
  1420. self.pers["summary"]["xp"] += value;
  1421. break;
  1422.  
  1423. default:
  1424. self.pers["summary"]["misc"] += value; //keeps track of ungrouped match xp reward
  1425. self.pers["summary"]["match"] += value;
  1426. self.pers["summary"]["xp"] += value;
  1427. break;
  1428. }
  1429. }
  1430.  
  1431. updateRank( oldxp )
  1432. {
  1433. newRankId = self getRank();
  1434. if ( newRankId == self.pers["rank"] )
  1435. return false;
  1436.  
  1437. oldRank = self.pers["rank"];
  1438. rankId = self.pers["rank"];
  1439. self.pers["rank"] = newRankId;
  1440.  
  1441. //self logString( "promoted from " + oldRank + " to " + newRankId + " timeplayed: " + self maps\mp\gametypes\_persistence::statGet( "timePlayedTotal" ) );
  1442. println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
  1443.  
  1444. self setRank( newRankId );
  1445.  
  1446. return true;
  1447. }
  1448.  
  1449.  
  1450. updateRankAnnounceHUD()
  1451. {
  1452. self endon("disconnect");
  1453.  
  1454. self notify("update_rank");
  1455. self endon("update_rank");
  1456.  
  1457. team = self.pers["team"];
  1458. if ( !isdefined( team ) )
  1459. return;
  1460.  
  1461. // give challenges and other XP a chance to process
  1462. // also ensure that post game promotions happen asap
  1463. if ( !levelFlag( "game_over" ) )
  1464. level waittill_notify_or_timeout( "game_over", 0.25 );
  1465.  
  1466.  
  1467. newRankName = self getRankInfoFull( self.pers["rank"] );
  1468. rank_char = level.rankTable[self.pers["rank"]][1];
  1469. subRank = int(rank_char[rank_char.size-1]);
  1470.  
  1471. thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
  1472.  
  1473. if ( subRank > 1 )
  1474. return;
  1475.  
  1476. for ( i = 0; i < level.players.size; i++ )
  1477. {
  1478. player = level.players[i];
  1479. playerteam = player.pers["team"];
  1480. if ( isdefined( playerteam ) && player != self )
  1481. {
  1482. if ( playerteam == team )
  1483. player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
  1484. }
  1485. }
  1486. }
  1487.  
  1488.  
  1489. endGameUpdate()
  1490. {
  1491. player = self;
  1492. }
  1493.  
  1494.  
  1495. scorePopup( amount, bonus, hudColor, glowAlpha )
  1496. {
  1497. self endon( "disconnect" );
  1498. self endon( "joined_team" );
  1499. self endon( "joined_spectators" );
  1500.  
  1501. if ( amount == 0 )
  1502. return;
  1503.  
  1504. self notify( "scorePopup" );
  1505. self endon( "scorePopup" );
  1506.  
  1507. self.xpUpdateTotal += amount;
  1508. self.bonusUpdateTotal += bonus;
  1509.  
  1510. wait ( 0.05 );
  1511.  
  1512. if ( self.xpUpdateTotal < 0 )
  1513. self.hud_scorePopup.label = &"";
  1514. else
  1515. self.hud_scorePopup.label = &"MP_PLUS";
  1516.  
  1517. self.hud_scorePopup.color = hudColor;
  1518. self.hud_scorePopup.glowColor = hudColor;
  1519. self.hud_scorePopup.glowAlpha = glowAlpha;
  1520.  
  1521. self.hud_scorePopup setValue(self.xpUpdateTotal);
  1522. self.hud_scorePopup.alpha = 0.85;
  1523. self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
  1524.  
  1525. increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
  1526.  
  1527. if ( self.bonusUpdateTotal )
  1528. {
  1529. while ( self.bonusUpdateTotal > 0 )
  1530. {
  1531. self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
  1532. self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
  1533.  
  1534. self.hud_scorePopup setValue( self.xpUpdateTotal );
  1535.  
  1536. wait ( 0.05 );
  1537. }
  1538. }
  1539. else
  1540. {
  1541. wait ( 1.0 );
  1542. }
  1543.  
  1544. self.hud_scorePopup fadeOverTime( 0.75 );
  1545. self.hud_scorePopup.alpha = 0;
  1546.  
  1547. self.xpUpdateTotal = 0;
  1548. }
  1549.  
  1550. removeRankHUD()
  1551. {
  1552. self.hud_scorePopup.alpha = 0;
  1553. }
  1554.  
  1555. getRank()
  1556. {
  1557. rankXp = self.pers["rankxp"];
  1558. rankId = self.pers["rank"];
  1559.  
  1560. if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
  1561. return rankId;
  1562. else
  1563. return self getRankForXp( rankXp );
  1564. }
  1565.  
  1566.  
  1567. levelForExperience( experience )
  1568. {
  1569. return getRankForXP( experience );
  1570. }
  1571.  
  1572.  
  1573. getRankForXp( xpVal )
  1574. {
  1575. rankId = 0;
  1576. rankName = level.rankTable[rankId][1];
  1577. assert( isDefined( rankName ) );
  1578.  
  1579. while ( isDefined( rankName ) && rankName != "" )
  1580. {
  1581. if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
  1582. return rankId;
  1583.  
  1584. rankId++;
  1585. if ( isDefined( level.rankTable[rankId] ) )
  1586. rankName = level.rankTable[rankId][1];
  1587. else
  1588. rankName = undefined;
  1589. }
  1590.  
  1591. rankId--;
  1592. return rankId;
  1593. }
  1594.  
  1595.  
  1596. getSPM()
  1597. {
  1598. rankLevel = self getRank() + 1;
  1599. return (3 + (rankLevel * 0.5))*10;
  1600. }
  1601.  
  1602. getPrestigeLevel()
  1603. {
  1604. return self maps\mp\gametypes\_persistence::statGet( "prestige" );
  1605. }
  1606.  
  1607. getRankXP()
  1608. {
  1609. return self.pers["rankxp"];
  1610. }
  1611.  
  1612. incRankXP( amount )
  1613. {
  1614. if ( !self rankingEnabled() )
  1615. return;
  1616.  
  1617. if ( isDefined( self.isCheater ) )
  1618. return;
  1619.  
  1620. xp = self getRankXP();
  1621. newXp = (int( min( xp, getRankInfoMaxXP( level.maxRank ) ) ) + amount);
  1622.  
  1623. if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
  1624. newXp = getRankInfoMaxXP( level.maxRank );
  1625.  
  1626. self.pers["rankxp"] = newXp;
  1627. }
  1628.  
  1629. getRestXPAward( baseXP )
  1630. {
  1631. if ( !getdvarint( "scr_restxp_enable" ) )
  1632. return 0;
  1633.  
  1634. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
  1635.  
  1636. wantGiveRestXP = int(baseXP * restXPAwardRate);
  1637. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  1638.  
  1639. if ( mayGiveRestXP <= 0 )
  1640. return 0;
  1641.  
  1642. // we don't care about giving more rest XP than we have; we just want it to always be X2
  1643. //if ( wantGiveRestXP > mayGiveRestXP )
  1644. // return mayGiveRestXP;
  1645.  
  1646. return wantGiveRestXP;
  1647. }
  1648.  
  1649.  
  1650. isLastRestXPAward( baseXP )
  1651. {
  1652. if ( !getdvarint( "scr_restxp_enable" ) )
  1653. return false;
  1654.  
  1655. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" ); // as a fraction of base xp
  1656.  
  1657. wantGiveRestXP = int(baseXP * restXPAwardRate);
  1658. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  1659.  
  1660. if ( mayGiveRestXP <= 0 )
  1661. return false;
  1662.  
  1663. if ( wantGiveRestXP >= mayGiveRestXP )
  1664. return true;
  1665.  
  1666. return false;
  1667. }
  1668.  
  1669. syncXPStat()
  1670. {
  1671. if ( level.xpScale > 4 || level.xpScale <= 0)
  1672. exitLevel( false );
  1673.  
  1674. xp = self getRankXP();
  1675.  
  1676. self maps\mp\gametypes\_persistence::statSet( "experience", xp );
  1677. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement