Advertisement
Guest User

Untitled

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