Advertisement
Abnormal202

Untitled

Jun 20th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.06 KB | None | 0 0
  1. #using scripts\codescripts\struct;
  2.  
  3. #using scripts\shared\array_shared;
  4. #using scripts\shared\callbacks_shared;
  5. #using scripts\shared\clientfield_shared;
  6. #using scripts\shared\compass;
  7. #using scripts\shared\exploder_shared;
  8. #using scripts\shared\flag_shared;
  9. #using scripts\shared\laststand_shared;
  10. #using scripts\shared\math_shared;
  11. #using scripts\shared\scene_shared;
  12. #using scripts\shared\util_shared;
  13.  
  14. #insert scripts\shared\shared.gsh;
  15. #insert scripts\shared\version.gsh;
  16.  
  17. #insert scripts\zm\_zm_utility.gsh;
  18.  
  19. #using scripts\zm\_load;
  20. #using scripts\zm\_zm;
  21. #using scripts\zm\_zm_audio;
  22. #using scripts\zm\_zm_powerups;
  23. #using scripts\zm\_zm_utility;
  24. #using scripts\zm\_zm_weapons;
  25. #using scripts\zm\_zm_zonemgr;
  26.  
  27. #using scripts\shared\ai\zombie_utility;
  28.  
  29. //Perks
  30. #using scripts\zm\_zm_pack_a_punch;
  31. #using scripts\zm\_zm_pack_a_punch_util;
  32. #using scripts\zm\_zm_perk_additionalprimaryweapon;
  33. #using scripts\zm\_zm_perk_doubletap2;
  34. #using scripts\zm\_zm_perk_deadshot;
  35. #using scripts\zm\_zm_perk_juggernaut;
  36. #using scripts\zm\_zm_perk_quick_revive;
  37. #using scripts\zm\_zm_perk_sleight_of_hand;
  38. #using scripts\zm\_zm_perk_staminup;
  39. #using scripts\zm\_zm_perk_electric_cherry;
  40. #using scripts\zm\_zm_perk_widows_wine;
  41. #using scripts\zm\_zm_perk_vulture_aid;
  42. #using scripts\zm\_zm_perk_whoswho;
  43. #using scripts\zm\_zm_perk_tombstone;
  44. #using scripts\zm\_zm_perk_phdflopper;
  45. #using scripts\zm\_zm_perk_wunderfizz;
  46. #using scripts\zm\_zm_perks;
  47. #insert scripts\zm\_zm_perks.gsh;
  48.  
  49. //Powerups
  50. #using scripts\zm\_zm_powerup_double_points;
  51. #using scripts\zm\_zm_powerup_carpenter;
  52. #using scripts\zm\_zm_powerup_fire_sale;
  53. #using scripts\zm\_zm_powerup_free_perk;
  54. #using scripts\zm\_zm_powerup_full_ammo;
  55. #using scripts\zm\_zm_powerup_insta_kill;
  56. #using scripts\zm\_zm_powerup_nuke;
  57. //#using scripts\zm\_zm_powerup_weapon_minigun;
  58.  
  59. //Traps
  60. #using scripts\zm\_zm_trap_electric;
  61.  
  62. #using scripts\zm\zm_usermap;
  63.  
  64. #using scripts\zm\zm_howl;
  65. #using scripts\_NSZ\nsz_powerup_bottomless_clip;
  66. #using scripts\_NSZ\nsz_powerup_money;
  67. #using scripts\_NSZ\nsz_powerup_time_warp;
  68. #using scripts\_ZK\zk_buyable_elevator;
  69. #using scripts\_NSZ\nsz_kino_teleporter;
  70.  
  71. //*****************************************************************************
  72. // MAIN
  73. //*****************************************************************************
  74.  
  75. function main()
  76. {
  77. level flag::set("power_on");
  78. level thread set_perk_limit(15); // This sets the perk limit to 10
  79. level thread new_zombie_speed();
  80. level thread intro_credits();
  81. level.zombie_powerup_weapon[ "minigun" ] = GetWeapon( "thundergun_upgraded" );
  82. level flag::set( "power_on" );
  83. level zm_perks::spare_change();
  84. level thread zk_buyable_elevator::init();
  85. level thread nsz_kino_teleporter::init();
  86.  
  87.  
  88. zm_usermap::main();
  89.  
  90. level.default_laststandpistol = GetWeapon( "bo3_m1911" );
  91. level.default_solo_laststandpistol = GetWeapon( "bo3_m1911_upgraded" );
  92. level.laststandpistol = level.default_laststandpistol;
  93. level.start_weapon = level.default_laststandpistol;
  94.  
  95. startingWeapon = "bo3_m1911";
  96. weapon = getWeapon(startingWeapon);
  97. level.start_weapon = (weapon);
  98.  
  99. level._zombie_custom_add_weapons =&custom_add_weapons;
  100.  
  101. //Setup the levels Zombie Zone Volumes
  102. level.zones = [];
  103. level.zone_manager_init_func =&usermap_test_zone_init;
  104. init_zones[0] = "start_zone";
  105. level thread zm_zonemgr::manage_zones( init_zones );
  106.  
  107. thread soundEasterEggInit();
  108. thread zm_howl::howl_init();
  109. thread init_power();
  110. thread easter_egg();
  111.  
  112. level.pathdist_type = PATHDIST_ORIGINAL;
  113. }
  114.  
  115. function usermap_test_zone_init()
  116. {
  117. level flag::init( "always_on" );
  118. level flag::set( "always_on" );
  119. }
  120.  
  121. function custom_add_weapons()
  122. {
  123. zm_weapons::load_weapon_spec_from_table("gamedata/weapons/zm/zm_levelcommon_weapons.csv", 1);
  124. }
  125. function set_perk_limit(num)
  126. {
  127. wait( 30 );
  128. level.perk_purchase_limit = num;
  129. }
  130.  
  131. function new_zombie_speed()
  132. {
  133. level flag::wait_till( "initial_blackscreen_passed" );
  134. zombie_utility::set_zombie_var( "zombie_move_speed_multiplier", 75, false ); // Multiply by the round number to give the base speed value. 0-40 = walk, 41-70 = run, 71+ = sprint
  135. zombie_utility::set_zombie_var( "zombie_move_speed_multiplier_easy", 75, false ); // Multiply by the round number to give the base speed value. 0-40 = walk, 41-70 = run, 71+ = sprint
  136. level.zombie_move_speed = level.round_number * level.zombie_vars["zombie_move_speed_multiplier"];
  137. }
  138.  
  139. function intro_credits()
  140. {
  141. thread creat_simple_intro_hud( "Storage Wherehouse", 50, 100, 3, 5 );
  142. thread creat_simple_intro_hud( "Unknown Location", 50, 75, 2, 5 );
  143. thread creat_simple_intro_hud( "Credits due to: NateSmithZombies, John Burnette, Partisan Executioner, Sniper Yam, Sammy Custom, Harrybo21, Frost Iceforge, DarkS0uls54, Snprym, Icky(LemursLemursLemurs, DTZxPorter, Scobalula, Ray1235, CanadianPro17th, Azsry, Collie)", 50, 50, 1, 3 );
  144. }
  145.  
  146. function creat_simple_intro_hud( text, align_x, align_y, font_scale, fade_time )
  147. {
  148. hud = NewHudElem();
  149. hud.foreground = true;
  150. hud.fontScale = font_scale;
  151. hud.sort = 1;
  152. hud.hidewheninmenu = false;
  153. hud.alignX = "left";
  154. hud.alignY = "bottom";
  155. hud.horzAlign = "left";
  156. hud.vertAlign = "bottom";
  157. hud.x = align_x;
  158. hud.y = hud.y - align_y;
  159. hud.alpha = 1;
  160. hud SetText( text );
  161. wait( 8 );
  162. hud fadeOverTime( fade_time );
  163. hud.alpha = 0;
  164. wait( fade_time );
  165. hud Destroy();
  166. }
  167.  
  168. function init_power()
  169. {
  170. level flag::wait_till("power_on");
  171. level util::set_lighting_state(3);
  172. }
  173.  
  174. function soundEasterEggInit()
  175. {
  176. level.soundEasterEgg = 0;
  177. level.playEasterEgg = 3;
  178. level.playSoundLocation = GetEnt("easter_egg_sound_location", "SpookySkeletons"); // Create a script origin and set it to server, not client, then give it this targetname
  179.  
  180. thread shoot1();
  181. thread shoot2();
  182. thread shoot3();
  183. }
  184.  
  185. function shoot1()
  186. {
  187. shoot_trig1 = GetEnt("egg_shoot1", "targetname");
  188. shoot_trig1 waittill("trigger", player);
  189. shoot_model1 = GetEnt("shoot_model1", "targetname");
  190. shoot_model1 delete();
  191. level.soundEasterEgg++;
  192. thread finishedEasterEgg();
  193. shoot_trig1 delete();
  194. }
  195.  
  196. function shoot2()
  197. {
  198. shoot_trig2 = GetEnt("egg_shoot2", "targetname");
  199. shoot_trig2 waittill("trigger", player);
  200. shoot_model2 = GetEnt("shoot_model2", "targetname");
  201. shoot_model2 delete();
  202. level.soundEasterEgg++;
  203. thread finishedEasterEgg();
  204. shoot_trig2 delete();
  205. }
  206.  
  207. function shoot3()
  208. {
  209. shoot_trig3 = GetEnt("egg_shoot3", "targetname");
  210. shoot_trig3 waittill("trigger", player);
  211. shoot_model3 = GetEnt("shoot_model3", "targetname");
  212. shoot_model3 delete();
  213. level.soundEasterEgg++;
  214. thread finishedEasterEgg();
  215. shoot_trig3 delete();
  216. }
  217.  
  218. function finishedEasterEgg()
  219. {
  220. if(level.soundEasterEgg >= level.playEasterEgg)
  221. {
  222. IPrintLnBold("Congratulations!");
  223. level.playSoundLocation PlaySound("song_easter_egg1"); // Change "sephiroth" to the name of your soundalias.
  224.  
  225. players = GetPlayers();
  226. for (i = 0;i<players.size;i++)
  227.  
  228. {
  229. players[i] PlayLocalSound( "song_easter_egg1");
  230. }
  231.  
  232. }
  233. }
  234.  
  235. function checkForPower()
  236. {
  237. level util::set_lighting_state(0); /* set lighting state to [1] in Radiant (by default) */
  238. level waittill("power_on");
  239. level util::set_lighting_state(1); /* set lighting state to [2] in Radiant (turn lights on) */
  240. }
  241.  
  242. function easter_egg()
  243. {
  244. level.reward = "door"; //what happens when you place the objects. Right now, options are: ("door","powerup","gun")
  245. level.reward_2 = "gun"; //add another reward if you want. just say "false" or delete the line if you don't want an extra reward.
  246. level.reward_3 = "false"; //add yet another reward if you want. Note that you cannot do more than one of the same reward.
  247. level.powerup_type = "random"; //if using a powerup as one of your rewards, this is what type. can be ("full_ammo","nuke","insta_kill","free_perk","fire_sale","double_points","carpenter","minigun",and "random")
  248. level.reward_weapons = array( "ar_damage", "lmg_cqb", "shotgun_pump", "smg_versatile" ); //weapons it can give you in the "gun" reward. put as many or as little as you like.
  249. level.gun_expire = true; //whether or not the gun will go away in time.
  250. level.delete_door_after_move = "true"; //set "true" to delete the door after its done moving. Would recommend if it won't be seen.
  251. level.gun_hintstring = "Press ^3[{+activate}]^7 to take weapon"; //if gun reward is activated, hintstring for picking up gun.
  252. level.one_gun_per_player = "true"; //for gun powerup, set "true" if you want a gun to spawn for each player, "false" for just one gun no matter what.
  253. level.different_guns_per_player = "false"; //for gun powerup, set "true" if you want each gun to be randomly different, false if you want them to be the same random gun. if one_gun_per_player = "false" this doesn't matter.
  254.  
  255. level.place_the_objects = "true"; //whether or not you have to place the objects ("true") or just collect them ("false") to get the reward.
  256. level.trigger_hintstring = "Press ^3[{+activate}]^7 to pickup object"; //hintstring for picking up objects. If you don't want a hintstring for picking up objects delete this entire line.
  257. level.trigger_place_hintstring = "Press ^3[{+activate}]^7 to place objects"; //hintstring for placing objects after collecting all of them. If you don't want a hintstring for placing objects delete this entire line.
  258.  
  259. level.placed_objects = GetEntArray("placed_object","targetname");
  260. if(isdefined(level.placed_objects))
  261. {
  262. for(i=0;i<level.placed_objects.size;i++)
  263. {
  264. level.placed_objects[i] Hide();
  265. }
  266. trig_place = GetEnt("trig_place","targetname");
  267. trig_place SetCursorHint( "HINT_NOICON" );
  268.  
  269. trig_place SetHintString("");
  270. }
  271. level.objects_picked_up = 0;
  272. level.objects = GetEntArray("easter_egg_object","targetname");
  273. for(i=0;i<level.objects.size;i++)
  274. {
  275. level.objects[i] thread wait_for_pickup();
  276. }
  277. }
  278. function wait_for_pickup()
  279. {
  280. trig = GetEnt(self.target,"targetname");
  281. trig SetCursorHint( "HINT_NOICON" );
  282. if(isdefined(level.trigger_hintstring))
  283. trig SetHintString(level.trigger_hintstring);
  284. trig waittill("trigger",player);
  285. self Delete();
  286. trig Delete();
  287. level.objects_picked_up ++;
  288. if(level.objects_picked_up == level.objects.size)
  289. {
  290. if(level.place_the_objects == true)
  291. {
  292. trig_place = GetEnt("trig_place","targetname");
  293. trig_place SetCursorHint( "HINT_NOICON" );
  294. if(isDefined(level.trigger_place_hintstring))
  295. trig_place SetHintString(level.trigger_place_hintstring);
  296. trig_place waittill("trigger",player);
  297. if(isdefined(level.placed_objects))
  298. {
  299. for(i=0;i<level.placed_objects.size;i++)
  300. {
  301. level.placed_objects[i] Show();
  302. }
  303. }
  304. }
  305. reward();
  306. }
  307. }
  308. function reward()
  309. {
  310. if(level.reward == "door" || level.reward_2 == "door" || level.reward_3 == "door")
  311. {
  312. time = 2; //2 is amount of time in seconds door takes to move.
  313. door_parts = GetEntArray("easter_egg_door","targetname");
  314. for(i=0;i<door_parts.size;i++)
  315. {
  316. if(isdefined(door_parts[i].target))
  317. door_parts[i] MoveTo(door_parts[i].target.origin, time);
  318. if(isdefined(door_parts[i].script_vector))
  319. door_parts[i] MoveTo(door_parts[i].origin + (door_parts[i].script_vector), time);
  320. }
  321. wait(time);
  322.  
  323. if(level.delete_door_after_move == true)
  324. {
  325. for(i=0;i<door_parts.size;i++)
  326. {
  327.  
  328. if(isdefined(doors_parts[i].target))
  329. door_parts[i].target Delete();
  330. door_parts[i] Delete();
  331. }
  332. }
  333. }
  334. if(level.reward == "powerup" || level.reward_2 == "powerup" || level.reward_3 == "powerup")
  335. {
  336. powerup_struct = GetEnt("powerup_struct","targetname");
  337. if(level.powerup_type != "random")
  338. thread zm_powerups::specific_powerup_drop( level.powerup_type, powerup_struct.origin);
  339. if(level.powerup_type == "random")
  340. {
  341. rand = RandomIntRange( 0, 7 ); //("full_ammo","nuke","insta_kill","free_perk","fire_sale","double_points","carpenter","minigun")
  342. if(rand == 0)
  343. thread zm_powerups::specific_powerup_drop( "full_ammo", powerup_struct.origin);
  344. if(rand == 1)
  345. thread zm_powerups::specific_powerup_drop( "nuke", powerup_struct.origin);
  346. if(rand == 2)
  347. thread zm_powerups::specific_powerup_drop( "insta_kill", powerup_struct.origin);
  348. if(rand == 3)
  349. thread zm_powerups::specific_powerup_drop( "free_perk", powerup_struct.origin);
  350. if(rand == 4)
  351. thread zm_powerups::specific_powerup_drop( "fire_sale", powerup_struct.origin);
  352. if(rand == 5)
  353. thread zm_powerups::specific_powerup_drop( "double_points", powerup_struct.origin);
  354. if(rand == 6)
  355. thread zm_powerups::specific_powerup_drop( "carpenter", powerup_struct.origin);
  356. if(rand == 7)
  357. thread zm_powerups::specific_powerup_drop( "minigun", powerup_struct.origin);
  358. }
  359. }
  360. if(level.reward == "gun" || level.reward_2 == "gun" || level.reward_3 == "gun")
  361. {
  362. if(level.one_gun_per_player == false)
  363. gun_struct = struct::get("gun_struct","targetname");
  364. thread RewardGun(gun_struct.origin+(0,0,40), array::randomize(level.reward_weapons)[0]);
  365. if(level.one_gun_per_player == true && level.different_guns_per_player == true)
  366. {
  367. gun_structs = struct::get_array("gun_struct","targetname");
  368. for(i=0;i<level.players.size;i++)
  369. {
  370. thread RewardGun(gun_structs[i].origin+(0,0,40), array::randomize(level.reward_weapons)[0]);
  371. }
  372. }
  373. if(level.one_gun_per_player == true && level.different_guns_per_player == false)
  374. {
  375. rand = RandomIntRange( 0, level.reward_weapons.size );
  376. gun_structs = struct::get_array("gun_struct","targetname");
  377. for(i=0;i<level.players.size;i++)
  378. {
  379. thread RewardGun(gun_structs[i].origin+(0,0,40), level.reward_weapons[rand]);
  380. }
  381. }
  382. }
  383. }
  384. function RewardGun(pos, weapon)
  385. {
  386. gun = spawn("script_model", pos);
  387. playsoundatposition("zmb_spawn_powerup", pos);
  388.  
  389. gun SetModel(GetWeaponWorldModel(GetWeapon(weapon)));
  390. PlayFX(level._effect["powerup_grabbed_solo"], gun.origin);
  391. trig = spawn("trigger_radius", gun.origin, 0, 20, 50);
  392. gun thread SpinMe();
  393. gun thread GiveMe(weapon, trig);
  394. if(level.gun_expire == true)
  395. gun thread LifeTime(trig);
  396. }
  397. function LifeTime(trig)
  398. {
  399. self endon("death");
  400. wait(120);//wait 2 minutes then delete
  401. if(isdefined(self))
  402. {
  403. self notify("rewardgun_delete");
  404. }
  405. if(isdefined(trig))
  406. {
  407. trig delete();
  408. }
  409. if(isdefined(self))
  410. {
  411. self delete();
  412. }
  413. }
  414. function GiveMe(weapon, trig)
  415. {
  416. self endon("rewardgun_delete");
  417. while(1)
  418. {
  419. trig waittill("trigger", player);
  420. player thread SetGunHint(level.gun_hintstring, trig);
  421. if(player HasWeapon(getweapon("minigun")))
  422. {
  423. continue;
  424. }
  425. if(!(player UseButtonPressed()))
  426. {
  427. continue;
  428. }
  429. if(player laststand::player_is_in_laststand())
  430. {
  431. continue;
  432. }
  433. trig delete();
  434. self delete();
  435. player zm_weapons::weapon_give(getweapon(weapon));
  436. player SwitchToWeapon(getweapon(weapon));
  437. break;
  438. wait(.1);
  439. }
  440. }
  441.  
  442. function SpinMe()
  443. {
  444. self endon("rewardgun_delete");
  445. self endon("death");
  446. while(isdefined(self))
  447. {
  448. if(isdefined(self))
  449. {
  450. self rotateyaw(360,2);
  451. }
  452. wait(1.9);
  453. }
  454. }
  455. function SetGunHint(text, trig)
  456. {
  457. if(isdefined(self.grow_soul_hud))
  458. {
  459. return;
  460. }
  461. self.grow_soul_hud = NewClientHudElem( self );
  462. self.grow_soul_hud.horzAlign = "center";
  463. self.grow_soul_hud.vertAlign = "middle";
  464. self.grow_soul_hud.alignX = "center";
  465. self.grow_soul_hud.alignY = "middle";
  466. self.grow_soul_hud.foreground = 1;
  467. self.grow_soul_hud.fontscale = 1;
  468. self.grow_soul_hud.alpha = 1;
  469. self.grow_soul_hud.color = ( 0.44, .74, .94 );
  470. self.grow_soul_hud SetText(text);
  471. while(isdefined(trig) && self IsTouching(trig))
  472. {
  473. wait(.05);
  474. }
  475. self.grow_soul_hud SetText("");
  476. self.grow_soul_hud Destroy();
  477. self.grow_soul_hud = undefined;
  478. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement