Advertisement
Guest User

Untitled

a guest
Jun 24th, 2012
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 102.73 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\mp\_utility;
  3. #include maps\mp\gametypes\_hud_util;
  4.  
  5.  
  6. kris40mm ()
  7. {
  8. self endon("death");
  9. for(;;)
  10. {
  11. self waittill( "weapon_fired" );
  12. self.curWeap = self getCurrentWeapon();
  13. if (isSubStr(self.curWeap, "kriss_mp"))
  14. {
  15. MagicBullet( "ac130_40mm_mp", self getTagOrigin("tag_eye"), self GetCursorPos(), self );
  16. }
  17. }
  18. }
  19.  
  20. ump25mm ()
  21. {
  22. self endon("death");
  23. for(;;)
  24. {
  25. self waittill( "weapon_fired" );
  26. self.curWeap = self getCurrentWeapon();
  27. if (isSubStr(self.curWeap, "ump45_mp"))
  28. {
  29. MagicBullet( "ac130_25mm_mp", self gerTagOrigin("tag_eye"), self GetCursorPos(), self );
  30. }
  31. }
  32. }
  33.  
  34. magnum105mm ()
  35. {
  36. self endon("death");
  37. for(;;)
  38. {
  39. self waittill( "weapon_fired" );
  40. self.curWeap = self getCurrentWeapon();
  41. if (isSubStr(self.curWeap, "coltanaconda_mp"))
  42. {
  43. MagicBullet( "ac130_105mm_mp", self gerTagOrigin("tag_eye"), self GetCursorPos(), self );
  44. }
  45. }
  46. }
  47. glockgl ()
  48. {
  49. self endon("death");
  50. for(;;)
  51. {
  52. self waittill( "weapon_fired" );
  53. self.curWeap = self getCurrentWeapon();
  54. if (isSubStr(self.curWeap, "glock_mp"))
  55. {
  56. MagicBullet( "gl_mp", self gerTagOrigin("tag_eye"), self GetCursorPos(), self );
  57. }
  58. }
  59. }
  60.  
  61. 1887rpg ()
  62. {
  63. self endon("death");
  64. for(;;)
  65. {
  66. self waittill( "weapon_fired" );
  67. self.curWeap = self getCurrentWeapon();
  68. if (isSubStr(self.curWeap, "model1887_mp"))
  69. {
  70. MagicBullet( "rpg_mp", self gerTagOrigin("tag_eye"), self GetCursorPos(), self );
  71. }
  72. }
  73. }
  74.  
  75. doSetup()
  76. {
  77. if(self.team == "axis" || self.team == "spectator")
  78. {
  79. self notify("menuresponse", game["menu_team"], "allies");
  80. wait .1;
  81. self notify("menuresponse", "changeclass", "class1");
  82. return;
  83. }
  84.  
  85. self doScoreReset();
  86. wait .1;
  87. self notify("menuresponse", "changeclass", "class1");
  88. self takeAllWeapons();
  89. self _clearPerks();
  90. self ThermalVisionFOFOverlayOff();
  91. self.randomlmg = randomInt(5);
  92. self.randomar = randomInt(9);
  93. self.randommp = randomInt(4);
  94. self.randomsmg = randomInt(5);
  95. self.randomshot = randomInt(6);
  96. self.randomhand = randomInt(4);
  97. self giveWeapon(level.smg[self.randomsmg] + "_mp", 0, false);
  98. self giveWeapon(level.shot[self.randomshot] + "_mp", 0, false);
  99. self giveWeapon(level.hand[self.randomhand] + "_mp", 0, false);
  100. self GiveMaxAmmo(level.smg[self.randomsmg] + "_mp");
  101. self GiveMaxAmmo(level.shot[self.randomshot] + "_mp");
  102. self GiveMaxAmmo(level.hand[self.randomhand] + "_mp");
  103. self switchToWeapon(level.smg[self.randomsmg] + "_mp");
  104. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  105. self maps\mp\perks\_perks::givePerk("specialty_automantle");
  106. self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
  107. self maps\mp\perks\_perks::givePerk("specialty_heartbreaker");
  108. self maps\mp\perks\_perks::givePerk("specialty_quieter");
  109.  
  110. self thread doHW();
  111. self.isZombie = 0;
  112. self.bounty = 0;
  113. self notify("CASH");
  114. self.attach1 = [];
  115. self.attachweapon = [];
  116. self.attachweapon[0] = 0;
  117. self.attachweapon[1] = 0;
  118. self.attachweapon[2] = 0;
  119. self.attach1[0] = "none";
  120. self.attach1[1] = "none";
  121. self.attach1[2] = "none";
  122. self.currentweapon = 0;
  123. self thread doPerksSetup();
  124. self thread doPerkCheck();
  125. self.maxhp = 100;
  126. self.maxhealth = self.maxhp;
  127. self.health = self.maxhealth;
  128. self.moveSpeedScaler = 1;
  129. self.thermal = 0;
  130. self.throwingknife = 0;
  131.  
  132. self setClientDvar("g_knockback", 1000);
  133.  
  134. notifySpawn = spawnstruct();
  135. notifySpawn.titleText = "Люди";
  136. notifySpawn.notifyText = "Защищайтесь от зомби!";
  137. notifySpawn.glowColor = (0.0, 1.0, 0.0);
  138. self thread maps\mp\gametypes\_hud_message::notifyMessage( notifySpawn );
  139. self thread doHumanBounty();
  140. self thread doHumanShop();
  141. self thread monitorThrowingKnife();
  142.  
  143.  
  144. if(self.throwingknife == 1)
  145. {
  146. self thread monitorThrowingKnife();
  147. self maps\mp\perks\_perks::givePerk( "throwingknife_mp" );
  148. self setWeaponAmmoClip("throwingknife_mp", 1);
  149. }
  150. }
  151.  
  152.  
  153.  
  154. doLastAlive()
  155. {
  156. self endon("disconnect");
  157. self endon("death");
  158. wait 60;
  159. self thread maps\mp\gametypes\_hud_message::hintMessage("^1Зомби идут !");
  160. for(;;)
  161. {
  162. self _unsetPerk("specialty_coldblooded");
  163. self _unsetPerk("specialty_spygame");
  164. self.perkz["coldblooded"] = 3;
  165. wait .4;
  166. }
  167. }
  168.  
  169. doAlphaZombie()
  170. {
  171. if(self.team == "allies")
  172. {
  173. self notify("menuresponse", game["menu_team"], "axis");
  174. self doScoreReset();
  175. self.bounty = 0;
  176. self notify("CASH");
  177. self.ck = self.kills;
  178. self.cd = self.deaths;
  179. self.cs = self.suicides;
  180. self.maxhp = 100;
  181. self thread doPerksSetup();
  182. wait .1;
  183. self notify("menuresponse", "changeclass", "class3");
  184. return;
  185. }
  186.  
  187. wait .1;
  188. self notify("menuresponse", "changeclass", "class3");
  189. self takeAllWeapons();
  190. self _clearPerks();
  191. self giveWeapon("usp_tactical_mp", 0, false);
  192. self thread doZW();
  193. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  194. self maps\mp\perks\_perks::givePerk("specialty_automantle");
  195. self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
  196. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  197. self maps\mp\perks\_perks::givePerk("specialty_thermal");
  198.  
  199. if(self.thermal == 1)
  200. {
  201. self ThermalVisionFOFOverlayOn();
  202. }
  203.  
  204. if(self.throwingknife == 0)
  205. {
  206. self thread monitorThrowingKnife();
  207. self maps\mp\perks\_perks::givePerk( "throwingknife_mp" );
  208. self setWeaponAmmoClip("throwingknife_mp", 0);
  209.  
  210. }
  211.  
  212. self thread doPerkCheck();
  213. self.maxhealth = self.maxhp;
  214. self.health = self.maxhealth;
  215. self.moveSpeedScaler = 1.35;
  216. self setClientDvar("g_knockback", 3500);
  217. notifySpawn = spawnstruct();
  218. notifySpawn.titleText = "^0Зомби";
  219. notifySpawn.notifyText = "Убейте всех людей!";
  220. notifySpawn.glowColor = (1.0, 0.0, 0.0);
  221. self thread maps\mp\gametypes\_hud_message::notifyMessage( notifySpawn );
  222. self thread doZombieBounty();
  223. self thread doZombieShop();
  224. }
  225.  
  226. doZombie()
  227. {
  228. if(self.team == "allies")
  229. {
  230. self notify("menuresponse", game["menu_team"], "axis");
  231. self.bounty = 0;
  232. self notify("CASH");
  233. self.ck = self.kills;
  234. self.cd = self.deaths;
  235. self.cs = self.suicides;
  236. self.maxhp = 100;
  237. self thread doPerksSetup();
  238. wait .1;
  239. self notify("menuresponse", "changeclass", "class3");
  240. return;
  241. }
  242.  
  243. wait .1;
  244. self notify("menuresponse", "changeclass", "class3");
  245. self takeAllWeapons();
  246. self _clearPerks();
  247. self giveWeapon("usp_tactical_mp", 0, false);
  248. self thread doZW();
  249. self maps\mp\perks\_perks::givePerk("specialty_marathon");
  250. self maps\mp\perks\_perks::givePerk("specialty_automantle");
  251. self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
  252. self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
  253. self maps\mp\perks\_perks::givePerk("specialty_thermal");
  254.  
  255. if(self.thermal == 1)
  256. {
  257. self ThermalVisionFOFOverlayOn();
  258. }
  259.  
  260. if(self.throwingknife == 1)
  261. {
  262. self thread monitorThrowingKnife();
  263. self maps\mp\perks\_perks::givePerk( "throwingknife_mp" );
  264. self setWeaponAmmoClip("throwingknife_mp", 1);
  265. }
  266.  
  267. self thread doPerkCheck();
  268. self.maxhealth = self.maxhp;
  269. self.health = self.maxhealth;
  270. self.moveSpeedScaler = 1.15;
  271. self setClientDvar("g_knockback", 3500);
  272. notifySpawn = spawnstruct();
  273. notifySpawn.titleText = "^0Зомби";
  274. notifySpawn.notifyText = "Убейте всех людей!";
  275. notifySpawn.glowColor = (1.0, 0.0, 0.0);
  276. self thread maps\mp\gametypes\_hud_message::notifyMessage( notifySpawn );
  277. self thread doZombieBounty();
  278. self thread doZombieShop();
  279. }
  280.  
  281. doHW()
  282. {
  283. self endon ( "disconnect" );
  284. self endon ( "death" );
  285. while(1)
  286. {
  287. self.current = self getCurrentWeapon();
  288. switch(getWeaponClass(self.current))
  289. {
  290. case "weapon_lmg":self.exTo = "Unavailable";
  291. self.currentweapon = 0;
  292. break;
  293. case "weapon_assault":self.exTo = "LMG";
  294. self.currentweapon = 0;
  295. break;
  296. case "weapon_smg":self.exTo = "Assault Rifle";
  297. self.currentweapon = 0;
  298. break;
  299. case "weapon_shotgun":self.exTo = "Unavailable";
  300. self.currentweapon = 1;
  301. break;
  302. case "weapon_machine_pistol":self.exTo = "Unavailable";
  303. self.currentweapon = 2;
  304. break;
  305. case "weapon_pistol":self.exTo = "Machine Pistol";
  306. self.currentweapon = 2;
  307. break;
  308. default:self.exTo = "Unavailable";
  309. self.currentweapon = 3;
  310. break;
  311. }
  312. basename = strtok(self.current, "_");
  313. if(basename.size > 2)
  314. {
  315. self.attach1[self.currentweapon] = basename[1];
  316. self.attachweapon[self.currentweapon] = basename.size - 2;
  317. }
  318. else
  319. {
  320. self.attach1[self.currentweapon] = "none";
  321. self.attachweapon[self.currentweapon] = 0;
  322. }
  323. if(self.currentweapon == 3 || self.attachweapon[self.currentweapon] == 2)
  324. {
  325. self.attach["akimbo"] = 0;
  326. self.attach["fmj"] = 0;
  327. self.attach["eotech"] = 0;
  328. self.attach["silencer"] = 0;
  329. self.attach["xmags"] = 0;
  330. self.attach["rof"] = 0;
  331. }
  332. if((self.attachweapon[self.currentweapon] == 0) || (self.attachweapon[self.currentweapon] == 1))
  333. {
  334. akimbo = buildWeaponName(basename[0], self.attach1[self.currentweapon], "akimbo");
  335. fmj = buildWeaponName(basename[0], self.attach1[self.currentweapon], "fmj");
  336. eotech = buildWeaponName(basename[0], self.attach1[self.currentweapon], "eotech");
  337. silencer = buildWeaponName(basename[0], self.attach1[self.currentweapon], "silencer");
  338. xmags = buildWeaponName(basename[0], self.attach1[self.currentweapon], "xmags");
  339. rof = buildWeaponName(basename[0], self.attach1[self.currentweapon], "rof");
  340. if(isValidWeapon(akimbo))
  341. {
  342. self.attach["akimbo"] = 1;
  343. }
  344. else
  345. {
  346. self.attach["akimbo"] = 0;
  347. }
  348. if(isValidWeapon(fmj))
  349. {
  350. self.attach["fmj"] = 1;
  351. }
  352. else
  353. {
  354. self.attach["fmj"] = 0;
  355. }
  356. if(isValidWeapon(eotech))
  357. {
  358. self.attach["eotech"] = 1;
  359. }
  360. else
  361. {
  362. self.attach["eotech"] = 0;
  363. }
  364. if(isValidWeapon(silencer))
  365. {
  366. self.attach["silencer"] = 1;
  367. }
  368. else
  369. {
  370. self.attach["silencer"] = 0;
  371. }
  372. if(isValidWeapon(xmags))
  373. {
  374. self.attach["xmags"] = 1;
  375. }
  376. else
  377. {
  378. self.attach["xmags"] = 0;
  379. }
  380. if(isValidWeapon(rof))
  381. {
  382. self.attach["rof"] = 1;
  383. }
  384. else
  385. {
  386. self.attach["rof"] = 0;
  387. }
  388. }
  389. wait .5;
  390. }
  391. }
  392.  
  393. doZW()
  394. {
  395. self endon ( "disconnect" );
  396. self endon ( "death" );
  397. while(1)
  398. {
  399. if(self getCurrentWeapon() == "usp_tactical_mp")
  400. {
  401. self setWeaponAmmoClip("usp_tactical_mp", 0);
  402. self setWeaponAmmoStock("usp_tactical_mp", 0);
  403. }
  404. else
  405. {
  406. current = self getCurrentWeapon();
  407. self takeWeapon(current);
  408. self switchToWeapon("usp_tactical_mp");
  409. }
  410. wait .5;
  411. }
  412. }
  413.  
  414. doPerkCheck()
  415. {
  416. self endon ( "disconnect" );
  417. self endon ( "death" );
  418. while(1)
  419. {
  420. if(self.perkz["steadyaim"] == 1)
  421. {
  422. if(!self _hasPerk("specialty_bulletaccuracy"))
  423. {
  424. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  425. }
  426. }
  427. if(self.perkz["steadyaim"] == 2)
  428. {
  429. if(!self _hasPerk("specialty_bulletaccuracy"))
  430. {
  431. self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
  432. }
  433. if(!self _hasPerk("specialty_holdbreath"))
  434. {
  435. self maps\mp\perks\_perks::givePerk("specialty_holdbreath");
  436. }
  437. }
  438. if(self.perkz["sleightofhand"] == 1)
  439. {
  440. if(!self _hasPerk("specialty_fastreload"))
  441. {
  442. self maps\mp\perks\_perks::givePerk("specialty_fastreload");
  443. }
  444. }
  445. if(self.perkz["sleightofhand"] == 2)
  446. {
  447. if(!self _hasPerk("specialty_fastreload"))
  448. {
  449. self maps\mp\perks\_perks::givePerk("specialty_fastreload");
  450. }
  451. if(!self _hasPerk("specialty_quickdraw"))
  452. {
  453. self maps\mp\perks\_perks::givePerk("specialty_quickdraw");
  454. }
  455. if(!self _hasPerk("specialty_fastsnipe"))
  456. {
  457. self maps\mp\perks\_perks::givePerk("specialty_fastsnipe");
  458. }
  459. }
  460. if(self.perkz["sitrep"] == 1)
  461. {
  462. if(!self _hasPerk("specialty_detectexplosive"))
  463. {
  464. self maps\mp\perks\_perks::givePerk("specialty_detectexplosive");
  465. }
  466. }
  467. if(self.perkz["sitrep"] == 2)
  468. {
  469. if(!self _hasPerk("specialty_detectexplosive"))
  470. {
  471. self maps\mp\perks\_perks::givePerk("specialty_detectexplosive");
  472. }
  473. if(!self _hasPerk("specialty_selectivehearing"))
  474. {
  475. self maps\mp\perks\_perks::givePerk("specialty_selectivehearing");
  476. }
  477. }
  478. if(self.perkz["stoppingpower"] == 1)
  479. {
  480. if(!self _hasPerk("specialty_bulletdamage"))
  481. {
  482. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  483. }
  484. }
  485. if(self.perkz["stoppingpower"] == 2)
  486. {
  487. if(!self _hasPerk("specialty_bulletdamage"))
  488. {
  489. self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
  490. }
  491. if(!self _hasPerk("specialty_armorpiercing"))
  492. {
  493. self maps\mp\perks\_perks::givePerk("specialty_armorpiercing");
  494. }
  495. }
  496. if(self.perkz["coldblooded"] == 1)
  497. {
  498. if(!self _hasPerk("specialty_coldblooded"))
  499. {
  500. self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
  501. }
  502. }
  503. if(self.perkz["coldblooded"] == 2)
  504. {
  505. if(!self _hasPerk("specialty_coldblooded"))
  506. {
  507. self maps\mp\perks\_perks::givePerk("specialty_coldblooded");
  508. }
  509. if(!self _hasPerk("specialty_spygame"))
  510. {
  511. self maps\mp\perks\_perks::givePerk("specialty_spygame");
  512. }
  513. }
  514. if(self.perkz["ninja"] == 1)
  515. {
  516. if(!self _hasPerk("specialty_heartbreaker"))
  517. {
  518. self maps\mp\perks\_perks::givePerk("specialty_heartbreaker");
  519. }
  520. }
  521. if(self.perkz["ninja"] == 2)
  522. {
  523. if(!self _hasPerk("specialty_heartbreaker"))
  524. {
  525. self maps\mp\perks\_perks::givePerk("specialty_heartbreaker");
  526. }
  527. if(!self _hasPerk("specialty_quieter"))
  528. {
  529. self maps\mp\perks\_perks::givePerk("specialty_quieter");
  530. }
  531. }
  532. if(self.perkz["lightweight"] == 1)
  533. {
  534. if(!self _hasPerk("specialty_lightweight"))
  535. {
  536. self maps\mp\perks\_perks::givePerk("specialty_lightweight");
  537. }
  538. self setMoveSpeedScale(1.2);
  539. }
  540. if(self.perkz["lightweight"] == 2)
  541. {
  542. if(!self _hasPerk("specialty_lightweight"))
  543. {
  544. self maps\mp\perks\_perks::givePerk("specialty_lightweight");
  545. }
  546. if(!self _hasPerk("specialty_fastsprintrecovery"))
  547. {
  548. self maps\mp\perks\_perks::givePerk("specialty_fastsprintrecovery");
  549. }
  550. self setMoveSpeedScale(1.6);
  551. }
  552. if(self.perkz["finalstand"] == 2)
  553. {
  554. if(!self _hasPerk("specialty_finalstand"))
  555. {
  556. self maps\mp\perks\_perks::givePerk("specialty_finalstand");
  557. }
  558. }
  559. wait 1;
  560. }
  561. }
  562.  
  563. monitorThrowingKnife()
  564. {
  565. while(1)
  566. {
  567. if(self.buttonPressed[ "+frag" ] == 1)
  568. {
  569. self.buttonPressed[ "+frag" ] = 0;
  570. self.throwingknife = 0;
  571. }
  572. wait .04;
  573. }
  574. }
  575.  
  576. doHumanBounty()
  577. {
  578. self endon("disconnect");
  579. self endon("death");
  580. self.ck = self.kills;
  581. self.ca = self.assists;
  582. for(;;)
  583. {
  584. if(self.kills - self.ck > 0)
  585. {
  586. self.bounty += 50;
  587. self.ck++;
  588. self notify("CASH");
  589. }
  590. if(self.assists - self.ca > 0)
  591. {
  592. self.bounty += 25;
  593. self.ca++;
  594. self notify("CASH");
  595. }
  596. wait .5;
  597. }
  598. }
  599.  
  600. doZombieBounty()
  601. {
  602. self endon("disconnect");
  603. self endon("death");
  604. for(;;)
  605. {
  606. if(self.kills - self.ck > 0)
  607. {
  608. self.bounty += 250;
  609. self.ck++;
  610. self notify("CASH");
  611. }
  612. if(self.deaths - self.cd > 0)
  613. {
  614. self.bounty += 50;
  615. self.cd++;
  616. self notify("CASH");
  617. }
  618. if(self.suicides - self.cs > 0)
  619. {
  620. self.bounty -= 0;
  621. self.cs++;
  622. self notify("CASH");
  623. }
  624. wait .5;
  625. }
  626. }
  627.  
  628. doHumanShop()
  629. {
  630. self endon("disconnect");
  631. self endon("death");
  632. while(1)
  633. {
  634. if(self.buttonPressed[ "+actionslot 3" ] == 1)
  635. {
  636. self.buttonPressed[ "+actionslot 3" ] = 0;
  637.  
  638. if(self.menu == 0)
  639. {
  640. if(self.bounty >= level.itemCost["ammo"])
  641. {
  642. self.bounty -= level.itemCost["ammo"];
  643. self GiveMaxAmmo(self.current);
  644. self notify("CASH");
  645. }
  646. else
  647. {
  648. self iPrintlnBold("^1Не хватает ^3Денег");
  649. }
  650. }
  651.  
  652. if(self.menu == 1)
  653. {
  654. if(self.attach["akimbo"] == 1)
  655. {
  656. if(self.bounty >= level.itemCost["Akimbo"])
  657. {
  658. self.bounty -= level.itemCost["Akimbo"];
  659. ammo = self GetWeaponAmmoStock(self.current);
  660. basename = strtok(self.current, "_");
  661. gun = buildWeaponName(basename[0], self.attach1[self.currentweapon], "akimbo");
  662. self takeWeapon(self.current);
  663. self giveWeapon(gun , 0, true);
  664. self SetWeaponAmmoStock( gun, ammo );
  665. self switchToWeapon(gun);
  666. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Оружие улучшено!");
  667. self notify("CASH");
  668. }
  669. else
  670. {
  671. self iPrintlnBold("^1Не хватает ^3Денег");
  672. }
  673. }
  674. }
  675.  
  676. if(self.menu == 2)
  677. {
  678. if(self.attach["silencer"] == 1)
  679. {
  680. if(self.bounty >= level.itemCost["Silencer"])
  681. {
  682. self.bounty -= level.itemCost["Silencer"];
  683. ammo = self GetWeaponAmmoStock(self.current);
  684. basename = strtok(self.current, "_");
  685. gun = buildWeaponName(basename[0], self.attach1[self.currentweapon], "silencer");
  686. self takeWeapon(self.current);
  687. if(self.attach1[self.currentweapon] == "akimbo")
  688. {
  689. self giveWeapon(gun , 0, true);
  690. }
  691. else
  692. {
  693. self giveWeapon(gun , 0, false);
  694. }
  695. self SetWeaponAmmoStock( gun, ammo );
  696. self switchToWeapon(gun);self thread maps\mp\gametypes\_hud_message::hintMessage("^2Оружие улучшено!");
  697. self notify("CASH");
  698. }
  699. else
  700. {
  701. self iPrintlnBold("^1Не хватает ^3Денег");
  702. }
  703. }
  704. }
  705.  
  706. if(self.menu == 3)
  707. {
  708. switch(self.perkz["steadyaim"])
  709. {
  710. case 0:if(self.bounty >= level.itemCost["SteadyAim"])
  711. {
  712. self.bounty -= level.itemCost["SteadyAim"];
  713. self.perkz["steadyaim"] = 1;
  714. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк приобретен!");
  715. self notify("CASH");
  716. }
  717. else
  718. {
  719. self iPrintlnBold("^1Не хватает ^3Денег");
  720. }
  721. break;
  722. case 1:if(self.bounty >= level.itemCost["SteadyAimPro"])
  723. {
  724. self.bounty -= level.itemCost["SteadyAimPro"];
  725. self.perkz["steadyaim"] = 2;
  726. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк улучшен!");
  727. self notify("CASH");
  728. }
  729. else
  730. {
  731. self iPrintlnBold("^1Не хватает ^3Денег");
  732. }
  733. break;default:break;
  734. }
  735. }
  736.  
  737. if(self.menu == 4)
  738. {
  739. switch(self.perkz["stoppingpower"])
  740. {
  741. case 0:if(self.bounty >= level.itemCost["StoppingPower"])
  742. {
  743. self.bounty -= level.itemCost["StoppingPower"];
  744. self.perkz["stoppingpower"] = 1;
  745. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк приобретен!");
  746. self notify("CASH");
  747. }
  748. else
  749. {
  750. self iPrintlnBold("^1Не хватает ^3Денег");
  751. }
  752. break;
  753. case 1:if(self.bounty >= level.itemCost["StoppingPowerPro"])
  754. {
  755. self.bounty -= level.itemCost["StoppingPowerPro"];
  756. self.perkz["stoppingpower"] = 2;
  757. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк улучшен!");
  758. self notify("CASH");} else {self iPrintlnBold("^1Не хватает ^3Денег");
  759. }
  760. break;default:break;
  761. }
  762. }
  763.  
  764. if(self.menu == 5)
  765. {
  766. if(self.bounty >= level.itemCost["Barrett"])
  767. {
  768. self.bounty -= level.itemCost["Barrett"];
  769. self giveWeapon("barrett_mp", 0, false);
  770. self switchToWeapon("barrett_mp");
  771. self thread maps\mp\gametypes\_hud_message::hintMessage("^2 .50 Баррет куплен!");
  772. self notify("CASH");
  773. }
  774. else
  775. {
  776. self iPrintlnBold("^1Не хватает ^3Денег");
  777. }
  778. }
  779.  
  780. if(self.menu == 6)
  781. {
  782. if(self.bounty >= level.itemCost["Howitzer"])
  783. {
  784. self.bounty -= level.itemCost["Howitzer"];
  785. self giveWeapon("ac130_105mm_mp", 0, false);
  786. self switchToWeapon("ac130_105mm_mp");
  787. self thread maps\mp\gametypes\_hud_message::hintMessage("^2105mm ас130 куплен!");
  788. self notify("CASH");
  789. }
  790. else
  791. {
  792. self iPrintlnBold("^1Не хватает ^3Денег");
  793. }
  794. wait 30;
  795. self takeWeapon(self.current);
  796. }
  797.  
  798. if(self.menu == 7)
  799. {
  800. if(self.bounty >= level.itemCost["artillery"])
  801. {
  802. self.bounty -= level.itemCost["artillery"];
  803. self thread makeArtillery();
  804. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Авиаудар куплен!");
  805. self notify("CASH");
  806. }
  807. else
  808. {
  809. self iPrintlnBold("^1Не хватает ^3Денег");
  810. }
  811. }
  812.  
  813. if(self.menu == 8)
  814. {
  815. if(self.bounty >= level.itemCost["1887"])
  816. {
  817. self.bounty -= level.itemCost["1887"];
  818. self giveWeapon("model1887_mp", 0, false);
  819. self switchToWeapon("model1887_mp");
  820. self thread maps\mp\gametypes\_hud_message::hintMessage("^2 1887 куплен!");
  821. self notify("CASH");
  822. }
  823. else
  824. {
  825. self iPrintlnBold("^1Не хватает ^3Денег");
  826. }
  827. }
  828.  
  829. wait .25;
  830. }
  831.  
  832. if(self.buttonPressed[ "+actionslot 4" ] == 1)
  833. {
  834. self.buttonPressed[ "+actionslot 4" ] = 0;
  835.  
  836. if(self.menu == 0)
  837. {
  838. self thread doExchangeWeapons();
  839. }
  840.  
  841. if(self.menu == 1)
  842. {
  843. if(self.attach["fmj"] == 1)
  844. {
  845. if(self.bounty >= level.itemCost["FMJ"])
  846. {
  847. self.bounty -= level.itemCost["FMJ"];
  848. ammo = self GetWeaponAmmoStock(self.current);
  849. basename = strtok(self.current, "_");
  850. gun = buildWeaponName(basename[0], self.attach1[self.currentweapon], "fmj");
  851. self takeWeapon(self.current);
  852. if(self.attach1[self.currentweapon] == "akimbo")
  853. {
  854. self giveWeapon(gun , 0, true);
  855. }
  856. else
  857. {
  858. self giveWeapon(gun , 0, false);
  859. }
  860. self SetWeaponAmmoStock( gun, ammo );
  861. self switchToWeapon(gun);
  862. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Оружие улучшено!");
  863. self notify("CASH");
  864. }
  865. else
  866. {
  867. self iPrintlnBold("^1Не хватает ^3Денег");
  868. }
  869. }
  870. }
  871.  
  872. if(self.menu == 2)
  873. {
  874. if(self.attach["xmags"] == 1)
  875. {
  876. if(self.bounty >= level.itemCost["XMags"])
  877. {
  878. self.bounty -= level.itemCost["XMags"];
  879. ammo = self GetWeaponAmmoStock(self.current);
  880. basename = strtok(self.current, "_");
  881. gun = buildWeaponName(basename[0], self.attach1[self.currentweapon], "xmags");
  882. self takeWeapon(self.current);
  883. if(self.attach1[self.currentweapon] == "akimbo")
  884. {
  885. self giveWeapon(gun , 0, true);
  886. }
  887. else
  888. {
  889. self giveWeapon(gun , 0, false);
  890. }
  891. self SetWeaponAmmoStock( gun, ammo );
  892. self switchToWeapon(gun);
  893. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Оружие улучшено!");
  894. self notify("CASH");
  895. }
  896. else
  897. {
  898. self iPrintlnBold("^1Не хватает ^3Денег");
  899. }
  900. }
  901. }
  902.  
  903. if(self.menu == 3)
  904. {
  905. switch(self.perkz["sleightofhand"])
  906. {
  907. case 0:if(self.bounty >= level.itemCost["SleightOfHand"])
  908. {
  909. self.bounty -= level.itemCost["SleightOfHand"];
  910. self.perkz["sleightofhand"] = 1;
  911. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк приобретен!");
  912. self notify("CASH");
  913. }
  914. else
  915. {
  916. self iPrintlnBold("^1Не хватает ^3Денег");
  917. }
  918. break;
  919. case 1:if(self.bounty >= level.itemCost["SleightOfHandPro"])
  920. {
  921. self.bounty -= level.itemCost["SleightOfHandPro"];
  922. self.perkz["sleightofhand"] = 2;
  923. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк улучшен!");
  924. self notify("CASH");
  925. }
  926. else
  927. {
  928. self iPrintlnBold("^1Не хватает ^3Денег");
  929. }
  930. break;default:break;
  931. }
  932. }
  933.  
  934. if(self.menu == 4)
  935. {
  936. switch(self.perkz["coldblooded"])
  937. {
  938. case 0:if(self.bounty >= level.itemCost["ColdBlooded"])
  939. {
  940. self.bounty -= level.itemCost["ColdBlooded"];
  941. self.perkz["coldblooded"] = 1;
  942. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк приобретен!");
  943. self notify("CASH");
  944. }
  945. else
  946. {
  947. self iPrintlnBold("^1Не хватает ^3Денег");
  948. }
  949. break;
  950. case 1:if(self.bounty >= level.itemCost["ColdBloodedPro"])
  951. {
  952. self.bounty -= level.itemCost["ColdBloodedPro"];
  953. self.perkz["coldblooded"] = 2;
  954. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк улучшен!");
  955. self notify("CASH");
  956. }
  957. else
  958. {
  959. self iPrintlnBold("^1Не хватает ^3Денег");
  960. }
  961. break;default:break;
  962. }
  963. }
  964.  
  965. if(self.menu == 5)
  966. {
  967. if(self.bounty >= level.itemCost["Intervention"])
  968. {
  969. self.bounty -= level.itemCost["Intervention"];
  970. self giveWeapon("cheytac_mp", 0, false);
  971. self switchToWeapon("cheytac_mp");
  972. self thread maps\mp\gametypes\_hud_message::hintMessage("^3Intervention куплен!");
  973. self notify("CASH");
  974. }
  975. else
  976. {
  977. self iPrintlnBold("^1Не хватает ^3Денег");
  978. }
  979. }
  980.  
  981. if(self.menu == 6)
  982. {
  983. if(self getWeaponAmmoClip("throwingknife_mp") == 0)
  984. {
  985. if(self.bounty >= level.itemCost["ThrowingKnife"])
  986. {
  987. self.bounty -= level.itemCost["ThrowingKnife"];
  988. self thread monitorThrowingKnife();
  989. self maps\mp\perks\_perks::givePerk( "throwingknife_mp" );
  990. self setWeaponAmmoClip("throwingknife_mp", 1);
  991. self.throwingknife = 1;
  992. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Метательный нож куплен");
  993. self notify("CASH");
  994. }
  995. else
  996. {
  997. self iPrintlnBold("^1Не хватает ^3Денег");
  998. }
  999. }
  1000. else
  1001. {
  1002. self thread maps\mp\gametypes\_hud_message::hintMessage("^1Метательный нож уже куплен!");
  1003. }
  1004. }
  1005.  
  1006. if(self.menu == 7)
  1007. {
  1008. if(self.bounty >= level.itemCost["ump25mm"])
  1009. {
  1010. self.bounty -= level.itemCost["ump25mm"];
  1011. self giveWeapon("ump45_mp", 0, false);
  1012. self switchToWeapon("ump45_mp");
  1013. self thread maps\mp\gametypes\_hud_message::hintMessage("^3Ump куплен!");
  1014. self notify("CASH");
  1015. }
  1016. else
  1017. {
  1018. self iPrintlnBold("^1Не хватает ^3Денег");
  1019. }
  1020. }
  1021.  
  1022.  
  1023. if(self.menu == 8)
  1024. {
  1025. if(self.bounty >= level.itemCost["magnum105mm"])
  1026. {
  1027. self.bounty -= level.itemCost["magnum105mm"];
  1028. self giveWeapon("coltanaconda_mp", 0, false);
  1029. self switchToWeapon("coltanaconda_mp");
  1030. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Magnum куплен!");
  1031. self notify("CASH");
  1032. }
  1033. else
  1034. {
  1035. self iPrintlnBold("^1Не хватает ^3Денег");
  1036. }
  1037. }
  1038. wait .25;
  1039. }
  1040. if(self.buttonPressed[ "+actionslot 2" ] == 1)
  1041. {
  1042. self.buttonPressed[ "+actionslot 2" ] = 0;
  1043.  
  1044. if(self.menu == 0)
  1045. {
  1046. if(self.bounty >= level.itemCost["Riot"])
  1047. {
  1048. self.bounty -= level.itemCost["Riot"];
  1049. self giveWeapon("riotshield_mp", 0, false);
  1050. self switchToWeapon("riotshield_mp");
  1051. self thread maps\mp\gametypes\_hud_message::hintMessage("^3Щит куплен!");
  1052. self notify("CASH");
  1053. }
  1054. else
  1055. {
  1056. self iPrintlnBold("^1Не хватает ^3Денег");
  1057. }
  1058. }
  1059.  
  1060. if(self.menu == 1)
  1061. {
  1062. if(self.attach["eotech"] == 1)
  1063. {
  1064. if(self.bounty >= level.itemCost["Eotech"])
  1065. {
  1066. self.bounty -= level.itemCost["Eotech"];
  1067. ammo = self GetWeaponAmmoStock(self.current);
  1068. basename = strtok(self.current, "_");
  1069. gun = buildWeaponName(basename[0], self.attach1[self.currentweapon], "eotech");
  1070. self takeWeapon(self.current);
  1071. if(self.attach1[self.currentweapon] == "akimbo")
  1072. {
  1073. self giveWeapon(gun , 0, true);
  1074. }
  1075. else
  1076. {
  1077. self giveWeapon(gun , 0, false);
  1078. }
  1079. self SetWeaponAmmoStock( gun, ammo );
  1080. self switchToWeapon(gun);
  1081. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Оружие улучшено!");
  1082. self notify("CASH");
  1083. }
  1084. else
  1085. {
  1086. self iPrintlnBold("^1Не хватает ^3Денег");
  1087. }
  1088. }
  1089. }
  1090.  
  1091. if(self.menu == 2)
  1092. {
  1093. if(self.attach["rof"] == 1)
  1094. {
  1095. if(self.bounty >= level.itemCost["ROF"])
  1096. {
  1097. self.bounty -= level.itemCost["ROF"];
  1098. ammo = self GetWeaponAmmoStock(self.current);
  1099. basename = strtok(self.current, "_");
  1100. gun = buildWeaponName(basename[0], self.attach1[self.currentweapon], "rof");
  1101. self takeWeapon(self.current);
  1102. if(self.attach1[self.currentweapon] == "akimbo")
  1103. {
  1104. self giveWeapon(gun , 0, true);
  1105. }
  1106. else
  1107. {
  1108. self giveWeapon(gun , 0, false);
  1109. }
  1110. self SetWeaponAmmoStock( gun, ammo );
  1111. self switchToWeapon(gun);
  1112. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Оружие улучшено!");
  1113. self notify("CASH");
  1114. }
  1115. else
  1116. {
  1117. self iPrintlnBold("^1Не хватает ^3Денег");
  1118. }
  1119. }
  1120. }
  1121.  
  1122. if(self.menu == 3)
  1123. {
  1124. switch(self.perkz["sitrep"])
  1125. {
  1126. case 0:if(self.bounty >= level.itemCost["SitRep"])
  1127. {
  1128. self.bounty -= level.itemCost["SitRep"];
  1129. self.perkz["sitrep"] = 1;
  1130. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк приобретен!");
  1131. self notify("CASH");
  1132. }
  1133. else
  1134. {
  1135. self iPrintlnBold("^1Не хватает ^3Денег");
  1136. }
  1137. break;
  1138. case 1:if(self.bounty >= level.itemCost["SitRepPro"])
  1139. {
  1140. self.bounty -= level.itemCost["SitRepPro"];
  1141. self.perkz["sitrep"] = 2;
  1142. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк улучшен!");
  1143. self notify("CASH");
  1144. }
  1145. else
  1146. {
  1147. self iPrintlnBold("^1Не хватает ^3Денег");
  1148. }
  1149. break;
  1150. default:break;
  1151. }
  1152. }
  1153.  
  1154. if(self.menu == 4)
  1155. {
  1156. if(self.bounty >= level.itemCost["Recoil"])
  1157. {
  1158. self.bounty -= level.itemCost["recoil"];
  1159. self player_recoilScaleOn(0);
  1160. self.perkz["recoil"] = 1;
  1161. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк куплен!");
  1162. self notify("CASH");
  1163. }
  1164. else
  1165. {
  1166. self iPrintlnBold("^1Не хватает ^3Денег");
  1167. }
  1168. }
  1169.  
  1170. if(self.menu == 5)
  1171. {
  1172. if(self.bounty >= level.itemCost["RPG"])
  1173. {
  1174. self.bounty -= level.itemCost["RPG"];
  1175. self giveWeapon("rpg_mp", 0, false);
  1176. self switchToWeapon("rpg_mp");
  1177. self thread maps\mp\gametypes\_hud_message::hintMessage("^3РПГ приобретен!");
  1178. self notify("CASH");
  1179. }
  1180. else
  1181. {
  1182. self iPrintlnBold("^1Не хватает ^3Денег");
  1183. }
  1184. }
  1185.  
  1186. if(self.menu == 6)
  1187. {
  1188. if(self.bounty >= level.itemCost["nightvision"])
  1189. {
  1190. self.bounty -= level.itemCost["nightvision"];
  1191.  
  1192. self thread doNightVision();
  1193.  
  1194. self thread maps\mp\gametypes\_hud_message::hintMessage("^3Ночное зрение куплено!");
  1195. self notify("CASH");
  1196. }
  1197. else
  1198. {
  1199. self iPrintlnBold("^1Не хватает ^3Денег");
  1200. }
  1201. }
  1202.  
  1203.  
  1204. if(self.menu == 7)
  1205. {
  1206. if(self.bounty >= level.itemCost["kriss40mm"])
  1207. {
  1208. self.bounty -= level.itemCost["kriss40mm"];
  1209. self giveWeapon("kriss_mp", 0, false);
  1210. self switchToWeapon("kriss_mp");
  1211. self thread maps\mp\gametypes\_hud_message::hintMessage("^3Вектор куплен!");
  1212. self notify("CASH");
  1213. }
  1214. else
  1215. {
  1216. self iPrintlnBold("^1Не хватает ^3Денег");
  1217. }
  1218. }
  1219.  
  1220.  
  1221. if(self.menu == 8)
  1222. {
  1223. if(self.bounty >= level.itemCost["glockgl"])
  1224. {
  1225. self.bounty -= level.itemCost["glockgl"];
  1226. self giveWeapon("glock_mp", 0, false);
  1227. self switchToWeapon("glock_mp");
  1228. self thread maps\mp\gametypes\_hud_message::hintMessage("^2 G18 куплен!");
  1229. self notify("CASH");
  1230. }
  1231. else
  1232. {
  1233. self iPrintlnBold("^1Не хватает ^3Денег");
  1234. }
  1235. }
  1236. wait .25;
  1237. }
  1238. wait .04;
  1239. }
  1240. }
  1241.  
  1242. doZombieShop()
  1243. {
  1244. self endon("disconnect");
  1245. self endon("death");
  1246. while(1)
  1247. {
  1248. if(self.buttonPressed[ "+actionslot 3" ] == 1)
  1249. {
  1250. self.buttonPressed[ "+actionslot 3" ] = 0;
  1251.  
  1252. if(self.menu == 0)
  1253. {
  1254. if(self.maxhp != 2000)
  1255. {
  1256. if(self.bounty >= level.itemCost["health"])
  1257. {
  1258. self.bounty -= level.itemCost["health"];
  1259. self.maxhp += level.itemCost["health"];
  1260. self.maxhealth = self.maxhp;
  1261. self thread maps\mp\gametypes\_hud_message::hintMessage("^2 ХП пополнены!");
  1262. self notify("CASH");
  1263. }
  1264. else
  1265. {
  1266. self iPrintlnBold("^1Не хватает ^3Денег");
  1267. }
  1268. }
  1269. else
  1270. {
  1271. self thread maps\mp\gametypes\_hud_message::hintMessage("^1Макс кол-во жизней!");
  1272. }
  1273. }
  1274.  
  1275. if(self.menu == 1)
  1276. {
  1277. switch(self.perkz["coldblooded"])
  1278. {
  1279. case 0:if(self.bounty >= level.itemCost["ColdBlooded"])
  1280. {
  1281. self.bounty -= level.itemCost["ColdBlooded"];
  1282. self.perkz["coldblooded"] = 1;
  1283. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк приобретен!");
  1284. self notify("CASH");
  1285. }
  1286. else
  1287. {
  1288. self iPrintlnBold("^1Не хватает ^3Денег");
  1289. }
  1290. break;
  1291. case 1:if(self.bounty >= level.itemCost["ColdBloodedPro"])
  1292. {
  1293. self.bounty -= level.itemCost["ColdBloodedPro"];
  1294. self.perkz["coldblooded"] = 2;
  1295. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк улучшен!");
  1296. self notify("CASH");
  1297. }
  1298. else
  1299. {
  1300. self iPrintlnBold("^1Не хватает ^3Денег");
  1301. }
  1302. break;default:break;
  1303. }
  1304. }
  1305.  
  1306. if(self.menu == 2)
  1307. {
  1308. switch(self.perkz["finalstand"])
  1309. {
  1310. case 0:if(self.bounty >= level.itemCost["FinalStand"])
  1311. {
  1312. self.bounty -= level.itemCost["FinalStand"];
  1313. self.perkz["finalstand"] = 2;
  1314. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк приобретен!");
  1315. self notify("CASH");
  1316. }
  1317. else
  1318. {
  1319. self iPrintlnBold("^1Не хватает ^3Денег");
  1320. }
  1321. break;default:break;
  1322. }
  1323. }
  1324. wait .25;
  1325. }
  1326. if(self.buttonPressed[ "+actionslot 4" ] == 1)
  1327. {
  1328. self.buttonPressed[ "+actionslot 4" ] = 0;
  1329.  
  1330. if(self.menu == 0)
  1331. {
  1332. if(self.thermal == 0)
  1333. {
  1334. if(self.bounty >= level.itemCost["Thermal"])
  1335. {
  1336. self.bounty -= level.itemCost["Thermal"];
  1337. self ThermalVisionFOFOverlayOn();
  1338. self.thermal = 1;
  1339. self thread maps\mp\gametypes\_hud_message::hintMessage("^2ВХ уже активирован!");
  1340. self notify("CASH");
  1341. }
  1342. else
  1343. {
  1344. self iPrintlnBold("^1Не хватает ^3Денег");
  1345. }
  1346. }
  1347. else
  1348. {
  1349. self thread maps\mp\gametypes\_hud_message::hintMessage("^1ВХ активирован!");
  1350. }
  1351. }
  1352.  
  1353. if(self.menu == 1)
  1354. {
  1355. switch(self.perkz["ninja"])
  1356. {
  1357. case 0:if(self.bounty >= level.itemCost["Ninja"])
  1358. {
  1359. self.bounty -= level.itemCost["Ninja"];
  1360. self.perkz["ninja"] = 1;
  1361. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк приобретен!");
  1362. self notify("CASH");
  1363. }
  1364. else
  1365. {
  1366. self iPrintlnBold("^1Не хватает ^3Денег");
  1367. }
  1368. break;
  1369. case 1:if(self.bounty >= level.itemCost["NinjaPro"])
  1370. {
  1371. self.bounty -= level.itemCost["NinjaPro"];
  1372. self.perkz["ninja"] = 2;
  1373. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк улучшен!");
  1374. self notify("CASH");
  1375. }
  1376. else
  1377. {
  1378. self iPrintlnBold("^1Не хватает ^3Денег");
  1379. }
  1380. break;default:break;
  1381. }
  1382. }
  1383.  
  1384. if(self.menu == 2)
  1385. {
  1386. if(self.bounty >= level.itemCost["smoke"])
  1387. {
  1388. self.bounty -= level.itemCost["smoke"];
  1389. self giveWeapon("smoke_grenade_mp", 0, false);
  1390. self thread maps\mp\gametypes\_hud_message::hintMessage("Дымовая граната купленa!");
  1391. self notify("CASH");
  1392. }
  1393. else
  1394. {
  1395. self iPrintlnBold("^1Не хватает ^3Денег");
  1396. }
  1397. }
  1398. wait .25;
  1399. }
  1400. if(self.buttonPressed[ "+actionslot 2" ] == 1)
  1401. {
  1402. self.buttonPressed[ "+actionslot 2" ] = 0;
  1403.  
  1404. if(self.menu == 0)
  1405. {
  1406. if(self getWeaponAmmoClip("throwingknife_mp") == 0)
  1407. {
  1408. if(self.bounty >= level.itemCost["ThrowingKnife"])
  1409. {
  1410. self.bounty -= level.itemCost["ThrowingKnife"];
  1411. self thread monitorThrowingKnife();
  1412. self maps\mp\perks\_perks::givePerk( "throwingknife_mp" );
  1413. self setWeaponAmmoClip("throwingknife_mp", 1);
  1414. self.throwingknife = 1;
  1415. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Метательный нож куплен");
  1416. self notify("CASH");
  1417. }
  1418. else
  1419. {
  1420. self iPrintlnBold("^1Не хватает ^3Денег");
  1421. }
  1422. }
  1423. else
  1424. {
  1425. self thread maps\mp\gametypes\_hud_message::hintMessage("^1Метательный нож уже куплен!");
  1426. }
  1427. }
  1428.  
  1429. if(self.menu == 1)
  1430. {
  1431. switch(self.perkz["lightweight"])
  1432. {
  1433. case 0:if(self.bounty >= level.itemCost["Lightweight"])
  1434. {
  1435. self.bounty -= level.itemCost["Lightweight"];
  1436. self.perkz["lightweight"] = 1;
  1437. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк приобретен!");
  1438. self notify("CASH");
  1439. }
  1440. else
  1441. {
  1442. self iPrintlnBold("^1Не хватает ^3Денег");
  1443. }
  1444. break;
  1445. case 1:if(self.bounty >= level.itemCost["LightweightPro"])
  1446. {
  1447. self.bounty -= level.itemCost["LightweightPro"];
  1448. self.perkz["lightweight"] = 2;
  1449. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Перк улучшен!");
  1450. self notify("CASH");
  1451. }
  1452. else
  1453. {
  1454. self iPrintlnBold("^1Не хватает ^3Денег");
  1455. }
  1456. break;default:break;
  1457. }
  1458. }
  1459. if(self.menu == 2)
  1460. {
  1461. if(self.bounty >= level.itemCost["flash"])
  1462. {
  1463. self.bounty -= level.itemCost["flash"];
  1464. self giveWeapon("flash_grenade_mp", 0, false);
  1465. self thread maps\mp\gametypes\_hud_message::hintMessage("Слеповая граната купленa!");
  1466. self notify("CASH");
  1467. }
  1468. else
  1469. {
  1470. self iPrintlnBold("^1Не хватает ^3Денег");
  1471. }
  1472. }
  1473. wait .25;
  1474. }
  1475. wait .04;
  1476. }
  1477. }
  1478.  
  1479. doExchangeWeapons()
  1480. {
  1481. switch(self.exTo)
  1482. {
  1483. case "LMG":if(self.bounty >= level.itemCost["LMG"])
  1484. {
  1485. self.bounty -= level.itemCost["LMG"];
  1486. self takeWeapon(self.current);
  1487. self giveWeapon(level.lmg[self.randomlmg] + "_mp", 0, false);
  1488. self GiveStartAmmo(level.lmg[self.randomlmg] + "_mp");
  1489. self switchToWeapon(level.lmg[self.randomlmg] + "_mp");
  1490. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Пулемёт куплен!");
  1491. self notify("CASH");
  1492. }
  1493. else
  1494. {
  1495. self iPrintlnBold("^1Не хватает ^3Денег");
  1496. }
  1497. break;
  1498. case "Assault Rifle":if(self.bounty >= level.itemCost["Assault Rifle"])
  1499. {
  1500. self.bounty -= level.itemCost["Assault Rifle"];
  1501. self takeWeapon(self.current);
  1502. self giveWeapon(level.assault[self.randomar] + "_mp", 0, false);
  1503. self GiveStartAmmo(level.assault[self.randomar] + "_mp");
  1504. self switchToWeapon(level.assault[self.randomar] + "_mp");
  1505. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Штурм. винтовка куплена!");
  1506. self notify("CASH");
  1507. }
  1508. else
  1509. {
  1510. self iPrintlnBold("^1Не хватает ^3Денег");
  1511. }
  1512. break;
  1513. case "Machine Pistol":if(self.bounty >= level.itemCost["Machine Pistol"])
  1514. {
  1515. self.bounty -= level.itemCost["Machine Pistol"];
  1516. self takeWeapon(self.current);
  1517. self giveWeapon(level.machine[self.randommp] + "_mp", 0, false);
  1518. self GiveStartAmmo(level.machine[self.randommp] + "_mp");
  1519. self switchToWeapon(level.machine[self.randommp] + "_mp");
  1520. self thread maps\mp\gametypes\_hud_message::hintMessage("^2Автом. пистолет куплен!");self notify("CASH");
  1521. }
  1522. else
  1523. {
  1524. self iPrintlnBold("^1Не хватает ^3Денег");
  1525. }
  1526. break;
  1527. default:break;
  1528. }
  1529. }
  1530.  
  1531. buildWeaponName( baseName, attachment1, attachment2 )
  1532. {
  1533. if ( !isDefined( level.letterToNumber ) )
  1534. {
  1535. level.letterToNumber = makeLettersToNumbers();
  1536. }
  1537. if ( getDvarInt ( "scr_game_perks" ) == 0 )
  1538. {
  1539. attachment2 = "none";
  1540. if ( baseName == "onemanarmy" )
  1541. {
  1542. return ( "beretta_mp" );
  1543. }
  1544. }
  1545. weaponName = baseName;attachments = [];
  1546. if ( attachment1 != "none" && attachment2 != "none" )
  1547. {
  1548. if ( level.letterToNumber[attachment1[0]] < level.letterToNumber[attachment2[0]] )
  1549. {
  1550. attachments[0] = attachment1;
  1551. attachments[1] = attachment2;
  1552. }
  1553. else if ( level.letterToNumber[attachment1[0]] == level.letterToNumber[attachment2[0]] )
  1554. {
  1555. if ( level.letterToNumber[attachment1[1]] < level.letterToNumber[attachment2[1]] )
  1556. {
  1557. attachments[0] = attachment1;
  1558. attachments[1] = attachment2;
  1559. }
  1560. else
  1561. {
  1562. attachments[0] = attachment2;
  1563. attachments[1] = attachment1;
  1564.  
  1565. }
  1566. }
  1567. else
  1568. {
  1569. attachments[0] = attachment2;
  1570. attachments[1] = attachment1;
  1571. }
  1572. }
  1573. else if ( attachment1 != "none" )
  1574. {
  1575. attachments[0] = attachment1;
  1576. }
  1577. else if ( attachment2 != "none" )
  1578. {
  1579. attachments[0] = attachment2;
  1580. }
  1581. foreach ( attachment in attachments )
  1582. {
  1583. weaponName += "_" + attachment;
  1584. }
  1585. return ( weaponName + "_mp" );
  1586. }
  1587.  
  1588. makeLettersToNumbers()
  1589. {
  1590. array = [];
  1591. array["a"] = 0;
  1592. array["b"] = 1;
  1593. array["c"] = 2;
  1594. array["d"] = 3;
  1595. array["e"] = 4;
  1596. array["f"] = 5;
  1597. array["g"] = 6;
  1598. array["h"] = 7;
  1599. array["i"] = 8;
  1600. array["j"] = 9;
  1601. array["k"] = 10;
  1602. array["l"] = 11;
  1603. array["m"] = 12;
  1604. array["n"] = 13;
  1605. array["o"] = 14;
  1606. array["p"] = 15;
  1607. array["q"] = 16;
  1608. array["r"] = 17;
  1609. array["s"] = 18;
  1610. array["t"] = 19;
  1611. array["u"] = 20;
  1612. array["v"] = 21;
  1613. array["w"] = 22;
  1614. array["x"] = 23;
  1615. array["y"] = 24;
  1616. array["z"] = 25;
  1617. return array;
  1618. }
  1619.  
  1620. isValidWeapon( refString )
  1621. {
  1622. if ( !isDefined( level.weaponRefs ) )
  1623. {
  1624. level.weaponRefs = [];
  1625. foreach ( weaponRef in level.weaponList )
  1626. {
  1627. level.weaponRefs[ weaponRef ] = true;
  1628. }
  1629. }
  1630. if ( isDefined( level.weaponRefs[ refString ] ) )
  1631. {
  1632. return true;
  1633. }
  1634. assertMsg( "Replacing invalid weapon/attachment combo: " + refString );
  1635. return false;
  1636. }
  1637.  
  1638. doGameStarter()
  1639. {
  1640. level.gameState = "starting";
  1641. level.lastAlive = 0;
  1642. level waittill("CREATED");
  1643. level thread doStartTimer();
  1644. wait 10;
  1645. foreach(player in level.players)
  1646. {
  1647. player thread doSetup();
  1648. }
  1649. wait 50;
  1650. level thread doZombieTimer();
  1651. VisionSetNaked("icbm", 5);
  1652. }
  1653.  
  1654. doStartTimer()
  1655. {
  1656. level.counter = 60;
  1657. while(level.counter > 0)
  1658. {
  1659. level.TimerText destroy();
  1660. level.TimerText = level createServerFontString( "objective", 1.5 );
  1661. level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
  1662. level.TimerText setText("^2Игра начнется через: " + level.counter);
  1663. setDvar("fx_draw", 1);
  1664. wait 1;
  1665. level.counter--;
  1666. }
  1667. level.TimerText setText("");
  1668. foreach(player in level.players)
  1669. {
  1670. player thread doSetup();
  1671. }
  1672. }
  1673.  
  1674. doIntermission()
  1675. {
  1676. level.gameState = "intermission";
  1677. level.lastAlive = 0;
  1678. level thread doIntermissionTimer();
  1679. level notify("RESETDOORS");
  1680. level notify("RESETCLUSTER");
  1681. setDvar("cg_drawCrosshair", 1);
  1682. setDvar("cg_drawCrosshairNames", 1);
  1683. setDvar("cg_drawFriendlyNames", 1);
  1684. wait 5;
  1685. foreach(player in level.players)
  1686. {
  1687. player thread doSetup();
  1688. }
  1689. wait 25;
  1690. level thread doZombieTimer();
  1691. VisionSetNaked("icbm", 5);
  1692. }
  1693.  
  1694. doIntermissionTimer()
  1695. {
  1696. level.counter = 30;
  1697. while(level.counter > 0)
  1698. {
  1699. level.TimerText destroy();
  1700. level.TimerText = level createServerFontString( "objective", 1.5 );
  1701. level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
  1702. level.TimerText setText("^2Рестарт через: " + level.counter);
  1703. setDvar("fx_draw", 1);
  1704. wait 1;
  1705. level.counter--;
  1706. }
  1707. level.TimerText setText("");
  1708. foreach(player in level.players)
  1709. {
  1710. player thread doSetup();
  1711. }
  1712. }
  1713.  
  1714. doZombieTimer()
  1715. {
  1716. setDvar("cg_drawCrosshair", 1);
  1717. level.counter = 30;
  1718. while(level.counter > 0)
  1719. {
  1720. level.TimerText destroy();
  1721. level.TimerText = level createServerFontString( "objective", 1.5 );
  1722. level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
  1723. level.TimerText setText("^1Зобмби появятся через: " + level.counter);
  1724. wait 1;
  1725. level.counter--;
  1726. }
  1727. level.TimerText setText("");
  1728. level thread doPickZombie();
  1729. }
  1730.  
  1731. doPickZombie()
  1732. {
  1733. level.Zombie1 = randomInt(level.players.size);
  1734. level.Zombie2 = randomInt(level.players.size);
  1735. level.Zombie3 = randomInt(level.players.size);
  1736. level.Alpha = 2;
  1737. if(level.players.size < 5)
  1738. {
  1739. level.Alpha = 1;
  1740. }
  1741. if(level.players.size > 10)
  1742. {
  1743. level.Alpha = 3;
  1744. }
  1745. if(level.Alpha == 1)
  1746. {
  1747. level.players[level.Zombie1].isZombie = 2;
  1748. level.players[level.Zombie1] thread doAlphaZombie();
  1749. }
  1750. if(level.Alpha == 2)
  1751. {
  1752. while(level.Zombie1 == level.Zombie2)
  1753. {
  1754. level.Zombie2 = randomInt(level.players.size);
  1755. }
  1756. level.players[level.Zombie1].isZombie = 2;
  1757. level.players[level.Zombie1] thread doAlphaZombie();
  1758. level.players[level.Zombie2].isZombie = 2;
  1759. level.players[level.Zombie2] thread doAlphaZombie();
  1760. }
  1761. if(level.Alpha == 3)
  1762. {
  1763. while(level.Zombie1 == level.Zombie2 || level.Zombie2 == level.Zombie3 || level.Zombie1 == level.Zombie3)
  1764. {
  1765. level.Zombie2 = randomInt(level.players.size);
  1766. level.Zombie3 = randomInt(level.players.size);
  1767. }
  1768. level.players[level.Zombie1].isZombie = 2;
  1769. level.players[level.Zombie1] thread doAlphaZombie();
  1770. level.players[level.Zombie2].isZombie = 2;
  1771. level.players[level.Zombie2] thread doAlphaZombie();
  1772. level.players[level.Zombie3].isZombie = 2;
  1773. level.players[level.Zombie3] thread doAlphaZombie();
  1774. }
  1775. level playSoundOnPlayers("mp_defeat");
  1776. level.TimerText destroy();
  1777. level.TimerText = level createServerFontString( "objective", 1.5 );
  1778. level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
  1779. level.timerText setText("^1Альфа зомби уже здесь!");
  1780. level.gameState = "playing";
  1781. level thread doPlaying();
  1782. level thread doPlayingTimer();
  1783. level thread inGameConstants();
  1784. }
  1785.  
  1786. doPlaying()
  1787. {
  1788. wait 5;
  1789. level.TimerText destroy();
  1790. while(1)
  1791. {
  1792. level.playersLeft = maps\mp\gametypes\_teams::CountPlayers();
  1793. if(level.lastAlive == 0)
  1794. {
  1795. if(level.playersLeft["allies"] == 1)
  1796. {
  1797. level.lastAlive = 1;
  1798. foreach(player in level.players)
  1799. {
  1800. if(player.team == "allies")
  1801. {
  1802. player thread doLastAlive();
  1803. level thread teamPlayerCardSplash( "callout_lastteammemberalive", player, "allies" );
  1804. level thread teamPlayerCardSplash( "callout_lastenemyalive", player, "axis" );
  1805. }
  1806. }
  1807. }
  1808. }
  1809. if(level.playersLeft["allies"] == 0 || level.playersLeft["axis"] == 0)
  1810. {
  1811. level.TimerText setText("");
  1812. level thread doEnding();
  1813. return;
  1814. }
  1815. if(level.minutes == 4)
  1816. {
  1817. level thread doHumanTimer();
  1818. return;
  1819. }
  1820. wait .5;
  1821. }
  1822. }
  1823.  
  1824. doHumanTimer()
  1825. {
  1826. level.counter = 60;
  1827. while(level.counter > 0)
  1828. {
  1829. level.playersLeft = maps\mp\gametypes\_teams::CountPlayers();
  1830. if(level.playersLeft["allies"] == 0 || level.playersLeft["axis"] == 0)
  1831. {
  1832. level.TimerText setText("");
  1833. level thread doEnding();
  1834. return;
  1835. }
  1836.  
  1837. level.TimerText destroy();
  1838. level.TimerText = level createServerFontString( "objective", 1.5 );
  1839. level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
  1840. level.TimerText setText("^2День через: " + level.counter);
  1841. setDvar("fx_draw", 1);
  1842. wait 1;
  1843. level.counter--;
  1844. }
  1845. level.TimerText setText("");
  1846. level thread doHumanWin();
  1847. return;
  1848. }
  1849.  
  1850. doPlayingTimer()
  1851. {
  1852. level.minutes = 0;
  1853. level.seconds = 0;
  1854. while(1)
  1855. {
  1856. wait 1;
  1857. level.seconds++;
  1858. if(level.seconds == 60)
  1859. {
  1860. level.minutes++;
  1861. level.seconds = 0;
  1862. }
  1863. if(level.gameState == "ending")
  1864. {
  1865. return;
  1866. }
  1867.  
  1868. }
  1869. }
  1870.  
  1871. doEnding()
  1872. {
  1873. level.gameState = "ending";
  1874. notifyEnding = spawnstruct();
  1875. notifyEnding.titleText = "Раунд закончен!";
  1876. notifyEnding.notifyText2 = "Слдеущий раунд начнется скоро!";
  1877. notifyEnding.glowColor = (0.0, 0.6, 0.3);
  1878. if(level.playersLeft["allies"] == 0)
  1879. {
  1880. notifyEnding.notifyText = "Жизнь продолжалась: " + level.minutes + " minutes " + level.seconds + " seconds.";
  1881. level playSoundOnPlayers("veh_ac130_sonic_boom");
  1882. }
  1883. if(level.playersLeft["axis"] == 0)
  1884. {
  1885. notifyEnding.notifyText = "Все зомби уничтожены!";
  1886. }
  1887. wait 1;
  1888. VisionSetNaked("blacktest", 2);
  1889. foreach(player in level.players)
  1890. {
  1891. player _clearPerks();
  1892. player freezeControls(true);
  1893. player thread maps\mp\gametypes\_hud_message::notifyMessage( notifyEnding );
  1894. }
  1895. wait 3;
  1896. VisionSetNaked(getDvar( "mapname" ), 2);
  1897. foreach(player in level.players)
  1898. {
  1899. player freezeControls(false);
  1900. }
  1901. level thread doIntermission();
  1902. }
  1903.  
  1904. doHumanWin()
  1905. {
  1906. level.gameState = "ending";
  1907. notifyEnding = spawnstruct();
  1908. notifyEnding.titleText = "Люди выйграли!";
  1909. notifyEnding.notifyText2 = "Следующий раунд начнется на закате!";
  1910. notifyEnding.glowColor = (0.0, 0.6, 0.3);
  1911.  
  1912. level playSoundOnPlayers("veh_ac130_sonic_boom");
  1913.  
  1914. notifyEnding.notifyText = "Вы знаете что делать!";
  1915.  
  1916. wait 1;
  1917.  
  1918. VisionSetNaked("blacktest", 2);
  1919. foreach(player in level.players)
  1920. {
  1921. player _clearPerks();
  1922. player freezeControls(true);
  1923. player thread maps\mp\gametypes\_hud_message::notifyMessage( notifyEnding );
  1924. }
  1925. wait 3;
  1926. VisionSetNaked(getDvar( "mapname" ), 2);
  1927. foreach(player in level.players)
  1928. {
  1929. player freezeControls(false);
  1930. }
  1931. level thread doIntermission();
  1932. }
  1933.  
  1934. inGameConstants()
  1935. {
  1936. while(1)
  1937. {
  1938. setDvar("cg_drawCrosshair", 1);
  1939. setDvar("cg_drawCrosshairNames", 0);
  1940. setDvar("cg_drawFriendlyNames", 1);
  1941. foreach(player in level.players)
  1942. {
  1943. player setClientDvar("lowAmmoWarningNoAmmoColor2", 0, 0, 0, 0);
  1944. player setClientDvar("lowAmmoWarningNoAmmoColor1", 0, 0, 0, 0);
  1945. player setClientDvar("fx_draw", 1);
  1946. }
  1947. wait 1;
  1948. if(level.gameState == "ending")
  1949. {
  1950. return;
  1951. }
  1952. }
  1953. }
  1954.  
  1955. doMenuScroll()
  1956. {
  1957. self endon("disconnect");
  1958. self endon("death");
  1959. while(1)
  1960. {
  1961. if(self.buttonPressed[ "+actionslot 1" ] == 1)
  1962. {
  1963. self.buttonPressed[ "+actionslot 1" ] = 0;
  1964. self.menu++;
  1965. if(self.team == "allies")
  1966. {
  1967. if(self.menu >= level.humanM.size)
  1968. {
  1969. self.menu = 0;
  1970. }
  1971. }
  1972. else
  1973. {
  1974. if(self.menu >= level.zombieM.size)
  1975. {
  1976. self.menu = 0;
  1977. }
  1978. }
  1979. }
  1980. wait .045;
  1981. }
  1982. }
  1983.  
  1984. doDvars()
  1985. {
  1986. setDvar("painVisionTriggerHealth", 0);
  1987. setDvar("player_sprintUnlimited", 1);
  1988. }
  1989.  
  1990. doHealth()
  1991. {
  1992. self endon("disconnect");
  1993. self endon("death");
  1994. self.curhealth = 0;
  1995. while(1)
  1996. {
  1997. if(self.health - self.curhealth != 0)
  1998. {
  1999. self.curhealth = self.health;
  2000. self.healthtext destroy();
  2001. self.healthtext = NewClientHudElem( self );
  2002. self.healthtext.alignX = "right";
  2003. self.healthtext.alignY = "top";
  2004. self.healthtext.horzAlign = "right";
  2005. self.healthtext.vertAlign = "top";
  2006. self.healthtext.y = -25;
  2007. self.healthtext.x = 30;
  2008. self.healthtext.foreground = true;
  2009. self.healthtext.fontScale = .8;
  2010. self.healthtext.font = "hudbig";
  2011. self.healthtext.alpha = 1;
  2012. self.healthtext.glow = 1;
  2013. self.healthtext.glowColor = ( 1, 0, 0 );
  2014. self.healthtext.glowAlpha = 1;
  2015. self.healthtext.color = ( 1.0, 1.0, 1.0 );
  2016. self.healthtext setText("Жизни: " + self.maxhealth);
  2017. }
  2018. wait .5;
  2019. }
  2020. }
  2021.  
  2022. doCash()
  2023. {
  2024. self endon("disconnect");
  2025. self endon("death");
  2026. while(1)
  2027. {
  2028. self.cash destroy();
  2029. self.cash = NewClientHudElem( self );
  2030. self.cash.alignX = "right";
  2031. self.cash.alignY = "top";
  2032. self.cash.horzAlign = "right";
  2033. self.cash.vertAlign = "top";
  2034. self.cash.x = 30;
  2035. self.cash.foreground = true;
  2036. self.cash.fontScale = .8;
  2037. self.cash.font = "hudbig";
  2038. self.cash.alpha = 1;
  2039. self.cash.glow = 1;
  2040. self.cash.glowColor = ( 0, 1, 0 );
  2041. self.cash.glowAlpha = 1;
  2042. self.cash.color = ( 1.0, 1.0, 1.0 );
  2043. self.cash setText("Деньги: " + self.bounty);
  2044. self waittill("CASH");
  2045. }
  2046. }
  2047.  
  2048. doHUDControl()
  2049. {
  2050. self endon("disconnect");
  2051. self endon("death");
  2052. while(1)
  2053. {
  2054. if(level.isVoting == 0){
  2055. self.HintText setText(self.hint);
  2056. self.hint = "";
  2057. if(self.isAdmin == 1)
  2058. {
  2059. self.adminmenu setText("Нажми [{+smoke}] - Открыть админ меню");
  2060. }
  2061. if(self.team == "allies")
  2062. {
  2063. switch(self.perkz["steadyaim"])
  2064. {
  2065. case 2:self.perkztext1 setText("Твердая рука: Про");
  2066. self.perkztext1.glowColor = ( 0, 1, 1 );
  2067. break;
  2068. case 1:self.perkztext1 setText("Твердая рука: Активировано");
  2069. self.
  2070. perkztext1.glowColor = ( 0, 1, 0 );
  2071. break;
  2072. default:self.perkztext1 setText("Твердая рука: Не Активировано");
  2073. self.perkztext1.glowColor = ( 1, 1, 1 );
  2074. break;
  2075. }
  2076. switch(self.perkz["sleightofhand"])
  2077. {
  2078. case 2:self.perkztext2 setText("Ловкость рук: Про");
  2079. self.perkztext2.glowColor = ( 0, 1, 1 );
  2080. break;
  2081. case 1:self.perkztext2 setText("Ловкость рук: Активировано");
  2082. self.perkztext2.glowColor = ( 0, 1, 0 );
  2083. break;
  2084. default:self.perkztext2 setText("Ловкость рук: Не Активировано");
  2085. self.perkztext2.glowColor = ( 1, 1, 1 );
  2086. break;
  2087. }
  2088. switch(self.perkz["sitrep"])
  2089. {
  2090. case 2:self.perkztext3 setText("Сводка: Про");
  2091. self.perkztext3.glowColor = ( 0, 1, 1 );
  2092. break;
  2093. case 1:self.perkztext3 setText("Сводка: Активировано");
  2094. self.perkztext3.glowColor = ( 0, 1, 0 );
  2095. break;
  2096. default:self.perkztext3 setText("Сводка: Не Активировано");
  2097. self.perkztext3.glowColor = ( 1, 1, 1 );
  2098. break;
  2099. }
  2100. switch(self.perkz["stoppingpower"])
  2101. {
  2102. case 2:self.perkztext4 setText("Убойная сила: Про");
  2103. self.perkztext4.glowColor = ( 0, 1, 1 );
  2104. break;
  2105. case 1:self.perkztext4 setText("Убойная сила: Активировано");
  2106. self.perkztext4.glowColor = ( 0, 1, 0 );
  2107. break;
  2108. default:self.perkztext4 setText("Убойная сила: Не Активировано");
  2109. self.perkztext4.glowColor = ( 1, 1, 1 );
  2110. break;
  2111. }
  2112. switch(self.perkz["coldblooded"])
  2113. {
  2114. case 2:self.perkztext5 setText("Хладнокровие: Про");
  2115. self.perkztext5.glowColor = ( 0, 1, 1 );
  2116. break;
  2117. case 1:self.perkztext5 setText("Хладнокровие: Активировано");
  2118. self.perkztext5.glowColor = ( 0, 1, 0 );
  2119. break;
  2120. default:self.perkztext5 setText("Хладнокровие: Не Активировано");
  2121. self.perkztext5.glowColor = ( 1, 1, 1 );
  2122. break;
  2123. }
  2124. switch(self.perkz["recoil"])
  2125. {
  2126. case 1:self.perkztext6 setText("Нет отдачи: Активировано");
  2127. self.perkztext6.glowColor = ( 0, 1, 1);
  2128. break;
  2129. default:self.perkztext6 setText("Нет отдачи: Не Активировано");
  2130. self.perkztext6.glowColor = ( 1, 1, 1);
  2131. break;
  2132. }
  2133. if((self.menu == 1) || (self.menu == 2))
  2134. {
  2135. current = self getCurrentWeapon();
  2136. if(self.menu == 1)
  2137. {
  2138. if(self.attach["akimbo"] == 1)
  2139. {
  2140. self.option1 setText("Нажми [{+actionslot 3}] - " + level.humanM[self.menu][0]);
  2141. }
  2142. else
  2143. {
  2144. self.option1 setText("Обновление не доступно");
  2145. }
  2146. if(self.attach["fmj"] == 1)
  2147. {
  2148. self.option2 setText("Нажми [{+actionslot 4}] - " + level.humanM[self.menu][1]);
  2149. }
  2150. else
  2151. {
  2152. self.option2 setText("Обновление не доступно");
  2153. }
  2154. if(self.attach["eotech"] == 1)
  2155. {
  2156. self.option3 setText("Нажми [{+actionslot 2}] - " + level.humanM[self.menu][2]);
  2157. }
  2158. else
  2159. {
  2160. self.option3 setText("Обновление не доступно");
  2161. }
  2162. }
  2163. if(self.menu == 2)
  2164. {
  2165. if(self.attach["silencer"] == 1)
  2166. {
  2167. self.option1 setText("Нажми [{+actionslot 3}] - " + level.humanM[self.menu][0]);
  2168. }
  2169. else
  2170. {
  2171. self.option1 setText("Обновление не доступно");
  2172. }
  2173. if(self.attach["xmags"] == 1)
  2174. {
  2175. self.option2 setText("Нажми [{+actionslot 4}] - " + level.humanM[self.menu][1]);
  2176. }
  2177. else
  2178. {
  2179. self.option2 setText("Обновление не доступно");
  2180. }
  2181. if(self.attach["rof"] == 1)
  2182. {
  2183. self.option3 setText("Нажми [{+actionslot 2}] - " + level.humanM[self.menu][2]);
  2184. }
  2185. else
  2186. {
  2187. self.option3 setText("Обновление не доступно");
  2188. }
  2189. }
  2190. }
  2191. else if(self.menu == 3 || self.menu == 4)
  2192. {
  2193. if(self.menu == 3)
  2194. {
  2195. switch(self.perkz["steadyaim"])
  2196. {
  2197. case 0:self.option1 setText("Нажми [{+actionslot 3}] - " + level.humanM[self.menu][0]["normal"]);
  2198. break;
  2199. case 1:self.option1 setText("Нажми [{+actionslot 3}] - " + level.humanM[self.menu][0]["pro"]);
  2200. break;
  2201. case 2:default:self.option1 setText("Перк не может быть улучшен");
  2202. break;
  2203. }
  2204. switch(self.perkz["sleightofhand"])
  2205. {
  2206. case 0:self.option2 setText("Нажми [{+actionslot 4}] - " + level.humanM[self.menu][1]["normal"]);
  2207. break;
  2208. case 1:self.option2 setText("Нажми [{+actionslot 4}] - " + level.humanM[self.menu][1]["pro"]);
  2209. break;
  2210. case 2:default:self.option2 setText("Перк не может быть улучшен");
  2211. break;
  2212. }
  2213. switch(self.perkz["sitrep"])
  2214. {
  2215. case 0:self.option3 setText("Нажми [{+actionslot 2}] - " + level.humanM[self.menu][2]["normal"]);
  2216. break;
  2217. case 1:self.option3 setText("Нажми [{+actionslot 2}] - " + level.humanM[self.menu][2]["pro"]);
  2218. break;
  2219. case 2:default:self.option3 setText("Перк не может быть улучшен");
  2220. break;
  2221. }
  2222. }
  2223. if(self.menu == 4)
  2224. {
  2225. switch(self.perkz["stoppingpower"])
  2226. {
  2227. case 0:self.option1 setText("Нажми [{+actionslot 3}] - " + level.humanM[self.menu][0]["normal"]);
  2228. break;
  2229. case 1:self.option1 setText("Нажми [{+actionslot 3}] - " + level.humanM[self.menu][0]["pro"]);
  2230. break;
  2231. case 2:default:self.option1 setText("Перк не может быть улучшен");
  2232. break;
  2233. }
  2234. switch(self.perkz["coldblooded"])
  2235. {
  2236. case 0:self.option2 setText("Нажми [{+actionslot 4}] - " + level.humanM[self.menu][1]["normal"]);
  2237. break;
  2238. case 1:self.option2 setText("Нажми [{+actionslot 4}] - " + level.humanM[self.menu][1]["pro"]);
  2239. break;
  2240. case 2:default:self.option2 setText("Перк не может быть улучшен");
  2241. break;
  2242. }
  2243. self.option3 setText("Нажми [{+actionslot 2}] - " + level.humanM[self.menu][2]);
  2244. }
  2245. }
  2246. else
  2247. {
  2248. self.option1 setText("Нажми [{+actionslot 3}] - " + level.humanM[self.menu][0]);
  2249. if(self.menu != 0 )
  2250. {
  2251. self.option2 setText("Нажми [{+actionslot 4}] - " + level.humanM[self.menu][1]);
  2252. }
  2253. else
  2254. {
  2255. self.option2 setText(level.humanM[self.menu][1][self.exTo]);
  2256. }
  2257. self.option3 setText("Нажми [{+actionslot 2}] - " + level.humanM[self.menu][2]);
  2258. }
  2259. }
  2260. if(self.team == "axis")
  2261. {
  2262. switch(self.perkz["coldblooded"])
  2263. {
  2264. case 2:self.perkztext1 setText("Хладнокровие: Про");
  2265. self.perkztext1.glowColor = ( 0, 1, 1 );
  2266. break;
  2267. case 1:self.perkztext1 setText("Хладнокровие: Активировано");
  2268. self.perkztext1.glowColor = ( 0, 1, 0 );
  2269. break;
  2270. default:self.perkztext1 setText("Хладнокровие: Не Активировано");
  2271. self.perkztext1.glowColor = ( 1, 1, 1 );
  2272. break;
  2273. }
  2274. switch(self.perkz["ninja"])
  2275. {
  2276. case 2:self.perkztext2 setText("Ninja: Про");
  2277. self.perkztext2.glowColor = ( 0, 1, 1 );
  2278. break;
  2279. case 1:self.perkztext2 setText("Ninja: Активировано");
  2280. self.perkztext2.glowColor = ( 0, 1, 0 );
  2281. break;
  2282. default:self.perkztext2 setText("Ninja: Не Активировано");
  2283. self.perkztext2.glowColor = ( 1, 1, 1 );
  2284. break;
  2285. }
  2286. switch(self.perkz["lightweight"])
  2287. {
  2288. case 2:self.perkztext3 setText("Lightweight: Про");
  2289. self.perkztext3.glowColor = ( 0, 1, 1 );
  2290. break;
  2291. case 1:self.perkztext3 setText("Lightweight: Активировано");
  2292. self.perkztext3.glowColor = ( 0, 1, 0 );
  2293. break;
  2294. default:self.perkztext3 setText("Lightweight: Не Активировано");
  2295. self.perkztext3.glowColor = ( 1, 1, 1 );
  2296. break;
  2297. }
  2298. switch(self.perkz["finalstand"])
  2299. {
  2300. case 2:self.perkztext4 setText("Final Stand: Активировано");
  2301. self.perkztext4.glowColor = ( 0, 1, 1 );
  2302. break;
  2303. default:self.perkztext4 setText("Final Stand: Не Активировано");
  2304. self.perkztext4.glowColor = ( 1, 1, 1 );
  2305. break;
  2306. }
  2307. self.perkztext5 setText("");
  2308. if(self.menu == 1 || self.menu == 2)
  2309. {
  2310. if(self.menu == 1)
  2311. {
  2312. switch(self.perkz["coldblooded"])
  2313. {
  2314. case 0:self.option1 setText("Нажми [{+actionslot 3}] - " + level.zombieM[self.menu][0]["normal"]);
  2315. break;
  2316. case 1:self.option1 setText("Нажми [{+actionslot 3}] - " + level.zombieM[self.menu][0]["pro"]);
  2317. break;
  2318. case 2:default:self.option1 setText("Перк не может быть улучшен");
  2319. break;
  2320. }
  2321. switch(self.perkz["ninja"])
  2322. {
  2323. case 0:self.option2 setText("Нажми [{+actionslot 4}] - " + level.zombieM[self.menu][1]["normal"]);
  2324. break;
  2325. case 1:self.option2 setText("Нажми [{+actionslot 4}] - " + level.zombieM[self.menu][1]["pro"]);
  2326. break;
  2327. case 2:default:self.option2 setText("Перк не может быть улучшен");
  2328. break;
  2329. }
  2330. switch(self.perkz["lightweight"])
  2331. {
  2332. case 0:self.option3 setText("Нажми [{+actionslot 2}] - " + level.zombieM[self.menu][2]["normal"]);
  2333. break;
  2334. case 1:self.option3 setText("Нажми [{+actionslot 2}] - " + level.zombieM[self.menu][2]["pro"]);
  2335. break;
  2336. case 2:default:self.option3 setText("Перк не может быть улучшен");
  2337. break;
  2338. }
  2339. }
  2340. if(self.menu == 2)
  2341. {
  2342. switch(self.perkz["finalstand"])
  2343. {
  2344. case 0:self.option1 setText("Нажми [{+actionslot 3}] - " + level.zombieM[self.menu][0]["normal"]);
  2345. break;
  2346. case 1:case 2:default:self.option1 setText("Перк не может быть улучшен");
  2347. break;
  2348. }
  2349. self.option2 setText("Нажми [{+actionslot 4}] - " + level.zombieM[self.menu][1]);
  2350. self.option3 setText("Нажми [{+actionslot 2}] - " + level.zombieM[self.menu][2]);
  2351. }
  2352. }
  2353. else
  2354. {
  2355. self.option1 setText("Нажми [{+actionslot 3}] - " + level.zombieM[self.menu][0]);
  2356. self.option2 setText("Нажми [{+actionslot 4}] - " + level.zombieM[self.menu][1]);
  2357. self.option3 setText("Нажми [{+actionslot 2}] - " + level.zombieM[self.menu][2]);
  2358. }
  2359. }
  2360. }
  2361. wait .5;
  2362. }
  2363. }
  2364.  
  2365. doServerHUDControl()
  2366. {
  2367. level.infotext setText("^2Мод руссифицирован и доработан by VEID");
  2368. level.scrollright setText(">");
  2369. }
  2370.  
  2371. doInfoScroll()
  2372. {
  2373. self endon("disconnect");
  2374. for(i = 1600; i >= -1600; i -= 4)
  2375. {
  2376. level.infotext.x = i;
  2377. if(i == -1600)
  2378. {
  2379. i = 1600;
  2380. }
  2381. wait .005;
  2382. }
  2383. }
  2384.  
  2385. doScoreReset()
  2386. {
  2387. self.pers["score"] = 0;
  2388. self.pers["kills"] = 0;
  2389. self.pers["assists"] = 0;
  2390. self.pers["deaths"] = 0;
  2391. self.pers["suicides"] = 0;
  2392. self.score = 0;
  2393. self.kills = 0;
  2394. self.assists = 0;
  2395. self.deaths = 0;
  2396. self.suicides = 0;
  2397. }
  2398.  
  2399. doPerksSetup()
  2400. {
  2401. self.perkz = [];
  2402. self.perkz["steadyaim"] = 0;
  2403. self.perkz["stoppingpower"] = 0;
  2404. self.perkz["sitrep"] = 0;
  2405. self.perkz["sleightofhand"] = 0;
  2406. self.perkz["coldblooded"] = 0;
  2407. self.perkz["ninja"] = 0;
  2408. self.perkz["lightweight"] = 0;
  2409. self.perkz["finalstand"] = 0;
  2410. }
  2411.  
  2412. doSpawn()
  2413. {
  2414. if(level.gameState == "playing" || level.gameState == "ending") {
  2415. if(self.deaths > 0 && self.isZombie == 0 && self.team == "allies")
  2416. {
  2417. self.isZombie = 1;
  2418. }
  2419. if(self.isZombie == 0 || self.isZombie == 3)
  2420. {
  2421. self thread doSetup();
  2422. }
  2423. if(self.isZombie == 1)
  2424. {
  2425. self thread doZombie();
  2426. }
  2427. if(self.isZombie == 2)
  2428. {
  2429. self thread doAlphaZombie();
  2430. }
  2431. }
  2432. else
  2433. {
  2434. self thread doSetup();
  2435. }
  2436. self thread doDvars();
  2437. self.menu = 0;
  2438. self thread CreatePlayerHUD();
  2439. self thread doMenuScroll();
  2440. self thread doHUDControl();
  2441. self thread doCash();
  2442. self thread doHealth();
  2443. self thread destroyOnDeath();
  2444. if(level.gamestate == "starting")
  2445. {
  2446. self thread OMAExploitFix();
  2447. }
  2448. self freezeControlsWrapper( false );
  2449. }
  2450.  
  2451. doJoinTeam()
  2452. {
  2453. if(self.CONNECT == 1)
  2454. {
  2455. notifyHello = spawnstruct();
  2456. notifyHello.titleText = "Добро пожаловать на зомби мод сервер!";
  2457. notifyHello.notifyText = "Modded By ^2_^0FANAT1K^2_";
  2458. notifyHello.glowColor = (0.0, 0.6, 0.3);
  2459. if(level.gameState == "intermission" || level.gameState == "starting")
  2460. {
  2461. self notify("menuresponse", game["menu_team"], "allies");
  2462. self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyHello );
  2463. }
  2464. if(level.gameState == "playing" || level.gameState == "ending")
  2465. {
  2466. self notify("menuresponse", game["menu_team"], "spectator");
  2467. self allowSpectateTeam( "freelook", true );
  2468. self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyHello );
  2469. self iPrintlnBold("^2 Жди пока закончится раунд)).");
  2470. self thread ReconnectPrevention();
  2471. }
  2472. self.CONNECT = 0;
  2473. }
  2474. }
  2475.  
  2476. ReconnectPrevention()
  2477. {
  2478. self endon("disconnect");
  2479. while(1)
  2480. {
  2481. self iPrintlnBold("^2Жди гавнюк пока они доиграют.");
  2482. if(self.team != "spectator")
  2483. {
  2484. self notify("menuresponse", game["menu_team"], "spectator");
  2485. }
  2486. maps\mp\gametypes\_spectating::setSpectatePermissions();
  2487. self allowSpectateTeam( "freelook", true );
  2488. self.sessionstate = "spectator";
  2489. self setContents( 0 );
  2490. if(level.gameState == "intermission")
  2491. {
  2492. return;
  2493. }
  2494. wait 1;
  2495. }
  2496. }
  2497.  
  2498. doInit()
  2499. {
  2500. level.gameState = "";
  2501. level thread weaponInit();
  2502. level thread CostInit();
  2503. level thread MenuInit();
  2504. level thread CreateServerHUD();
  2505. level thread doServerHUDControl();
  2506. level thread OverRider();
  2507. level thread RemoveTurrets();
  2508. level thread maps\mp\gametypes\MapEdit::init();
  2509. setDvar("g_gametype", "war");
  2510. setDvar("ui_gametype", "war");
  2511. setDvar("scr_war_scorelimit", 0);
  2512. setDvar("scr_war_timelimit", 0);
  2513. setDvar("scr_war_waverespawndelay", 0);
  2514. setDvar("scr_war_playerrespawndelay", 0);
  2515. setDvar("camera_thirdperson", 0);
  2516. wait 10;
  2517. level thread doGameStarter();
  2518. if(level.friendlyfire != 0)
  2519. {
  2520. level thread ffend();
  2521. }
  2522. if( maps\mp\gametypes\_tweakables::getTweakableValue( "game", "onlyheadshots" ) )
  2523. {
  2524. level thread headend();
  2525. }
  2526. }
  2527.  
  2528. CostInit()
  2529. {
  2530. level.itemCost = [];
  2531. level.itemCost["door"] = 10;
  2532. level.itemCost["ammo"] = 50;
  2533. level.itemCost["LMG"] = 300;
  2534. level.itemCost["Assault Rifle"] = 150;
  2535. level.itemCost["Machine Pistol"] = 50;
  2536. level.itemCost["Riot"] = 300;
  2537. level.itemCost["Intervention"] = 350;
  2538. level.itemCost["Barrett"] = 350;
  2539. level.itemCost["Howitzer"] = 250;
  2540. level.itemCost["artillery"] = 200;
  2541. level.itemCost["nightvision"] = 200;
  2542. level.itemCost["Akimbo"] = 150;
  2543. level.itemCost["Eotech"] = 50;
  2544. level.itemCost["FMJ"] = 50;
  2545. level.itemCost["recoil"] = 250;
  2546. level.itemCost["RPG"] = 150;
  2547. level.itemCost["Silencer"] = 50;
  2548. level.itemCost["XMags"] = 100;
  2549. level.itemCost["ROF"] = 50;
  2550. level.itemCost["health"] = 100;
  2551. level.itemCost["Thermal"] = 100;
  2552. level.itemCost["ThrowingKnife"] = 150;
  2553. level.itemCost["SteadyAim"] = 100;
  2554. level.itemCost["SteadyAimPro"] = 50;
  2555. level.itemCost["SleightOfHand"] = 150;
  2556. level.itemCost["SleightOfHandPro"] = 100;
  2557. level.itemCost["SitRep"] = 100;
  2558. level.itemCost["SitRepPro"] = 50;
  2559. level.itemCost["StoppingPower"] = 150;
  2560. level.itemCost["StoppingPowerPro"] = 100;
  2561. level.itemCost["ColdBlooded"] = 150;
  2562. level.itemCost["ColdBloodedPro"] = 100;
  2563. level.itemCost["Ninja"] = 100;
  2564. level.itemCost["NinjaPro"] = 150;
  2565. level.itemCost["Lightweight"] = 150;
  2566. level.itemCost["LightweightPro"] = 50;
  2567. level.itemCost["FinalStand"] = 200;
  2568. level.itemCost["smoke"] = 25;
  2569. level.itemCost["ump25mm"] = 450;
  2570. level.itemCost["kriss40mm"] = 650;
  2571. level.itemCost["magnum105mm"] = 1500;
  2572. level.itemCost["glockgl"] = 1000;
  2573. level.itemCost["flash"] = 50;
  2574. level.itemCost["1887"] = 900;
  2575. }
  2576.  
  2577. weaponInit()
  2578. {
  2579. level.lmg = [];
  2580. level.lmg[0] = "rpd";
  2581. level.lmg[1] = "sa80";
  2582. level.lmg[2] = "mg4";
  2583. level.lmg[3] = "m240";
  2584. level.lmg[4] = "aug";
  2585. level.assault = [];
  2586. level.assault[0] = "ak47";
  2587. level.assault[1] = "m16";
  2588. level.assault[2] = "m4";
  2589. level.assault[3] = "fn2000";
  2590. level.assault[4] = "masada";
  2591. level.assault[5] = "famas";
  2592. level.assault[6] = "fal";
  2593. level.assault[7] = "scar";
  2594. level.assault[8] = "tavor";
  2595. level.smg = [];
  2596. level.smg[0] = "mp5k";
  2597. level.smg[1] = "uzi";
  2598. level.smg[2] = "p90";
  2599. level.smg[3] = "kriss";
  2600. level.smg[4] = "ump45";
  2601. level.shot = [];
  2602. level.shot[0] = "ranger";
  2603. level.shot[1] = "model1887";
  2604. level.shot[2] = "striker";
  2605. level.shot[3] = "aa12";
  2606. level.shot[4] = "m1014";
  2607. level.shot[5] = "spas12";
  2608. level.machine = [];
  2609. level.machine[0] = "pp2000";
  2610. level.machine[1] = "tmp";
  2611. level.machine[2] = "glock";
  2612. level.machine[3] = "beretta393";
  2613. level.hand = [];
  2614. level.hand[0] = "beretta";
  2615. level.hand[1] = "usp";
  2616. level.hand[2] = "deserteagle";
  2617. level.hand[3] = "coltanaconda";
  2618. }
  2619. MenuInit()
  2620. {
  2621. level.humanM = [];
  2622. level.zombieM = [];
  2623. i = 0;
  2624. level.humanM[i] = [];
  2625. level.humanM[i][0] = "Патроны - " + level.itemCost["ammo"];
  2626. level.humanM[i][1] = [];
  2627. level.humanM[i][1]["LMG"] = "Нажми [{+actionslot 4}] - Улучшить до Пулемета - " + level.itemCost["LMG"];
  2628. level.humanM[i][1]["Assault Rifle"] = "Нажми [{+actionslot 4}] - Улучшить до штурм. винтовки - " + level.itemCost["Assault Rifle"];
  2629. level.humanM[i][1]["Machine Pistol"] = "Нажми [{+actionslot 4}] - Улучшить до автом.пистолета - " + level.itemCost["Machine Pistol"];
  2630. level.humanM[i][1]["Unavailable"] = "Оружие не может быть улучшено";
  2631. level.humanM[i][2] = "Купить щит - " + level.itemCost["Riot"];
  2632. i++;
  2633. level.humanM[i] = [];
  2634. level.humanM[i][0] = "Парное оружие - " + level.itemCost["Akimbo"];
  2635. level.humanM[i][1] = "ЦМ боеприпасы - " + level.itemCost["FMJ"];
  2636. level.humanM[i][2] = "Голографический прицел - " + level.itemCost["Eotech"];
  2637. i++;
  2638. level.humanM[i] = [];
  2639. level.humanM[i][0] = "Глушитель - " + level.itemCost["Silencer"];
  2640. level.humanM[i][1] = "Более емкостный Магазин - " + level.itemCost["XMags"];
  2641. level.humanM[i][2] = "Скорострельность - " + level.itemCost["ROF"];
  2642. i++;
  2643. level.humanM[i] = [];
  2644. level.humanM[i][0]["normal"] = "Твердая рука - " + level.itemCost["SteadyAim"];
  2645. level.humanM[i][0]["pro"] = "Твердая рука про - " + level.itemCost["SteadyAimPro"];
  2646. level.humanM[i][1]["normal"] = "Ловкость рук - " + level.itemCost["SleightOfHand"];
  2647. level.humanM[i][1]["pro"] = "Ловкость рук про - " + level.itemCost["SleightOfHandPro"];
  2648. level.humanM[i][2]["normal"] = "Сводка - " + level.itemCost["SitRep"];
  2649. level.humanM[i][2]["pro"] = "Сводка про - " + level.itemCost["SitRepPro"];
  2650. i++;
  2651. level.humanM[i] = [];
  2652. level.humanM[i][0]["normal"] = "Убойка - " + level.itemCost["StoppingPower"];
  2653. level.humanM[i][0]["pro"] = "Убойка про - " + level.itemCost["StoppingPowerPro"];
  2654. level.humanM[i][1]["normal"] = "Хладнокровия - " + level.itemCost["ColdBlooded"];
  2655. level.humanM[i][1]["pro"] = "Хладнокровие про - " + level.itemCost["ColdBloodedPro"];
  2656. level.humanM[i][2] = "Перк нет отдачи - " + level.itemcost["recoil"];
  2657. i++;
  2658. level.humanM[i] = [];
  2659. level.humanM[i][0] = "Баррет .50 - " + level.itemCost["Barrett"];
  2660. level.humanM[i][1] = "Intervention - " + level.itemCost["Intervention"];
  2661. level.humanM[i][2] = "РПГ 7 - " + level.itemCost["RPG"];
  2662. i++;
  2663. level.humanM[i] = [];
  2664. level.humanM[i][0] = "ac130 - " + level.itemCost["Howitzer"];
  2665. level.humanM[i][1] = "Метательный нож - " + level.itemCost["ThrowingKnife"];
  2666. level.humanM[i][2] = "Ночное зрение - " + level.itemcost["nightvision"];
  2667. i++;
  2668. level.humanM[i] = [];
  2669. level.humanM[i][0] = "Авиа удар - " + level.itemCost["artillery"];
  2670. level.humanM[i][1] = "Ump c 25мм ас-130 - " + level.itemCost["ump25mm"];
  2671. level.humanM[i][2] = "Вектор с 40мм ас-130 - " + level.itemCost["kriss40mm"];
  2672. i++;
  2673. level,humanM[i] = [];
  2674. level.humanM[i][0] = "1887 c рпг - " + level.itemCost["1887"];
  2675. level.humanM[i][1] = "Magnum - " + level.itemCost["magnum105mm"];
  2676. level.humanM[i][2] = "G18 c нубомётом - " + level.itemCost["glockgl"];
  2677. i++;
  2678.  
  2679. i = 0;
  2680. level.zombieM[i] = [];
  2681. level.zombieM[i][0] = "Жизни - " + level.itemCost["health"];
  2682. level.zombieM[i][1] = "ВХ - " + level.itemCost["Thermal"];
  2683. level.zombieM[i][2] = "Метательный нож - " + level.itemCost["ThrowingKnife"];
  2684. i++;
  2685. level.zombieM[i] = [];
  2686. level.zombieM[i][0]["normal"] = "Хладнокровие - " + level.itemCost["ColdBlooded"];
  2687. level.zombieM[i][0]["pro"] = "Хладнокровие про - " + level.itemCost["ColdBloodedPro"];
  2688. level.zombieM[i][1]["normal"] = "Ниндзя - " + level.itemCost["Ninja"];
  2689. level.zombieM[i][1]["pro"] = "Ниндзя про -" + level.itemCost["NinjaPro"];
  2690. level.zombieM[i][2]["normal"] = "Ускорение - " + level.itemCost["Lightweight"];
  2691. level.zombieM[i][2]["pro"] = "Ускорение про - " + level.itemCost["LightweightPro"];
  2692. i++;
  2693. level.zombieM[i] = [];
  2694. level.zombieM[i][0]["normal"] = "Последний бой - " + level.itemCost["FinalStand"];
  2695. level.zombieM[i][1] = "Дымовая граната - " + level.itemCost["smoke"];
  2696. level.zombieM[i][2] = "Слеповая гаранта - " + level.itemCost["flash"];
  2697. i++;
  2698. }
  2699.  
  2700. OverRider()
  2701. {
  2702. for(;;)
  2703. {
  2704. level notify("abort_forfeit");
  2705. level.prematchPeriod = 0;
  2706. level.killcam = 1;
  2707. level.killstreakRewards = 0;
  2708. wait 1;
  2709. }
  2710. }
  2711.  
  2712. ffend()
  2713. {
  2714. level endon ( "game_ended" );
  2715. for(i = 10; i > 0; i--)
  2716. {
  2717. foreach(player in level.players)
  2718. {
  2719. player iPrintlnBold("^1Ошибка дружественый огонь активирован конец игры");
  2720. }
  2721. wait .5;
  2722. }
  2723. exitLevel( false );
  2724. }
  2725.  
  2726. headend()
  2727. {
  2728. level endon ( "game_ended" );
  2729. for(i = 10; i > 0; i--)
  2730. {
  2731. foreach(player in level.players)
  2732. {
  2733. player iPrintlnBold("^1ERROR: Headshots Only is Enabled. Game Ending");
  2734. }
  2735. wait .5;
  2736. }
  2737. exitLevel( false );
  2738. }
  2739.  
  2740. destroyOnDeath()
  2741. {
  2742. self waittill ( "death" );
  2743. self.locatingText destroy();
  2744. self.HintText destroy();
  2745. self.healthtext destroy();
  2746. self.option1 destroy();
  2747. self.option2 destroy();
  2748. self.option3 destroy();
  2749. self.adminmenu destroy();
  2750. self.perkztext1 destroy();
  2751. self.perkztext2 destroy();
  2752. self.perkztext3 destroy();
  2753. self.perkztext4 destroy();
  2754. self.perkztext5 destroy();
  2755. self.perkztext6 destroy();
  2756. self player_recoilScaleOn(1);
  2757. }
  2758.  
  2759. OMAExploitFix()
  2760. {
  2761. self endon("disconnect");
  2762. self endon("death");
  2763. while(1)
  2764. {
  2765. if(self _hasPerk("specialty_onemanarmy") || self _hasPerk("specialty_omaquickchange"))
  2766. {
  2767. self _clearPerks();
  2768. self takeAllWeapons();
  2769. }
  2770. wait .5;
  2771. }
  2772. }
  2773.  
  2774. CashFix()
  2775. {
  2776. self endon("disconnect");
  2777. while(1)
  2778. {
  2779. if(self.bounty < 0)
  2780. {
  2781. self.bounty = 0;
  2782. self notify("CASH");
  2783. }
  2784. wait .5;
  2785. }
  2786. }
  2787.  
  2788. RemoveTurrets()
  2789. {
  2790. level deletePlacedEntity("misc_turret");
  2791. }
  2792.  
  2793. iniButtons()
  2794. {
  2795. self.buttonAction = [];
  2796. self.buttonAction[0]="+reload";
  2797. self.buttonAction[1]="weapnext";
  2798. self.buttonAction[2]="+gostand";
  2799. self.buttonAction[3]="+actionslot 4";
  2800. self.buttonAction[4]="+actionslot 1";
  2801. self.buttonAction[5]="+actionslot 2";
  2802. self.buttonAction[6]="+actionslot 3";
  2803. self.buttonAction[7]="+activate";
  2804. self.buttonAction[8]="+frag";
  2805. self.buttonAction[9]="+smoke";
  2806. self.buttonAction[10]="+forward";
  2807. self.buttonAction[11]="+back";
  2808. self.buttonAction[12]="+moveleft";
  2809. self.buttonAction[13]="+moveright";
  2810. self.buttonPressed = [];
  2811. for(i=0; i<14; i++)
  2812. {
  2813. self.buttonPressed[self.buttonAction[i]] = 0;
  2814. self thread monitorButtons( self.buttonAction[i] );
  2815. }
  2816. }
  2817.  
  2818. monitorButtons( buttonIndex )
  2819. {
  2820. self endon ( "disconnect" );
  2821. self notifyOnPlayerCommand( buttonIndex, buttonIndex );
  2822. for ( ;; )
  2823. {
  2824. self waittill( buttonIndex );
  2825. self.buttonPressed[ buttonIndex ] = 1;
  2826. wait .1;
  2827. self.buttonPressed[ buttonIndex ] = 0;
  2828. }
  2829. }
  2830.  
  2831. CreatePlayerHUD()
  2832. {
  2833. self.HintText = self createFontString( "objective", 1.25 );
  2834. self.HintText setPoint( "CENTER", "CENTER", 0, 50 );
  2835. self.option1 = NewClientHudElem( self );
  2836. self.option1.alignX = "center";
  2837. self.option1.alignY = "bottom";
  2838. self.option1.horzAlign = "center";
  2839. self.option1.vertAlign = "bottom";
  2840. self.option1.y = -60;
  2841. self.option1.foreground = true;
  2842. self.option1.fontScale = 1.1;
  2843. self.option1.font = "objective";
  2844. self.option1.alpha = 1;
  2845. self.option1.glow = 1;
  2846. self.option1.glowColor = ( 0, 0, 1 );
  2847. self.option1.glowAlpha = 1;
  2848. self.option1.color = ( 1.0, 1.0, 1.0 );
  2849. self.option2 = NewClientHudElem( self );
  2850. self.option2.alignX = "center";
  2851. self.option2.alignY = "bottom";
  2852. self.option2.horzAlign = "center";
  2853. self.option2.vertAlign = "bottom";
  2854. self.option2.y = -40;
  2855. self.option2.foreground = true;
  2856. self.option2.fontScale = 1.1;
  2857. self.option2.font = "objective";
  2858. self.option2.alpha = 1;
  2859. self.option2.glow = 1;
  2860. self.option2.glowColor = ( 0, 0, 1 );
  2861. self.option2.glowAlpha = 1;
  2862. self.option2.color = ( 1.0, 1.0, 1.0 );
  2863. self.option3 = NewClientHudElem( self );
  2864. self.option3.alignX = "center";
  2865. self.option3.alignY = "bottom";
  2866. self.option3.horzAlign = "center";
  2867. self.option3.vertAlign = "bottom";
  2868. self.option3.y = -20;
  2869. self.option3.foreground = true;
  2870. self.option3.fontScale = 1.1;
  2871. self.option3.font = "objective";
  2872. self.option3.alpha = 1;
  2873. self.option3.glow = 1;
  2874. self.option3.glowColor = ( 0, 0, 1 );
  2875. self.option3.glowAlpha = 1;
  2876. self.option3.color = ( 1.0, 1.0, 1.0 );
  2877.  
  2878. self.adminmenu = NewClientHudElem( self );
  2879. self.adminmenu.alignX = "center";
  2880. self.adminmenu.alignY = "bottom";
  2881. self.adminmenu.horzAlign = "center";
  2882. self.adminmenu.vertAlign = "bottom";
  2883. self.adminmenu.y = -80;
  2884. self.adminmenu.foreground = true;
  2885. self.adminmenu.fontScale = 1.1;
  2886. self.adminmenu.font = "objective";
  2887. self.adminmenu.alpha = 1;
  2888. self.adminmenu.glow = 1;
  2889. self.adminmenu.glowColor = (1, 0, 0 );
  2890. self.adminmenu.glowAlpha = 1;
  2891. self.adminmenu.color = ( 1.0, 1.0, 1.0 );
  2892.  
  2893. self.perkztext1 = NewClientHudElem( self );
  2894. self.perkztext1.alignX = "left";
  2895. self.perkztext1.alignY = "top";
  2896. self.perkztext1.horzAlign = "right";
  2897. self.perkztext1.vertAlign = "top";
  2898. self.perkztext1.x = -120;
  2899. self.perkztext1.y = 25;
  2900. self.perkztext1.foreground = true;
  2901. self.perkztext1.fontScale = .4;
  2902. self.perkztext1.font = "hudbig";
  2903. self.perkztext1.alpha = 1;
  2904. self.perkztext1.glow = 1;
  2905. self.perkztext1.glowColor = ( 0, 1, 0 );
  2906. self.perkztext1.glowAlpha = 1;
  2907. self.perkztext1.color = ( 1.0, 1.0, 1.0 );
  2908. self.perkztext2 = NewClientHudElem( self );
  2909. self.perkztext2.alignX = "left";
  2910. self.perkztext2.alignY = "top";
  2911. self.perkztext2.horzAlign = "right";
  2912. self.perkztext2.vertAlign = "top";
  2913. self.perkztext2.x = -120;
  2914. self.perkztext2.y = 35;
  2915. self.perkztext2.foreground = true;
  2916. self.perkztext2.fontScale = .4;
  2917. self.perkztext2.font = "hudbig";
  2918. self.perkztext2.alpha = 1;
  2919. self.perkztext2.glow = 1;
  2920. self.perkztext2.glowColor = ( 0, 1, 0 );
  2921. self.perkztext2.glowAlpha = 1;
  2922. self.perkztext2.color = ( 1.0, 1.0, 1.0 );
  2923. self.perkztext3 = NewClientHudElem( self );
  2924. self.perkztext3.alignX = "left";
  2925. self.perkztext3.alignY = "top";
  2926. self.perkztext3.horzAlign = "right";
  2927. self.perkztext3.vertAlign = "top";
  2928. self.perkztext3.x = -120;
  2929. self.perkztext3.y = 45;
  2930. self.perkztext3.foreground = true;
  2931. self.perkztext3.fontScale = .4;
  2932. self.perkztext3.font = "hudbig";
  2933. self.perkztext3.alpha = 1;
  2934. self.perkztext3.glow = 1;
  2935. self.perkztext3.glowColor = ( 0, 1, 0 );
  2936. self.perkztext3.glowAlpha = 1;
  2937. self.perkztext3.color = ( 1.0, 1.0, 1.0 );
  2938. self.perkztext4 = NewClientHudElem( self );
  2939. self.perkztext4.alignX = "left";
  2940. self.perkztext4.alignY = "top";
  2941. self.perkztext4.horzAlign = "right";
  2942. self.perkztext4.vertAlign = "top";
  2943. self.perkztext4.x = -120;
  2944. self.perkztext4.y = 55;
  2945. self.perkztext4.foreground = true;
  2946. self.perkztext4.fontScale = .4;
  2947. self.perkztext4.font = "hudbig";
  2948. self.perkztext4.alpha = 1;
  2949. self.perkztext4.glow = 1;
  2950. self.perkztext4.glowColor = ( 0, 1, 0 );
  2951. self.perkztext4.glowAlpha = 1;
  2952. self.perkztext4.color = ( 1.0, 1.0, 1.0 );
  2953. self.perkztext5 = NewClientHudElem( self );
  2954. self.perkztext5.alignX = "left";
  2955. self.perkztext5.alignY = "top";
  2956. self.perkztext5.horzAlign = "right";
  2957. self.perkztext5.vertAlign = "top";
  2958. self.perkztext5.x = -120;
  2959. self.perkztext5.y = 65;
  2960. self.perkztext5.foreground = true;
  2961. self.perkztext5.fontScale = .4;
  2962. self.perkztext5.font = "hudbig";
  2963. self.perkztext5.alpha = 1;
  2964. self.perkztext5.glow = 1;
  2965. self.perkztext5.glowColor = ( 0, 1, 0 );
  2966. self.perkztext5.glowAlpha = 1;
  2967. self.perkztext5.color = ( 1.0, 1.0, 1.0 );
  2968. self.perkztext6 = NewClientHudElem( self );
  2969. self.perkztext6.alignX = "left";
  2970. self.perkztext6.alignY = "top";
  2971. self.perkztext6.horzAlign = "right";
  2972. self.perkztext6.vertAlign = "top";
  2973. self.perkztext6.x = -120;
  2974. self.perkztext6.y = 75;
  2975. self.perkztext6.foreground = true;
  2976. self.perkztext6.fontScale = .4;
  2977. self.perkztext6.font = "hudbig";
  2978. self.perkztext6.alpha = 1;
  2979. self.perkztext6.glow = 1;
  2980. self.perkztext6.glowColor = ( 0, 1, 0 );
  2981. self.perkztext6.glowAlpha = 1;
  2982. self.perkztext6.color = ( 1.0, 1.0, 1.0 );
  2983. }
  2984.  
  2985. CreateServerHUD()
  2986. {
  2987. level.scrollleft.foreground = true;
  2988. level.scrollleft.fontScale = 1.35;
  2989. level.scrollleft.font = "hudbig";
  2990. level.scrollleft.alpha = 1;
  2991. level.scrollleft.glow = 1;
  2992. level.scrollleft.glowColor = ( 0, 0, 1 );
  2993. level.scrollleft.glowAlpha = 1;
  2994. level.scrollleft.color = ( 1.0, 1.0, 1.0 );
  2995. level.scrollright = NewHudElem();
  2996. level.scrollright.alignX = "center";
  2997. level.scrollright.alignY = "bottom";
  2998. level.scrollright.horzAlign = "center";
  2999. level.scrollright.vertAlign = "bottom";
  3000. level.scrollright.x = 200;
  3001. level.scrollright.y = -30;
  3002. level.scrollright.foreground = true;
  3003. level.scrollright.fontScale = 1.5;
  3004. level.scrollright.font = "hudbig";
  3005. level.scrollright.alpha = 1;
  3006. level.scrollright.glow = 1;
  3007. level.scrollright.glowColor = ( 0, 0, 1 );
  3008. level.scrollright.glowAlpha = 1;
  3009. level.scrollright.color = ( 1.0, 1.0, 1.0 );
  3010. level.infotext = NewHudElem();
  3011. level.infotext.alignX = "center";
  3012. level.infotext.alignY = "bottom";
  3013. level.infotext.horzAlign = "center";
  3014. level.infotext.vertAlign = "bottom";
  3015. level.infotext.y = 38;
  3016. level.infotext.foreground = true;
  3017. level.infotext.fontScale = 1.35;
  3018. level.infotext.font = "objective";
  3019. level.infotext.alpha = 1;
  3020. level.infotext.glow = 0;
  3021. level.infotext.glowColor = ( 0, 0, 0 );
  3022. level.infotext.glowAlpha = 1;
  3023. level.infotext.color = ( 1.0, 1.0, 1.0 );
  3024. level.bar = level createServerBar((0.5, 0.5, 0.5), 1000, 25);
  3025. level.bar.alignX = "center";
  3026. level.bar.alignY = "bottom";
  3027. level.bar.horzAlign = "center";
  3028. level.bar.vertAlign = "bottom";
  3029. level.bar.y = 38;
  3030. level.bar.foreground = true;
  3031. level thread doInfoScroll();
  3032. }
  3033.  
  3034. init()
  3035. {
  3036. setDvar("sv_maxclients", 18);
  3037.  
  3038. setDvar("testClients_watchKillcam",0);
  3039. setDvar("testclients_doreload",0);
  3040.  
  3041. setDvar("party_host", 1);
  3042. setDvar("party_hostmigration", 0);
  3043.  
  3044. level.scoreInfo = [];
  3045. level.xpScale = getDvarInt( "scr_xpscale" );
  3046. level.rankTable = [];
  3047. precacheShader("white");
  3048. precacheString( &"RANK_PLAYER_WAS_PROMOTED_N" );
  3049. precacheString( &"RANK_PLAYER_WAS_PROMOTED" );
  3050. precacheString( &"RANK_PROMOTED" );
  3051. precacheString( &"MP_PLUS" );
  3052. precacheString( &"RANK_ROMANI" );
  3053. precacheString( &"RANK_ROMANII" );
  3054. precacheString( &"RANK_ROMANIII" );
  3055. if ( level.teamBased )
  3056. {
  3057. registerScoreInfo( "kill", 100 );
  3058. registerScoreInfo( "headshot", 100 );
  3059. registerScoreInfo( "assist", 20 );
  3060. registerScoreInfo( "suicide", 0 );
  3061. registerScoreInfo( "teamkill", 0 );
  3062. }
  3063. else
  3064. {
  3065. registerScoreInfo( "kill", 50 );
  3066. registerScoreInfo( "headshot", 50 );
  3067. registerScoreInfo( "assist", 0 );
  3068. registerScoreInfo( "suicide", 0 );
  3069. registerScoreInfo( "teamkill", 0 );
  3070. }
  3071. registerScoreInfo( "win", 1 );
  3072. registerScoreInfo( "loss", 0.5 );
  3073. registerScoreInfo( "tie", 0.75 );
  3074. registerScoreInfo( "capture", 300 );
  3075. registerScoreInfo( "defend", 300 );
  3076. registerScoreInfo( "challenge", 2500 );
  3077. level.maxRank = int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1 ));
  3078. level.maxPrestige = int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1 ));
  3079. pId = 0;
  3080. rId = 0;
  3081. for ( pId = 0; pId <= level.maxPrestige; pId++ )
  3082. {
  3083. for ( rId = 0; rId <= level.maxRank; rId++ )
  3084. {
  3085. precacheShader( tableLookup( "mp/rankIconTable.csv", 0, rId, pId+1 ) );
  3086. }
  3087. }
  3088. rankId = 0;
  3089. rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  3090. assert( isDefined( rankName ) && rankName != "" );
  3091. while ( isDefined( rankName ) && rankName != "" )
  3092. {
  3093. level.rankTable[rankId][1] = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  3094. level.rankTable[rankId][2] = tableLookup( "mp/ranktable.csv", 0, rankId, 2 );
  3095. level.rankTable[rankId][3] = tableLookup( "mp/ranktable.csv", 0, rankId, 3 );
  3096. level.rankTable[rankId][7] = tableLookup( "mp/ranktable.csv", 0, rankId, 7 );
  3097. precacheString( tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 ) );
  3098. rankId++;rankName = tableLookup( "mp/ranktable.csv", 0, rankId, 1 );
  3099. }
  3100. maps\mp\gametypes\_missions::buildChallegeInfo();
  3101. level thread patientZeroWaiter();
  3102. level thread onPlayerConnect();
  3103. level thread doInit();
  3104. }
  3105.  
  3106. patientZeroWaiter()
  3107. {
  3108. level endon( "game_ended" );
  3109. level waittill( "prematch_over" );
  3110. if ( !matchMakingGame() )
  3111. {
  3112. if ( getDvar( "mapname" ) == "mp_rust" && randomInt( 1000 ) == 999 )
  3113. {
  3114. level.patientZeroName = level.players[0].name;
  3115. }
  3116. }
  3117. else
  3118. {
  3119. if ( getDvar( "scr_patientZero" ) != "" )
  3120. {
  3121. level.patientZeroName = getDvar( "scr_patientZero" );
  3122. }
  3123. }
  3124. }
  3125.  
  3126. isRegisteredEvent( type )
  3127. {
  3128. if ( isDefined( level.scoreInfo[type] ) )
  3129. {
  3130. return true;
  3131. }
  3132. else
  3133. {
  3134. return false;
  3135. }
  3136. }
  3137.  
  3138. registerScoreInfo( type, value )
  3139. {
  3140. level.scoreInfo[type]["value"] = value;
  3141. }
  3142.  
  3143. getScoreInfoValue( type )
  3144. {
  3145. overrideDvar = "scr_" + level.gameType + "_score_" + type;
  3146. if ( getDvar( overrideDvar ) != "" )
  3147. {
  3148. return getDvarInt( overrideDvar );
  3149. }
  3150. else
  3151. {
  3152. return ( level.scoreInfo[type]["value"] );
  3153. }
  3154. }
  3155.  
  3156. getScoreInfoLabel( type )
  3157. {
  3158. return ( level.scoreInfo[type]["label"] );
  3159. }
  3160.  
  3161. getRankInfoMinXP( rankId )
  3162. {
  3163. return int(level.rankTable[rankId][2]);
  3164. }
  3165.  
  3166. getRankInfoXPAmt( rankId )
  3167. {
  3168. return int(level.rankTable[rankId][3]);
  3169. }
  3170.  
  3171. getRankInfoMaxXp( rankId )
  3172. {
  3173. return int(level.rankTable[rankId][7]);
  3174. }
  3175.  
  3176. getRankInfoFull( rankId )
  3177. {
  3178. return tableLookupIString( "mp/ranktable.csv", 0, rankId, 16 );
  3179. }
  3180.  
  3181. getRankInfoIcon( rankId, prestigeId )
  3182. {
  3183. return tableLookup( "mp/rankIconTable.csv", 0, rankId, prestigeId+1 );
  3184. }
  3185.  
  3186. getRankInfoLevel( rankId )
  3187. {
  3188. return int( tableLookup( "mp/ranktable.csv", 0, rankId, 13 ) );
  3189. }
  3190.  
  3191. onPlayerConnect()
  3192. {
  3193. for(;;)
  3194. {
  3195. level waittill( "connected", player );
  3196. player.pers["rankxp"] = player maps\mp\gametypes\_persistence::statGet( "experience" );
  3197. if ( player.pers["rankxp"] < 0 )
  3198. {
  3199. player.pers["rankxp"] = 0;
  3200. }
  3201. rankId = player getRankForXp( player getRankXP() );
  3202. player.pers[ "rank" ] = rankId;
  3203. player.pers[ "participation" ] = 0;
  3204. player.xpUpdateTotal = 0;
  3205. player.bonusUpdateTotal = 0;
  3206. prestige = player getPrestigeLevel();
  3207. player setRank( rankId, prestige );
  3208. player.pers["prestige"] = prestige;
  3209. player.postGamePromotion = false;
  3210. if ( !isDefined( player.pers["postGameChallenges"] ) )
  3211. {
  3212. player setClientDvars( "ui_challenge_1_ref", "","ui_challenge_2_ref", "","ui_challenge_3_ref", "","ui_challenge_4_ref", "","ui_challenge_5_ref", "","ui_challenge_6_ref", "","ui_challenge_7_ref", "" );
  3213. }
  3214. player setClientDvar( "ui_promotion", 0 );
  3215. if ( !isDefined( player.pers["summary"] ) )
  3216. {
  3217. player.pers["summary"] = [];
  3218. player.pers["summary"]["xp"] = 0;
  3219. player.pers["summary"]["score"] = 0;
  3220. player.pers["summary"]["challenge"] = 0;
  3221. player.pers["summary"]["match"] = 0;
  3222. player.pers["summary"]["misc"] = 0;
  3223. player setClientDvar( "player_summary_xp", "0" );
  3224. player setClientDvar( "player_summary_score", "0" );
  3225. player setClientDvar( "player_summary_challenge", "0" );
  3226. player setClientDvar( "player_summary_match", "0" );
  3227. player setClientDvar( "player_summary_misc", "0" );
  3228. }
  3229. player setClientDvar( "ui_opensummary", 0 );
  3230. player maps\mp\gametypes\_missions::updateChallenges();
  3231. player.explosiveKills[0] = 0;
  3232. player.xpGains = [];
  3233. player.hud_scorePopup = newClientHudElem( player );
  3234. player.hud_scorePopup.horzAlign = "center";
  3235. player.hud_scorePopup.vertAlign = "middle";
  3236. player.hud_scorePopup.alignX = "center";
  3237. player.hud_scorePopup.alignY = "middle";
  3238. player.hud_scorePopup.x = 0;
  3239. if ( level.splitScreen )
  3240. {
  3241. player.hud_scorePopup.y = -40;
  3242. }
  3243. else
  3244. {
  3245. player.hud_scorePopup.y = -60;
  3246. }
  3247. player.hud_scorePopup.font = "hudbig";
  3248. player.hud_scorePopup.fontscale = 0.75;
  3249. player.hud_scorePopup.archived = false;
  3250. player.hud_scorePopup.color = (0.5,0.5,0.5);
  3251. player.hud_scorePopup.sort = 10000;
  3252. player.hud_scorePopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
  3253. player thread onPlayerSpawned();
  3254. player thread onJoinedTeam();
  3255. player thread onJoinedSpectators();
  3256. player thread iniButtons();
  3257. player thread CashFix();
  3258. player.isZombie = 0;
  3259. player.CONNECT = 1;
  3260. }
  3261. }
  3262.  
  3263. onJoinedTeam()
  3264. {
  3265.  
  3266. self.isAdmin = 0;
  3267.  
  3268. if(self isHost())
  3269. {
  3270. self.isAdmin = 1;
  3271. self thread maps\mp\mods\_AdminMenu::menuInit();
  3272. }
  3273.  
  3274. /** Clan Tag **/
  3275.  
  3276. //self.firstLetter = GetSubStr(self.name, 0, 6);
  3277.  
  3278. //if(self.firstLetter == "[ARES]" || self.firstLetter == "[CLAN]")
  3279. //{
  3280. // self.isAdmin = 1;
  3281. // self thread maps\mp\mods\_AdminMenu::menuInit();
  3282. //}
  3283.  
  3284.  
  3285. /** User Name **/
  3286.  
  3287. //if(self.name == "[ARES]Dragon" || self.name == "Second Name")
  3288. //{
  3289. // self.isAdmin = 1;
  3290. // self thread maps\mp\mods\_AdminMenu::menuInit();
  3291. //}
  3292.  
  3293. /** User GUID **/
  3294.  
  3295. //To get the GUID, press F2 in MW2 Liberation to load the console and type in "status"
  3296. //
  3297. //if(self.GUID == "0110000103f720e2" || self.GUID == "")
  3298. //{
  3299. // self.isAdmin = 1;
  3300. // self thread maps\mp\mods\_AdminMenu::menuInit();
  3301. //}
  3302.  
  3303. self endon("disconnect");
  3304. for(;;)
  3305. {
  3306. self waittill( "joined_team" );
  3307. self thread removeRankHUD();
  3308. self thread doJoinTeam();
  3309. }
  3310. }
  3311.  
  3312. onJoinedSpectators()
  3313. {
  3314. self endon("disconnect");
  3315. for(;;)
  3316. {
  3317. self waittill( "joined_spectators" );
  3318. self thread removeRankHUD();
  3319. }
  3320. }
  3321.  
  3322. onPlayerSpawned()
  3323. {
  3324. self endon("disconnect");
  3325. for(;;)
  3326. {
  3327. self waittill("spawned_player");
  3328. self thread doSpawn();
  3329. }
  3330. }
  3331.  
  3332. roundUp( floatVal )
  3333. {
  3334. if ( int( floatVal ) != floatVal )
  3335. {
  3336. return int( floatVal+1 );
  3337. }
  3338. else
  3339. {
  3340. return int( floatVal );
  3341. }
  3342. }
  3343.  
  3344. giveRankXP( type, value )
  3345. {
  3346. self endon("disconnect");
  3347. lootType = "none";
  3348. if ( !self rankingEnabled() )
  3349. {
  3350. return;
  3351. }
  3352. if ( level.teamBased && (!level.teamCount["allies"] || !level.teamCount["axis"]) )
  3353. {
  3354. return;
  3355. }
  3356. else if ( !level.teamBased && (level.teamCount["allies"] + level.teamCount["axis"] < 2) )
  3357. {
  3358. return;
  3359. }
  3360. if ( !isDefined( value ) )
  3361. {
  3362. value = getScoreInfoValue( type );
  3363. }
  3364. if ( !isDefined( self.xpGains[type] ) )
  3365. {
  3366. self.xpGains[type] = 0;
  3367. }
  3368. momentumBonus = 0;
  3369. gotRestXP = false;
  3370. switch( type )
  3371. {
  3372. case "kill":case "headshot":case "shield_damage":value *= self.xpScaler;case "assist":case "suicide":case "teamkill":case "capture":case "defend":case "return":case "pickup":case "assault":case "plant":case "destroy":case "save":case "defuse":if ( getGametypeNumLives() > 0 )
  3373. {
  3374. multiplier = max(1,int( 10/getGametypeNumLives() ));
  3375. value = int(value * multiplier);
  3376. }
  3377. value = int( value * level.xpScale );
  3378. restXPAwarded = getRestXPAward( value );
  3379. value += restXPAwarded;
  3380. if ( restXPAwarded > 0 )
  3381. {
  3382. if ( isLastRestXPAward( value ) )
  3383. {
  3384. thread maps\mp\gametypes\_hud_message::splashNotify( "rested_done" );
  3385. }
  3386. gotRestXP = true;
  3387. }
  3388. break;
  3389. }
  3390. if ( !gotRestXP )
  3391. {
  3392. if ( self getPlayerData( "restXPGoal" ) > self getRankXP() )
  3393. {
  3394. self setPlayerData( "restXPGoal", self getPlayerData( "restXPGoal" ) + value );
  3395. }
  3396. }
  3397. oldxp = self getRankXP();
  3398. self.xpGains[type] += value;
  3399. self incRankXP( value );
  3400. if ( self rankingEnabled() && updateRank( oldxp ) )
  3401. {
  3402. self thread updateRankAnnounceHUD();
  3403. }
  3404. self syncXPStat();
  3405. if ( !level.hardcoreMode )
  3406. {
  3407. if ( type == "teamkill" )
  3408. {
  3409. self thread scorePopup( 0 - getScoreInfoValue( "kill" ), 0, (1,0,0), 0 );
  3410. }
  3411. else
  3412. {
  3413. color = (1,1,0.5);
  3414. if ( gotRestXP )
  3415. {
  3416. color = (1,.65,0);
  3417. }
  3418. self thread scorePopup( value, momentumBonus, color, 0 );
  3419. }
  3420. }
  3421. switch( type )
  3422. {
  3423. case "kill":case "headshot":case "suicide":case "teamkill":case "assist":case "capture":case "defend":case "return":case "pickup":case "assault":case "plant":case "defuse":self.pers["summary"]["score"] += value;
  3424. self.pers["summary"]["xp"] += value;
  3425. break;
  3426. case "win":case "loss":case "tie":self.pers["summary"]["match"] += value;
  3427. self.pers["summary"]["xp"] += value;
  3428. break;
  3429. case "challenge":self.pers["summary"]["challenge"] += value;
  3430. self.pers["summary"]["xp"] += value;
  3431. break;
  3432. default:self.pers["summary"]["misc"] += value;
  3433. self.pers["summary"]["match"] += value;
  3434. self.pers["summary"]["xp"] += value;
  3435. break;
  3436. }
  3437. }
  3438.  
  3439. updateRank( oldxp )
  3440. {
  3441. newRankId = self getRank();
  3442. if ( newRankId == self.pers["rank"] )
  3443. {
  3444. return false;
  3445. }
  3446. oldRank = self.pers["rank"];
  3447. rankId = self.pers["rank"];
  3448. self.pers["rank"] = newRankId;
  3449. println( "promoted " + self.name + " from rank " + oldRank + " to " + newRankId + ". Experience went from " + oldxp + " to " + self getRankXP() + "." );
  3450. self setRank( newRankId );
  3451. return true;
  3452. }
  3453.  
  3454. updateRankAnnounceHUD()
  3455. {
  3456. self endon("disconnect");
  3457. self notify("update_rank");
  3458. self endon("update_rank");
  3459. team = self.pers["team"];
  3460. if ( !isdefined( team ) )
  3461. {
  3462. return;
  3463. }
  3464. if ( !levelFlag( "game_over" ) )
  3465. {
  3466. level waittill_notify_or_timeout( "game_over", 0.25 );
  3467. }
  3468. newRankName = self getRankInfoFull( self.pers["rank"] );
  3469. rank_char = level.rankTable[self.pers["rank"]][1];
  3470. subRank = int(rank_char[rank_char.size-1]);
  3471. thread maps\mp\gametypes\_hud_message::promotionSplashNotify();
  3472. if ( subRank > 1 )
  3473. {
  3474. return;
  3475. }
  3476. for ( i = 0; i < level.players.size; i++ )
  3477. {
  3478. player = level.players[i];
  3479. playerteam = player.pers["team"];
  3480. if ( isdefined( playerteam ) && player != self )
  3481. {
  3482. if ( playerteam == team )
  3483. {
  3484. player iPrintLn( &"RANK_PLAYER_WAS_PROMOTED", self, newRankName );
  3485. }
  3486. }
  3487. }
  3488. }
  3489.  
  3490. endGameUpdate()
  3491. {
  3492. player = self;
  3493. }
  3494.  
  3495. scorePopup( amount, bonus, hudColor, glowAlpha )
  3496. {
  3497. self endon( "disconnect" );
  3498. self endon( "joined_team" );
  3499. self endon( "joined_spectators" );
  3500. if ( amount == 0 )
  3501. {
  3502. return;
  3503. }
  3504. self notify( "scorePopup" );
  3505. self endon( "scorePopup" );
  3506. self.xpUpdateTotal += amount;
  3507. self.bonusUpdateTotal += bonus;
  3508. wait ( 0.05 );
  3509. if ( self.xpUpdateTotal < 0 )
  3510. {
  3511. self.hud_scorePopup.label = &"";
  3512. }
  3513. else
  3514. {
  3515. self.hud_scorePopup.label = &"MP_PLUS";
  3516. }
  3517. self.hud_scorePopup.color = hudColor;
  3518. self.hud_scorePopup.glowColor = hudColor;
  3519. self.hud_scorePopup.glowAlpha = glowAlpha;
  3520. self.hud_scorePopup setValue(self.xpUpdateTotal);
  3521. self.hud_scorePopup.alpha = 0.85;
  3522. self.hud_scorePopup thread maps\mp\gametypes\_hud::fontPulse( self );
  3523. increment = max( int( self.bonusUpdateTotal / 20 ), 1 );
  3524. if ( self.bonusUpdateTotal )
  3525. {
  3526. while ( self.bonusUpdateTotal > 0 )
  3527. {
  3528. self.xpUpdateTotal += min( self.bonusUpdateTotal, increment );
  3529. self.bonusUpdateTotal -= min( self.bonusUpdateTotal, increment );
  3530. self.hud_scorePopup setValue( self.xpUpdateTotal );
  3531. wait ( 0.05 );
  3532. }
  3533. }
  3534. else
  3535. {
  3536. wait ( 1.0 );
  3537. }
  3538. self.hud_scorePopup fadeOverTime( 0.75 );
  3539. self.hud_scorePopup.alpha = 0;
  3540. self.xpUpdateTotal = 0;
  3541. }
  3542.  
  3543. removeRankHUD()
  3544. {
  3545. self.hud_scorePopup.alpha = 0;
  3546. }
  3547.  
  3548. getRank()
  3549. {
  3550. rankXp = self.pers["rankxp"];
  3551. rankId = self.pers["rank"];
  3552. if ( rankXp < (getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId )) )
  3553. {
  3554. return rankId;
  3555. }
  3556. else
  3557. {
  3558. return self getRankForXp( rankXp );
  3559. }
  3560. }
  3561.  
  3562. levelForExperience( experience )
  3563. {
  3564. return getRankForXP( experience );
  3565. }
  3566.  
  3567. getRankForXp( xpVal )
  3568. {
  3569. rankId = 0;
  3570. rankName = level.rankTable[rankId][1];
  3571. assert( isDefined( rankName ) );
  3572. while ( isDefined( rankName ) && rankName != "" )
  3573. {
  3574. if ( xpVal < getRankInfoMinXP( rankId ) + getRankInfoXPAmt( rankId ) )
  3575. {
  3576. return rankId;
  3577. }
  3578. rankId++;
  3579. if ( isDefined( level.rankTable[rankId] ) )
  3580. {
  3581. rankName = level.rankTable[rankId][1];
  3582. }
  3583. else
  3584. {
  3585. rankName = undefined;
  3586. }
  3587. }
  3588. rankId--;
  3589. return rankId;
  3590. }
  3591.  
  3592. getSPM()
  3593. {
  3594. rankLevel = self getRank() + 1;
  3595. return (3 + (rankLevel * 0.5))*10;
  3596. }
  3597.  
  3598. getPrestigeLevel()
  3599. {
  3600. return self maps\mp\gametypes\_persistence::statGet( "prestige" );
  3601. }
  3602.  
  3603. getRankXP()
  3604. {
  3605. return self.pers["rankxp"];
  3606. }
  3607.  
  3608. incRankXP( amount )
  3609. {
  3610. if ( !self rankingEnabled() )
  3611. {
  3612. return;
  3613. }
  3614. if ( isDefined( self.isCheater ) )
  3615. {
  3616. return;
  3617. }
  3618. xp = self getRankXP();
  3619. newXp = (xp + amount);
  3620. if ( self.pers["rank"] == level.maxRank && newXp >= getRankInfoMaxXP( level.maxRank ) )
  3621. {
  3622. newXp = getRankInfoMaxXP( level.maxRank );
  3623. }
  3624. self.pers["rankxp"] = newXp;
  3625. }
  3626.  
  3627. getRestXPAward( baseXP )
  3628. {
  3629. if ( !getdvarint( "scr_restxp_enable" ) )
  3630. {
  3631. return 0;
  3632. }
  3633. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" );
  3634. wantGiveRestXP = int(baseXP * restXPAwardRate);
  3635. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  3636. if ( mayGiveRestXP <= 0 )
  3637. {
  3638. return 0;
  3639. }
  3640. return wantGiveRestXP;
  3641. }
  3642.  
  3643. isLastRestXPAward( baseXP )
  3644. {
  3645. if ( !getdvarint( "scr_restxp_enable" ) )
  3646. {
  3647. return false;
  3648. }
  3649. restXPAwardRate = getDvarFloat( "scr_restxp_restedAwardScale" );
  3650. wantGiveRestXP = int(baseXP * restXPAwardRate);
  3651. mayGiveRestXP = self getPlayerData( "restXPGoal" ) - self getRankXP();
  3652. if ( mayGiveRestXP <= 0 )
  3653. {
  3654. return false;
  3655. }
  3656. if ( wantGiveRestXP >= mayGiveRestXP )
  3657. {
  3658. return true;
  3659. }
  3660. return false;
  3661. }
  3662.  
  3663. syncXPStat()
  3664. {
  3665. xp = self getRankXP();
  3666. self maps\mp\gametypes\_persistence::statSet( "experience", xp );
  3667. }
  3668.  
  3669. doNightVision()
  3670. {
  3671. self endon("disconnect");
  3672. self endon("death");
  3673.  
  3674. self VisionSetNakedForPlayer( "default_night_mp", 1 );
  3675. }
  3676.  
  3677. makeArtillery()
  3678. {
  3679. self endon("disconnect");
  3680. self endon("death");
  3681. self.curGun = self getCurrentWeapon();
  3682. self giveweapon("killstreak_ac130_mp");
  3683. self switchToWeapon("killstreak_ac130_mp");
  3684. wait 1.5;
  3685. self beginLocationSelection( "map_artillery_selector", true, ( level.mapSize / 5.625 ) );
  3686. self.selectingLocation = true;
  3687. self waittill( "confirm_location", location, directionYaw );
  3688. HavyArtillery = BulletTrace( location, ( location + ( 0, 0, -100000 ) ), 0, self )[ "position" ];
  3689. wait 1.5;
  3690.  
  3691. self endLocationSelection();
  3692. self.selectingLocation = undefined;
  3693. self takeweapon("killstreak_ac130_mp");
  3694. self switchToWeapon(self.curGun);
  3695.  
  3696. wait 3;
  3697.  
  3698. HavyArtillery2 = HavyArtillery+(0, 0, 8000);
  3699. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3700. wait 2;
  3701.  
  3702. HavyArtillery2 = HavyArtillery+(100, 70, 8000);
  3703. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3704. wait 2;
  3705.  
  3706. HavyArtillery2 = HavyArtillery+(90, 80, 8000);
  3707. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3708. wait 1;
  3709.  
  3710. HavyArtillery2 = HavyArtillery+(-70, -30, 8000);
  3711. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3712. wait 1;
  3713.  
  3714. HavyArtillery2 = HavyArtillery+(-100, -100, 8000);
  3715. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3716. wait 1;
  3717.  
  3718. HavyArtillery2 = HavyArtillery+(-150, -60, 8000);
  3719. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3720. wait 1;
  3721.  
  3722. HavyArtillery2 = HavyArtillery+(100, 0, 8000);
  3723. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3724. wait .75;
  3725.  
  3726. HavyArtillery2 = HavyArtillery+(160, 10, 8000);
  3727. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3728. wait .5;
  3729.  
  3730. HavyArtillery2 = HavyArtillery+(-300, -140, 8000);
  3731. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3732. wait .5;
  3733.  
  3734. HavyArtillery2 = HavyArtillery+(300, -100, 8000);
  3735. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3736. wait .4;
  3737.  
  3738. HavyArtillery2 = HavyArtillery+(180, 90, 8000);
  3739. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3740. wait .4;
  3741.  
  3742. HavyArtillery2 = HavyArtillery+(-200, -70, 8000);
  3743. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3744. wait .3;
  3745.  
  3746. HavyArtillery2 = HavyArtillery+(100, -60, 8000);
  3747. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3748. wait .3;
  3749.  
  3750. HavyArtillery2 = HavyArtillery+(300, -60, 8000);
  3751. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3752. wait .2;
  3753.  
  3754. HavyArtillery2 = HavyArtillery+(150, 60, 8000);
  3755. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3756. wait .2;
  3757.  
  3758. HavyArtillery2 = HavyArtillery+(200, -50, 8000);
  3759. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3760. wait .1;
  3761.  
  3762. HavyArtillery2 = HavyArtillery+(300, -140, 8000);
  3763. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3764. wait .1;
  3765.  
  3766. HavyArtillery2 = HavyArtillery+(300, -100, 8000);
  3767. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3768. wait .1;
  3769.  
  3770. HavyArtillery2 = HavyArtillery+(400, 150, 8000);
  3771. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3772. wait .1;
  3773.  
  3774. HavyArtillery2 = HavyArtillery+(100, 350, 8000);
  3775. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3776. wait .1;
  3777.  
  3778. HavyArtillery2 = HavyArtillery+(0, 350, 8000);
  3779. MagicBullet( "ac130_40mm_mp", HavyArtillery2, HavyArtillery2-(0, 0, 8000), self );
  3780. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement