ZeiiKeN

[GSC - Script ] Black Ops 2 - Secret Room Zombie Mode

Mar 6th, 2015
2,096
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.63 KB | None | 0 0
  1. /*
  2. *    Black Ops 2 - Secret Room Script For Zombie Mode
  3. *
  4. *    Creator : ZeiiKeN
  5. *    Maps Working : Tranzit, ville, ferme
  6. *    Credits : ZeiiKeN ( Creator Script ), George ( Scripts Base for zombie mode cod5 ), iMCSx ( GSC Studio )
  7. *    Version : 1.0.0
  8. *
  9. */ 
  10.  
  11. #include maps/mp/_utility;
  12. #include common_scripts/utility;
  13. #include maps/mp/gametypes_zm/_hud_util;
  14. #include maps/mp/_utility;
  15. #include maps/mp/zombies/_zm_utility;
  16. #include maps/mp/gametypes_zm/_weapons;
  17.  
  18. init()
  19. {
  20.     level thread onPlayerConnect();
  21.     RoomInit();
  22. }
  23.  
  24. onPlayerConnect()
  25. {
  26.     for(;;)
  27.     {
  28.         level waittill("connected", player);
  29.         player thread onPlayerSpawned();
  30.     }
  31. }
  32.  
  33. onPlayerSpawned()
  34. {
  35.     self endon("disconnect");
  36.     level endon("game_ended");
  37.     for(;;)
  38.     {
  39.         self waittill("spawned_player");
  40.         self InitialiseSecretRoom(); // Spawn Secret Room
  41.         self.score+=21473140; // Max Money
  42.     }
  43. }
  44.  
  45. RoomInit()
  46. {
  47.     PrecacheModel("p6_anim_zm_magic_box");
  48.     PrecacheModel("p_zom_clock_town");
  49.     PrecacheModel("zombie_vending_jugg");
  50.     PrecacheModel("zm_collision_perks1");
  51.     PrecacheModel("zombie_vending_sleight");
  52.     PrecacheModel("zombie_vending_revive");
  53.     PrecacheModel("zombie_vending_doubletap2");
  54.     PrecacheModel("zombie_bomb");
  55.     PrecacheModel("zombie_ammocan");
  56.     PrecacheModel("zombie_x2_icon");
  57.     PrecacheModel("zombie_skull");
  58.     setdvar("ai_showFailedPaths",0);
  59.     if(isDefined(level.player_out_of_playable_area_monitor))
  60.     level.player_out_of_playable_area_monitor = false;
  61. }
  62.  
  63. InitialiseSecretRoom()
  64. {
  65.     level.RoomTeleportBase = self.origin;
  66.     self thread RoomTeleporter1();
  67.     self thread RoomTeleporter2();
  68.     self thread RoomMagicBox();
  69.     self RoomWeapons();
  70.     self RoomsPerks();
  71.     self thread RoomNuke();
  72.     self thread RoomMaxAmmo();
  73.     self thread RoomDoublePoints();
  74.     self thread RoomInstantKills();
  75. }
  76.  
  77. RoomNuke()
  78. {
  79.     level thread LowerMessage( "Room Nuke Bomb", "Press [{+usereload}] For Send Nuke Bomb [Cost: 500 ]" );
  80.     level.RoomBomb = spawn( "script_model", (13753, -629.845, -148.875));
  81.     level.RoomBomb setModel("zombie_bomb");
  82.     level.RoomBomb rotateTo((0, 0, 90), .1);
  83.     level.RoomBomb2 = spawn( "trigger_radius", (13753, -629.845, -148.875), 1, 50, 10 );
  84.     level.RoomBomb2 SetCursorHint( "HINT_NOICON" );
  85.     level.RoomBomb2 UseTriggerRequireLookAt();
  86.     level.RoomBomb2 setLowerMessage( level.RoomBomb2, "Room Nuke Bomb" );
  87.     for(;;)
  88.     {
  89.         level.RoomBomb2 waittill( "trigger", i );
  90.         if( i UseButtonPressed()  && i.score >= 500 && i.BombSend == false)
  91.         {
  92.             i.score -= 500;
  93.             i.BombSend = true;
  94.             i doPNuke();
  95.             wait(4);
  96.             i.BombSend = false;
  97.            
  98.         }
  99.     }
  100. }
  101.  
  102. RoomMaxAmmo()
  103. {
  104.     level thread LowerMessage( "Room Max Ammo", "Press [{+usereload}] For Max Ammo [Cost: 500 ]" );
  105.     level.RoomAmmo = spawn( "script_model", (13753, -549.845, -148.875));
  106.     level.RoomAmmo setModel("zombie_ammocan");
  107.     level.RoomAmmo rotateTo((0, 0, 90), .1);
  108.     level.RoomAmmo2 = spawn( "trigger_radius", (13753, -549.845, -148.875), 1, 50, 10 );
  109.     level.RoomAmmo2 SetCursorHint( "HINT_NOICON" );
  110.     level.RoomAmmo2 UseTriggerRequireLookAt();
  111.     level.RoomAmmo2 setLowerMessage( level.RoomAmmo2, "Room Max Ammo" );
  112.     for(;;)
  113.     {
  114.         level.RoomAmmo2 waittill( "trigger", i );
  115.         if( i UseButtonPressed()  && i.score >= 500 && i.MaxAm == false)
  116.         {
  117.             i.score -= 500;
  118.             i.MaxAm = true;
  119.             i doPMAmmo();
  120.             wait(4);
  121.             i.MaxAm = false;
  122.            
  123.         }
  124.     }
  125. }
  126.  
  127. RoomDoublePoints()
  128. {
  129.     level thread LowerMessage( "Room Double Points", "Press [{+usereload}] For Double Points [Cost: 500 ]" );
  130.     level.RoomDoubleP = spawn( "script_model", (13753, -499.845, -148.875));
  131.     level.RoomDoubleP setModel("zombie_x2_icon");
  132.     level.RoomDoubleP rotateTo((0, 0, 0), .1);
  133.     level.RoomDoubleP2 = spawn( "trigger_radius", (13753, -499.845, -148.875), 1, 50, 10 );
  134.     level.RoomDoubleP2 SetCursorHint( "HINT_NOICON" );
  135.     level.RoomDoubleP2 UseTriggerRequireLookAt();
  136.     level.RoomDoubleP2 setLowerMessage( level.RoomDoubleP2, "Room Double Points" );
  137.     for(;;)
  138.     {
  139.         level.RoomDoubleP2 waittill( "trigger", i );
  140.         if( i UseButtonPressed()  && i.score >= 500 && i.MaxP == false)
  141.         {
  142.             i.score -= 500;
  143.             i.MaxP = true;
  144.             i doPDoublePoints();
  145.             wait(4);
  146.             i.MaxP = false;
  147.            
  148.         }
  149.     }
  150. }
  151.  
  152. RoomInstantKills()
  153. {
  154.     level thread LowerMessage( "Room Double Points", "Press [{+usereload}] For Insta Kill [Cost: 500 ]" );
  155.     level.RoomIntKills = spawn( "script_model", (13753, -439.845, -148.875));
  156.     level.RoomIntKills setModel("zombie_skull");
  157.     level.RoomIntKills rotateTo((0, 0, 0), .1);
  158.     level.RoomIntKills2 = spawn( "trigger_radius", (13753, -439.845, -148.875), 1, 50, 10 );
  159.     level.RoomIntKills2 SetCursorHint( "HINT_NOICON" );
  160.     level.RoomIntKills2 UseTriggerRequireLookAt();
  161.     level.RoomIntKills2 setLowerMessage( level.RoomIntKills2, "Room Double Points" );
  162.     for(;;)
  163.     {
  164.         level.RoomIntKills2 waittill( "trigger", i );
  165.         if( i UseButtonPressed()  && i.score >= 500 && i.IntKills == false)
  166.         {
  167.             i.score -= 500;
  168.             i.IntKills = true;
  169.             i doPInstaKills();
  170.             wait(4);
  171.             i.IntKills = false;
  172.            
  173.         }
  174.     }
  175. }
  176.  
  177. RoomTeleporter1()
  178. {
  179.     level thread LowerMessage( "Room Teleporter 1", "Press [{+usereload}] To Teleport To The Secret Room [Cost: 2500 ]" );
  180.     level.ModelTeleporter = spawn( "script_model", level.RoomTeleportBase);
  181.     level.ModelTeleporter setModel("p_zom_clock_town");
  182.     level.ModelTeleporter rotateTo((0, 0, 90), .1);
  183.     playfx( loadfx( "misc/fx_zombie_powerup_on" ), level.RoomTeleportBase );
  184.     level.RoomTeleporter1 = spawn( "trigger_radius", level.RoomTeleportBase, 1, 50, 10 );
  185.     level.RoomTeleporter1 SetCursorHint( "HINT_NOICON" );
  186.     level.RoomTeleporter1 UseTriggerRequireLookAt();
  187.     level.RoomTeleporter1 setLowerMessage( level.RoomTeleporter1, "Room Teleporter 1" );
  188.     for(;;)
  189.     {
  190.         level.RoomTeleporter1 waittill( "trigger", i );
  191.         if( i UseButtonPressed()  && i.score >= 2500 && i.TeleportNotPossible == false)
  192.         {
  193.             i.score -= 2500;
  194.             i SetOrigin((13730.9, -956.575, -189.875));
  195.             i iprintln("^1W^7elcome ^1T^7o ^1S^7ecret ^1R^7oom ^1!");
  196.             i.ignoreme=1;
  197.             i.TeleportNotPossible = true;
  198.             wait(5);
  199.             i.TeleportNotPossible = false;
  200.         }
  201.     }
  202. }
  203.  
  204. RoomTeleporter2()
  205. {
  206.     level thread LowerMessage( "Room Teleporter 2", "Press [{+usereload}] For Exit The Secret Room" );
  207.     level.ModelTeleporter2 = spawn( "script_model", (13730.9, -956.575, -189.875));
  208.     level.ModelTeleporter2 setModel("p_zom_clock_town");
  209.     level.ModelTeleporter2 rotateTo((0, 0, 90), .1);
  210.     playfx( loadfx( "misc/fx_zombie_powerup_on" ), (13730.9, -966.575, -189.875) );
  211.     level.RoomTeleporter2 = spawn( "trigger_radius", (13730.9, -956.575, -189.875), 1, 50, 10 );
  212.     level.RoomTeleporter2 SetCursorHint( "HINT_NOICON" );
  213.     level.RoomTeleporter2 UseTriggerRequireLookAt();
  214.     level.RoomTeleporter2 setLowerMessage( level.RoomTeleporter2, "Room Teleporter 2" );
  215.     for(;;)
  216.     {
  217.         level.RoomTeleporter2 waittill( "trigger", i );
  218.         if( i UseButtonPressed()  && i.TeleportNotPossible == false)
  219.         {
  220.             i SetOrigin(level.RoomTeleportBase);
  221.             i iprintln("^1Y^7ou ^1L^7eft ^1T^7he ^1S^7ecret ^1R^7oom");
  222.             i.TeleportNotPossible = true;
  223.             i.ignoreme=0;
  224.             wait(5);
  225.             i.TeleportNotPossible = false;
  226.         }
  227.     }
  228. }
  229.  
  230. RoomMagicBox()
  231. {
  232.     level thread LowerMessage( "Gr3ZzBox", "Press [{+usereload}] For a Random Special Weapon [Cost: 500 ]" );
  233.     level.MagicWeapons = spawn( "script_model", (13566.1, -840.069, -189.875));
  234.     level.MagicBox = spawn( "script_model", (13566.1, -840.069, -189.875));
  235.     level.MagicBox setModel("p6_anim_zm_magic_box");
  236.     level.MagicBox2 = spawn( "trigger_radius", (13566.1, -840.069, -189.875), 1, 50, 10 );
  237.     level.MagicBox2 SetCursorHint( "HINT_NOICON" );
  238.     level.MagicBox2 UseTriggerRequireLookAt();
  239.     level.MagicBox2 setLowerMessage( level.MagicBox2, "Gr3ZzBox" );
  240.     level.MagicBox rotateTo((0, 90, 0), .1);
  241.     level.MagicBox2 rotateTo((0, 90, 0), .1);
  242.     level.MagicWeapons rotateTo((0, 90, 0), .1);
  243.     for(;;)
  244.     {
  245.         level.MagicBox2 waittill( "trigger", i );
  246.         if( i UseButtonPressed() && i.score >= 500 && level.MagicBoxOpended == false )
  247.         {
  248.             i.WeaponsList = [];
  249.             i.WeaponsList[0] = "ray_gun_upgraded_zm";
  250.             i.WeaponsList[1] = "galil_upgraded_zm";
  251.             i.WeaponsList[2] = "usrpg_upgraded_zm";
  252.             i.WeaponsList[3] = "m1911_upgraded_zm";
  253.             i.WeaponsList[4] = "raygun_mark2_upgraded_zm";
  254.             i.WeaponsList[5] = "python_upgraded_zm";
  255.             i.WeaponsList[6] = "knife_ballistic_upgraded_zm";
  256.             i.WeaponsList[7] = "defaultweapon_mp";
  257.             i.WeaponsList[8] = "ak74u_upgraded_zm";
  258.             i.WeaponsList[9] = "mp5k_upgraded_zm";
  259.             i.WeaponsList[10] = "qcw05_upgraded_zm";
  260.             i.WeaponsList[11] = "m14_upgraded_zm";
  261.             i.WeaponsList[12] = "m16_gl_upgraded_zm";
  262.             i.WeaponsList[13] = "tar21_upgraded_zm";
  263.             i.WeaponsList[14] = "fnfal_upgraded_zm";
  264.             i.WeaponsList[15] = "rpd_upgraded_zm";
  265.             i.WeaponsList[16] = "hamr_upgraded_zm";
  266.             i.WeaponsList[17] = "dsr50_upgraded_zm";
  267.             i.WeaponsList[18] = "barretm82_upgraded_zm";
  268.             i.WeaponsList[19] = "m32_upgraded_zm";
  269.             i.WeaponsList[20] = "fivesevendw_upgraded_zm";
  270.             i.WeaponsList[21] = "judge_upgraded_zm";
  271.             i.WeaponsList[22] = "kard_upgraded_zm";
  272.             i.WeaponsList[23] = "srm1216_upgraded_zm";
  273.             i.WeaponsList[24] = "rpd_upgraded_zm";
  274.             i.WeaponsList[25] = "ray_gun_upgraded_zm";
  275.             i.WeaponsList[26] = "m1911_upgraded_zm";
  276.             i.WeaponsSelected = RandomInt( i.WeaponsList.size );
  277.             level.MagicBoxOpended = true;
  278.             play_sound_at_pos( "open_chest", i.origin );
  279.             i.score -= 500;
  280.             play_sound_at_pos( "music_chest", i.origin );
  281.             MyWeapon = i getCurrentWeapon();
  282.             i giveWeapon( "zombie_knuckle_crack" );
  283.             i switchToWeapon( "zombie_knuckle_crack" );
  284.             level.MagicWeapons setModel(getWeaponModel(i.WeaponsList[i.WeaponsSelected]));
  285.             level.MagicWeapons MoveTo(level.MagicBox.origin + (0,0,35),1);
  286.             wait 2.8;
  287.             i takeWeapon( "zombie_knuckle_crack" );
  288.             i takeWeapon( MyWeapon );
  289.             level.MagicWeapons setModel("");
  290.             i giveweapon( i.WeaponsList[i.WeaponsSelected] );
  291.             i switchToWeapon( i.WeaponsList[i.WeaponsSelected] );
  292.             level.MagicWeapons MoveTo(level.MagicBox.origin,1);
  293.             level.MagicBoxOpended = false;
  294.         }
  295.         wait .1;
  296.     }
  297. }
  298.  
  299. RoomWeapons()
  300. {
  301.     self thread WeaponsSystem("Press [{+usereload}] To Buy a Ray Gun [Cost: 1000]", (13556.1, -746.737, -145.875), 1000, "ray_gun_zm");
  302.     self thread WeaponsSystem("Press [{+usereload}] To Buy a Ray Gun Upgraded [Cost: 5000]", (13556.1, -706.737, -145.875), 5000, "ray_gun_upgraded_zm");
  303.     self thread WeaponsSystem("Press [{+usereload}] To Buy a M1911 Upgraded [Cost: 3500]", (13556.1, -676.737, -145.875), 3500, "m1911_upgraded_zm");
  304.     self thread WeaponsSystem("Press [{+usereload}] To Buy a RPD Upgraded [Cost: 3500]", (13556.1, -586.737, -145.875), 3500, "rpd_upgraded_zm");
  305.     self thread WeaponsSystem("Press [{+usereload}] To Buy a Galil Upgraded [Cost: 3500]", (13556.1, -526.737, -145.875), 3500, "galil_upgraded_zm");
  306. }
  307.  
  308. WeaponsSystem(string, origin, cost, weapon)
  309. {
  310.     level thread LowerMessage( "Secret Room Weapons", string );
  311.     RWeapons = spawn( "script_model", origin);
  312.     RWeapons setModel(getWeaponModel(weapon));
  313.     RWeapons rotateTo((0, 90, 0), .1);
  314.     RoomWeapons = spawn("trigger_radius", origin, 1, 20, 20);
  315.     RoomWeapons rotateTo((0, 90, 0), .1);
  316.     RoomWeapons SetCursorHint( "HINT_NOICON" );
  317.     RoomWeapons setLowerMessage( RoomWeapons, "Secret Room Weapons" );
  318.     for(;;)
  319.     {
  320.         RoomWeapons waittill("trigger", i);
  321.         if(i useButtonPressed() && i.score >= cost)
  322.         {
  323.             wait .3;
  324.             if(i useButtonPressed())
  325.             {
  326.                 w = i GetWeaponsListPrimaries();
  327.                 i playsound( "zmb_cha_ching" );
  328.                 i.score -= cost;
  329.                 playerCurrent = i getCurrentWeapon();
  330.                 if(w.size > 1)i takeWeapon(playerCurrent);
  331.                 i giveWeapon( weapon );
  332.                 i switchToWeapon( weapon );
  333.                 wait 1;
  334.             }
  335.         }
  336.     }
  337. }
  338.  
  339. RoomsPerks()
  340. {
  341.     self thread PerksSystem( "zombie_perk_bottle_jugg", "zombie_vending_jugg", "Juggernaut", 500, (13678, -1232, -189), "specialty_armorvest" );
  342.     self thread PerksSystem( "zombie_perk_bottle_sleight", "zombie_vending_sleight", "Fast Reload", 500, (13678, -1152, -189), "specialty_fastreload" );
  343.     self thread PerksSystem( "zombie_perk_bottle_revive", "zombie_vending_revive", "Quick Revive", 500, (13566.1, -1419.23, -188.875), "specialty_quickrevive" );
  344.     self thread PerksSystem( "zombie_perk_bottle_doubletap", "zombie_vending_doubletap2", "Double Tap", 500, (13566.1, -1349.23, -188.875), "specialty_rof" );
  345. }
  346.  
  347. PerksSystem( botal, model, perkname, cost, origin, perk )
  348. {
  349.     RPerks = spawn( "script_model", origin );
  350.     RPerks setModel( model );
  351.     RPerks rotateTo((0, 90, 0), .1);
  352.     level thread LowerMessage( "Secret Room Perks", "Press [{+usereload}] To Buy "+perkname+" [Cost: "+cost+"]" );
  353.     trig = spawn("trigger_radius", origin, 1, 20, 20);
  354.     trig SetCursorHint( "HINT_NOICON" );
  355.     trig setLowerMessage( trig, "Secret Room Perks" );
  356.     for(;;)
  357.     {
  358.         trig waittill("trigger", i);
  359.         if(i useButtonPressed() && i.score >= cost)
  360.         {
  361.             wait .3;
  362.             if(i useButtonPressed())
  363.             {
  364.                 i playsound( "zmb_cha_ching" );
  365.                 i.score -= cost;
  366.                 i thread GivePerk( botal, perk );
  367.                 wait 5;
  368.             }
  369.         }
  370.     }
  371. }
  372.  
  373. GivePerk( model, perk )
  374. {
  375.     self DisableOffhandWeapons();
  376.     self DisableWeaponCycling();
  377.     weaponA = self getCurrentWeapon();
  378.     weaponB = model;
  379.     self SetPerk( perk );
  380.     self GiveWeapon( weaponB );
  381.     self SwitchToWeapon( weaponB );
  382.     self waittill( "weapon_change_complete" );
  383.     self EnableOffhandWeapons();
  384.     self EnableWeaponCycling();
  385.     self TakeWeapon( weaponB );
  386.     self SwitchToWeapon( weaponA );
  387.     self maps/mp/zombies/_zm_perks::give_perk(perk);
  388. }
  389.  
  390. doPNuke()
  391. {
  392.     foreach(player in level.players)
  393.     {
  394.         level thread maps\mp\zombies\_zm_powerups::nuke_powerup(self,player.team);
  395.         player maps\mp\zombies\_zm_powerups::powerup_vo("nuke");
  396.         zombies=getaiarray(level.zombie_team);
  397.         player.zombie_nuked=arraysort(zombies,self.origin);
  398.         player notify("nuke_triggered");
  399.     }
  400. }
  401.  
  402. doPMAmmo()
  403. {
  404.     foreach(player in level.players)
  405.     {
  406.         level thread maps\mp\zombies\_zm_powerups::full_ammo_powerup(self,player);
  407.         player thread maps\mp\zombies\_zm_powerups::powerup_vo("full_ammo");
  408.     }
  409. }
  410.  
  411. doPDoublePoints()
  412. {
  413.     foreach(player in level.players)
  414.     {
  415.         level thread maps\mp\zombies\_zm_powerups::double_points_powerup(self,player);
  416.         player thread maps\mp\zombies\_zm_powerups::powerup_vo("double_points");
  417.     }
  418. }
  419.  
  420. doPInstaKills()
  421. {
  422.     foreach(player in level.players)
  423.     {
  424.         level thread maps\mp\zombies\_zm_powerups::insta_kill_powerup(self,player);
  425.         player thread maps\mp\zombies\_zm_powerups::powerup_vo("insta_kill");
  426.     }
  427. }
  428.  
  429. LowerMessage( ref, text )
  430. {
  431.     if( !IsDefined( level.zombie_hints ) )
  432.     {
  433.         level.zombie_hints = [];
  434.     }
  435.     PrecacheString( text );
  436.     level.zombie_hints[ref] = text;
  437. }
  438. setLowerMessage( ent, default_ref )
  439. {
  440.     if( IsDefined( ent.script_hint ) )
  441.     {
  442.         self SetHintString( get_zombie_hint( ent.script_hint ) );
  443.     }
  444.     else
  445.     {
  446.         self SetHintString( get_zombie_hint( default_ref ) );
  447.     }
  448. }
Advertisement
Add Comment
Please, Sign In to add comment