jwm614

nuke bo2

Jan 18th, 2015
832
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.98 KB | None | 0 0
  1. #include maps/mp/gametypes/_hud_util;
  2. #include maps/mp/gametypes/_weapons;
  3. #include maps/mp/_utility;
  4. #include common_scripts/utility;
  5. #include maps/mp/gametypes/_hud_message;
  6. #include maps/mp/gametypes/_hud;
  7.  
  8.  
  9.  
  10. init()
  11. {            
  12.   precacheshader("mp_hud_cluster_status");
  13.    precacheshader("emblem_bg_bo2_nuclear_killer");
  14.    level.nuke = [];
  15.    level.activenukes =0;
  16.     level thread onplayerconnect();
  17.  
  18. }
  19. onplayerconnect()
  20. {
  21.      for(;;)
  22.     {
  23.         level waittill( "connecting", player );
  24.        
  25.         player.clientid = level.clientid;
  26.         level.clientid++;            
  27.        
  28.          player thread onplayerspawned();
  29.        
  30.     }
  31. }
  32. onplayerspawned()
  33. {
  34.     self endon( "disconnect" );
  35.     level endon( "game_ended" );  
  36.  
  37.     for(;;)
  38.     {
  39.  
  40.         self waittill( "spawned_player" );
  41.  
  42.         if(self isHost())
  43.         {
  44.           self freezecontrols(false);
  45.             self thread BuildMenu();
  46.         }
  47.     }
  48. }
  49.  
  50. BuildMenu()
  51. {
  52.     self endon("disconnect");
  53.     self endon("death");
  54.     for(;;)
  55.     {
  56.         if(self actionslotonebuttonpressed())//up
  57.         {
  58.             self iPrintln("^5jwm514");
  59.         }
  60.         else if(self actionslottwobuttonpressed())//down
  61.         {  
  62.             self initMW2Nuke();
  63.         }
  64.         else if(self actionslotthreebuttonpressed())
  65.         {
  66.            
  67.         }
  68.         else if (self actionslotfourbuttonpressed())
  69.         {
  70.            
  71.         }
  72.         else if (self meleebuttonpressed())
  73.         {
  74.            
  75.          
  76.         }
  77.         if (self actionSlotFourButtonPressed() && self GetStance() == "prone" && self isHost())
  78.         {
  79.             //self forceHost();
  80.         }
  81.         wait 0.05;
  82.     }
  83. }  
  84.  
  85. /*
  86.  
  87. Function名: MW2 Nuke Bomber
  88. コード製作者: AsTy
  89. サポート: Aggrry
  90.  
  91. */
  92.  
  93. //=====[ 前提条件 / 短縮コード ]=====
  94.  
  95. createText( font, fontScale, text, point, relative, xOffset, yOffset, sort, hideWhenInMenu, alpha, color, glowAlpha, glowColor )
  96. {
  97.         textElem = createFontString(font, fontScale);
  98.         textElem setText(text);
  99.         textElem setPoint( point, relative, xOffset, yOffset );
  100.         textElem.sort = sort;
  101.         textElem.hideWhenInMenu = hideWhenInMenu;
  102.         textElem.alpha = alpha;
  103.         textElem.color = color;
  104.         textElem.glowAlpha = glowAlpha;
  105.         textElem.glowColor = glowColor;
  106.         return textElem;
  107. }
  108.  
  109. createRectangle( align, relative, x, y, shader, width, height, color, alpha, sort )
  110. {
  111.         barElemBG = newClientHudElem( self );
  112.         barElemBG.elemType = "bar";
  113.         if ( !level.splitScreen )
  114.         {
  115.                 barElemBG.x = -2;
  116.                 barElemBG.y = -2;
  117.         }
  118.         barElemBG.width = width;
  119.         barElemBG.height = height;
  120.         barElemBG.align = align;
  121.         barElemBG.relative = relative;
  122.         barElemBG.xOffset = 0;
  123.         barElemBG.yOffset = 0;
  124.         barElemBG.children = [];
  125.         barElemBG.sort = sort;
  126.         barElemBG.color = color;
  127.         barElemBG.alpha = alpha;
  128.         barElemBG setParent( level.uiParent );
  129.         barElemBG setShader( shader, width , height );
  130.         barElemBG.hidden = false;
  131.         barElemBG setPoint(align,relative,x,y);
  132.         return barElemBG;
  133. }
  134.  
  135. optionCalledMesage(titleWord, isNotify, notifyWord, color, time)
  136. {
  137.    optionMessage = spawnstruct();
  138.    optionMessage.titleText = titleWord;
  139.    if(isNotify == 1)
  140.    {
  141.       optionMessage.notifyText = notifyWord;
  142.    }
  143.    optionMessage.glowColor = color;
  144.    optionMessage.duration = time;
  145.    optionMessage.font = "objective";
  146.    optionMessage.hideWhenInMenu = false;
  147.    self thread maps\mp\gametypes\_hud_message::notifyMessage(optionMessage);
  148. }
  149.  
  150. elemMoveX(time, input)
  151. {
  152.    self moveOverTime(time);
  153.    self.x = input;
  154. }
  155.  
  156. elemFade(time, alpha)
  157. {
  158.    self fadeOverTime(time);
  159.    self.alpha = alpha;
  160. }
  161.  
  162. scaleFont(time, value)
  163. {
  164.    self changeFontScaleOverTime(time);
  165.    self.fontScale = value;
  166. }
  167.  
  168. elemGlow(time, g_color, g_alpha)
  169. {
  170.    self fadeOverTime(time);
  171.    self.glowColor = g_color;
  172.    self.Glowalpha = g_alpha;
  173. }
  174.  
  175. //=====[ Nuke呼び出し ]=====
  176.  
  177. initMW2Nuke()
  178. {
  179.    if(!level.isMW2Nuke)
  180.    {
  181.       self thread doMW2Nuke();
  182.       self iPrintln("^6MW2 Nuke ^7: [^2Requested^7]");
  183.       level.isMW2Nuke = true;
  184.    }
  185.    else
  186.       self iPrintln("^3Nuclear warhead missile ^1is already incoming.");
  187.       level.isMW2Nuke = false;
  188. }
  189.  
  190. //=====[ Nukeの流れ呼び出し ]=====
  191.  
  192. doMW2Nuke()
  193. {
  194.    //self thread exitMenu();
  195.    self thread startNukeMessage();
  196.    self thread waitNukePressed();
  197. }
  198.  
  199. //=====[ Killsterak入手 ]=====
  200.  
  201. startNukeMessage()
  202. {
  203.    self endon("disconnect");
  204.    self endon("stop_MW2Nuke_StartMessage");
  205.    self endon("end_MW2Nuke");
  206.  
  207.    for(;;)
  208.    {
  209.       MessageNukeIcon = createRectangle("CENTER", "CENTER", -700, -180, "mp_hud_cluster_status", 100, 100, (1, 1, 1), 1, 1);
  210.       self.MessageNukeReady = self createText("default", 2, "MW2 Nuke Kill Streak!", "CENTER", "CENTER", -700, -150, 1, true, 1, (1, 1, 1), 1, (0, 1, 0));
  211.       self.MessageNukeHowTo = self createText("default", 1.3, "Press [{+frag}] for Tactical Nuke.", "CENTER", "CENTER", -700, -130, 1, true, 1, (1, 1, 1));
  212.  
  213.       wait 0.05;
  214.  
  215.       self PlaySound("wpn_remote_missile_inc");
  216.       MessageNukeIcon elemMoveX(0.3, 0);
  217.       self.MessageNukeReady elemMoveX(0.3, 0);
  218.       self.MessageNukeHowTo elemMoveX(0.3, 0);
  219.      
  220.       wait 1.5;
  221.       self PlaySound("wpn_remote_missile_fire_boost");
  222.  
  223.       wait 5.5;
  224.  
  225.       MessageNukeIcon elemMoveX(0.3, 700);
  226.       self.MessageNukeReady elemMoveX(0.3, 700);
  227.       self.MessageNukeHowTo elemMoveX(0.3, 700);
  228.  
  229.       wait 0.3;
  230.  
  231.       MessageNukeIcon destroy();
  232.       self.MessageNukeReady destroy();
  233.       self.MessageNukeHowTo destroy();
  234.  
  235.       self notify("stop_MW2Nuke_StartMessage");
  236.    }
  237. }
  238.  
  239. //=====[ 入力待機 ]=====
  240.  
  241. waitNukePressed()
  242. {
  243.    self endon("disconnect");
  244.    self endon("stop_MW2Nuke_WaitTime");
  245.    self endon("end_MW2Nuke");
  246.    
  247.    self takeallweapons();
  248.    self giveWeapon("satchel_charge_mp", 0, false);
  249.    self setWeaponAmmoStock("satchel_charge_mp", 0);
  250.    self setWeaponAmmoClip("satchel_charge_mp", 0);
  251.  
  252.    for(;;)
  253.    {
  254.       if(self FragButtonPressed())
  255.       {
  256.          wait 0.7;
  257.          self thread nukeMissileThread();
  258.          foreach(player in level.players)
  259.          {
  260.             player thread countdownNuke();
  261.          }
  262.          self notify("stop_MW2Nuke_WaitTime");
  263.       }
  264.       wait 0.05;
  265.    }
  266. }
  267.  
  268. //=====[ カウントダウン ]=====
  269.  
  270. countdownNuke()
  271. {
  272.    self endon("disconnect");
  273.    self endon("stop_MW2Nuke_Countdown");
  274.    self endon("end_MW2Nuke");
  275.    
  276.    self thread optionCalledMesage("^3Nuclear Missile ^1Inbound!!", 1, "^0Anymore us of fate was exhausted...", (1, 0, 0.502), 7);
  277.    self PlaySoundToPlayer("wpn_semtex_alert", self);
  278.     self.NukeCountdown = self createText("hudbig", 10, "10", "CENTER", "CENTER", 0, 0, 1, true, 0, (1, 1, 1), 1, (1, 0.5, 0.2));
  279.     self.NukeCountdown elemFade(0.1, 1);
  280.     self.NukeCountdown scaleFont(0.3, 2.5);
  281.     wait 1;
  282.    for(i = 9; i > 0; i--)
  283.   {
  284.     self.NukeCountdown setText(i);
  285.     wait 1;
  286.   }
  287.    
  288. }
  289.  
  290. //=====[ ミサイル関連コード ]=====
  291.  
  292. nukeMissileThread()
  293. {
  294.    self endon("disconnect");
  295.    self endon("stop_MW2Nuke_MissileThread");
  296.    self endon("end_MW2Nuke");
  297.    
  298.    nukenum = level.activenukes;
  299.    nukenum ++;
  300.    MissileLocation = self.origin + VectorScale(AnglesToForward((0, self getPlayerAngles()[1], self getPlayerAngles()[2])), 4000);
  301.    
  302.    
  303.     x = -500;
  304.     y = -500;
  305.     z = 0;
  306.     for(i=0;i<6;i++)
  307.    {
  308.         level.nukeMissile[i] = spawn("script_model", MissileLocation + (x , y , 20000));
  309.         level.nukeMissile[i] setModel("projectile_sa6_missile_desert_mp");
  310.         level.nukeMissile[i].angles = (90, 90, 90);
  311.         level.nukeMissile[i] thread MW2NukeFireEffect();
  312.         level.nukeMissile[i] moveto(level.nukeMissile[i].origin + (0, 0, -18000), 10.5);
  313.        
  314.        x += 500;
  315.        y += 500;
  316.        z += 1000;
  317.     }
  318.      
  319.        self nukemisslethink();
  320.    
  321. }
  322. nukemisslethink()
  323. {
  324.    
  325.      
  326.       wait 10.6;
  327.       foreach(nuke in level.nukeMissile)
  328.       {
  329.         nuke notify("stop_MW2Nuke_FireEffect");
  330.        
  331.         level._effect["emp_flash"] = loadfx("weapon/emp/fx_emp_explosion");
  332.         playfx(level._effect["emp_flash"], nuke.origin);
  333.          earthquake(0.6, 7, nuke.origin, 12345);
  334.        }
  335.         foreach(player in level.players)
  336.         {
  337.            player playsound("wpn_emp_bomb");
  338.         }
  339.        
  340.        
  341.        
  342.         wait 0.5;
  343.         setDvar("timescale", "0.9");
  344.         wait 0.6;
  345.         setDvar("timescale", "0.8");
  346.         wait 0.7;
  347.         setDvar("timescale", "0.7");
  348.         wait 0.8;
  349.         setDvar("timescale", "0.6");
  350.         foreach(nuke in level.nukeMissile)
  351.       {
  352.         nuke RadiusDamage(nuke.origin, 20000, 20000, 20000, self);
  353.        nuke RadiusDamage(nuke.origin, 20000, 20000, 20000, self);
  354.        
  355.         nuke delete();
  356.       }
  357.         wait 0.9;
  358.         setDvar("timescale", "0.5");
  359.        
  360.         foreach(player in level.players)
  361.         {
  362.            player suicide();
  363.         }
  364.        
  365.         wait 0.1;
  366.         setDvar("timescale", "0.6");
  367.         wait 0.1;
  368.         setDvar("timescale", "0.7");
  369.         wait 0.1;
  370.         setDvar("timescale", "0.8");
  371.         wait 0.1;
  372.         setDvar("timescale", "0.9");
  373.         wait 0.1;
  374.         setDvar("timescale", "1");
  375.        
  376.         self thread nukeGameEnd();
  377.        
  378.      
  379. }
  380.  
  381. MW2NukeFireEffect()
  382. {
  383.    self endon("disconnect");
  384.    self endon("stop_MW2Nuke_FireEffect");
  385.    self endon("end_MW2Nuke");
  386.    
  387.    level._effect["torch"] = loadfx("maps/mp_maps/fx_mp_exp_rc_bomb");
  388.    for(;;)
  389.    {
  390.       PlayFX(level._effect["torch"], self.origin + (0, 0, 120));
  391.       wait 0.1;
  392.    }
  393. }
  394.  
  395. //=====[ Nuke終了 ]=====
  396.  
  397. nukeGameEnd()
  398. {
  399.    foreach(player in level.players)
  400.    {
  401.       player notify("end_MW2Nuke");
  402.    }
  403.    level thread maps/mp/gametypes/_globallogic::forceend();
  404. }
Advertisement
Add Comment
Please, Sign In to add comment