Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 50.59 KB | None | 0 0
  1. /*
  2. THINGS TO DO
  3. ============
  4. - new weaps to add
  5. - fix killstreaks
  6. - Add bosses
  7. - More rankup weapons and rewards
  8. - mod verification and anti-cheat //part working
  9. - detail certain areas more
  10. - retexture with 4k on most
  11. - more FX for realism
  12. - test and patch up glitches/mistakes
  13. - script objectives
  14.  
  15. rand weap dont work, takes points but dont give gun
  16.  
  17. boss in final area
  18. boss at original spawnpoint
  19. boss at engine room
  20. randomize zombie health
  21. randomize day and night from spawn
  22.  
  23. */
  24.  
  25. #using scripts\codescripts\struct;
  26.  
  27. #using scripts\shared\array_shared;
  28. #using scripts\shared\callbacks_shared;
  29. #using scripts\shared\clientfield_shared;
  30. #using scripts\shared\compass;
  31. #using scripts\shared\exploder_shared;
  32. #using scripts\shared\flag_shared;
  33. #using scripts\shared\laststand_shared;
  34. #using scripts\shared\math_shared;
  35. #using scripts\shared\scene_shared;
  36. #using scripts\shared\util_shared;
  37.  
  38. #insert scripts\shared\shared.gsh;
  39. #insert scripts\shared\version.gsh;
  40.  
  41. #insert scripts\zm\_zm_utility.gsh;
  42.  
  43. #using scripts\zm\_load;
  44. #using scripts\zm\_zm;
  45. #using scripts\zm\_zm_audio;
  46. #using scripts\zm\_zm_powerups;
  47. #using scripts\zm\_zm_utility;
  48. #using scripts\zm\_zm_weapons;
  49. #using scripts\zm\_zm_zonemgr;
  50. #using scripts\zm\_zm_score;
  51. #using scripts\shared\system_shared;
  52. #using scripts\shared\ai\zombie_utility;
  53.  
  54. #using scripts\zm\zm_giant_cleanup_mgr;
  55. //#using scripts\zm\_zm_blockers;
  56.  
  57. //#using scripts\shared\scoreevents_shared;
  58. //#using scripts\zm\mt_crafting_system;
  59. //#using scripts\zm\zm_flamethrower;
  60. //#using scripts\zm\zns_jumpscare;
  61. //#using scripts\_NSZ\nsz_powerup_weapon;
  62. //#using scripts\zm\buyable_turret;
  63. //#using scripts\shared\_oob;
  64. #using scripts\zm\_zm_slowdown_trigger;
  65. //#using scripts\zm\_hb21_zm_ai_sonic;
  66.  
  67. //Traps
  68. //#using scripts\zm\_zm_trap_electric;
  69.  
  70. #using scripts\zm\ugxmods_timedgp;
  71. #using scripts\zm\zm_usermap;
  72. #using scripts\_NSZ\nsz_hitmarkers;
  73. #using scripts\zm\zm_claymore;
  74. #using scripts\zm\_zm_perks;
  75. //#using scripts\_NSZ\nsz_brutus;
  76. #using scripts\zm\zm_flamethrower;
  77.  
  78. #precache( "fx", "lensflares/fx_lensflare_light_cool_xlg" );
  79. #precache( "fx", "light/fx_light_ammo_resupply" );
  80. #precache( "fx", "smoke/fx_green_smoke" );
  81. #precache( "fx", "explosions/fx_exp_bomb_demo_mp" );
  82. #precache( "fx", "vehicle/fx_vtol_thruster_wing_aquifer" );
  83. #precache( "fx", "destruct/fx_dest_wall_nworld" );
  84. //#precache( "material", "ardronehud" );
  85. //#precache( "material", "black" );
  86. //#precache( "material", "white" );
  87.  
  88. function main()
  89. {
  90. level.dog_rounds_allowed = 0;
  91.  
  92. callback::on_connect( &on_player_connect );
  93.  
  94. zm_usermap::main();
  95.  
  96. //callback::on_spawned( &bo2_deathhands );
  97.  
  98. //level thread init_power();
  99.  
  100. //level thread weapon_swap_table_init();
  101. //level thread iw_bank_system_init();
  102. //level thread autoexec init();
  103. //level thread PreloadSounds();
  104. //level thread preload_vars();
  105. //level thread CreateSoundDatabase();
  106. //level thread add_bots();
  107. //level thread run_to_reheal(); //test
  108. //level thread OverheadHealthFriendly(); //test
  109. //level thread DropAmmo(); //test
  110. //level thread HealthCounter();
  111. //level thread disable_DB();
  112. //level thread PreloadForAll();
  113.  
  114. level thread GeneralSpawn();
  115. level thread LoopRound();
  116. level thread iceGrenade_autoZones();
  117. level thread endgame();
  118. //level.round_number = 10;
  119.  
  120. //level thread doShowAmmo();
  121. //level thread ZoneBarriers();
  122. //level thread printHealthDebug();
  123. //level thread SurvivalMode();
  124. level thread AmmoRestock();
  125. level thread TrapBox();
  126. level thread RandWeapBox();
  127. level thread PerkBox();
  128. level thread RandZombHealth();
  129. //level thread RandDNCycle();
  130. //level thread ks_RCXD();
  131. //level thread ks_Drone();
  132. level thread PreroundSounds();
  133. level thread PreroundSoundsDrones();
  134. //level thread TriggerDyn();
  135. //level thread healthbar();
  136. //level thread TempBarriers();
  137. //level thread SoundTesting();
  138. level thread DisableRounds();
  139. //brutus::init();
  140.  
  141. setdvar("zombie_ai_per_player", "32");
  142. setdvar("zombie_max_ai", "32");
  143. setdvar("zombie_score_kill_1player", "50");
  144. setdvar("zombie_score_kill_2player", "40");
  145. setdvar("zombie_score_kill_3player", "30");
  146. setdvar("zombie_score_kill_4player", "20");
  147. setdvar("zombie_score_damage_normal", "5");
  148. setdvar("zombie_score_damage_light", "3");
  149. setdvar("player_base_health", "550");
  150.  
  151. level util::set_lighting_state(0);
  152.  
  153. startingWeapon = "iw5_m4a1";
  154. weapon = getWeapon(startingWeapon);
  155. level.start_weapon = (weapon);
  156. wait 0.5;
  157.  
  158. level thread ugxmods_timedgp::timed_gameplay();
  159.  
  160. level.player_out_of_playable_area_monitor = false;
  161.  
  162. //level thread WakkaCash();
  163.  
  164. level._zombie_custom_add_weapons =&custom_add_weapons;
  165.  
  166. //Setup the levels Zombie Zone Volumes
  167. level.zones = [];
  168. level.zone_manager_init_func =&usermap_test_zone_init;
  169. init_zones[0] = "start_zone";
  170. /*
  171. init_zones[1] = "zoneb";
  172. init_zones[2] = "zonec";
  173. init_zones[3] = "zoned";
  174. init_zones[4] = "zonee";
  175. init_zones[5] = "zonef";
  176. init_zones[6] = "zoneg";
  177. init_zones[7] = "zoneh";
  178. init_zones[8] = "zonei";
  179. init_zones[9] = "zonej";
  180. init_zones[10] = "zonek";
  181. init_zones[11] = "zonel";
  182. init_zones[12] = "zonem";
  183. init_zones[13] = "zonen";
  184. init_zones[14] = "zoneo";
  185. init_zones[15] = "zonep";
  186. init_zones[16] = "zoneq";
  187. init_zones[17] = "zoner";
  188. init_zones[18] = "zones";
  189. init_zones[19] = "zonet";
  190. */
  191. level thread zm_zonemgr::manage_zones( init_zones );
  192.  
  193. level.pathdist_type = PATHDIST_ORIGINAL;
  194. }
  195.  
  196. function on_player_connect()
  197. {
  198. self.maxHealth = 550;
  199. self.health = self.maxHealth;
  200.  
  201. self thread respawn_player_auto();
  202. }
  203.  
  204. function DisableRounds()
  205. {
  206. level waittill("start_of_round");
  207. SetRoundsPlayed(0);
  208. level.first_round = false;
  209. }
  210.  
  211. function ZoneBarriers()
  212. {
  213. trigareabarriera = GetEnt("AreaBarrier_A", "targetname");
  214. trigareabarrierb = GetEnt("AreaBarrier_B", "targetname");
  215. trigareabarrierc = GetEnt("AreaBarrier_C", "targetname");
  216. trigareabarrierd = GetEnt("AreaBarrier_D", "targetname");
  217. trigareabarriere = GetEnt("AreaBarrier_E", "targetname");
  218. trigareabarrierf = GetEnt("AreaBarrier_F", "targetname");
  219. trigareabarrierg = GetEnt("AreaBarrier_G", "targetname");
  220. trigareabarrierh = GetEnt("AreaBarrier_H", "targetname");
  221. trigareabarrieri = GetEnt("AreaBarrier_I", "targetname");
  222. trigareabarrierj = GetEnt("AreaBarrier_J", "targetname");
  223. trigareabarrierk = GetEnt("AreaBarrier_K", "targetname");
  224. trigareabarrierl = GetEnt("AreaBarrier_L", "targetname");
  225. trigareabarrierm = GetEnt("AreaBarrier_M", "targetname");
  226. trigareabarriern = GetEnt("AreaBarrier_N", "targetname");
  227. trigareabarriero = GetEnt("AreaBarrier_O", "targetname");
  228. trigareabarrierp = GetEnt("AreaBarrier_P", "targetname");
  229. trigareabarrierq = GetEnt("AreaBarrier_Q", "targetname");
  230. trigareabarrierr = GetEnt("AreaBarrier_R", "targetname");
  231. trigareabarriers = GetEnt("AreaBarrier_S", "targetname");
  232. trigareabarriert = GetEnt("AreaBarrier_T", "targetname");
  233. trigareabarrieru = GetEnt("AreaBarrier_U", "targetname");
  234. wait 0.5;
  235. trigareabarriera moveZ ( -200, 0.1, 0.1);
  236. trigareabarrierb moveZ ( -200, 0.1, 0.1);
  237. trigareabarrierc moveZ ( -200, 0.1, 0.1);
  238. trigareabarrierd moveZ ( -200, 0.1, 0.1);
  239. trigareabarriere moveZ ( -200, 0.1, 0.1);
  240. trigareabarrierf moveZ ( -200, 0.1, 0.1);
  241. trigareabarrierg moveZ ( -200, 0.1, 0.1);
  242. trigareabarrierh moveZ ( -200, 0.1, 0.1);
  243. trigareabarrieri moveZ ( -200, 0.1, 0.1);
  244. trigareabarrierj moveZ ( -200, 0.1, 0.1);
  245. trigareabarrierk moveZ ( -200, 0.1, 0.1);
  246. trigareabarrierl moveZ ( -200, 0.1, 0.1);
  247. trigareabarrierm moveZ ( -200, 0.1, 0.1);
  248. trigareabarriern moveZ ( -200, 0.1, 0.1);
  249. trigareabarriero moveZ ( -200, 0.1, 0.1);
  250. trigareabarrierp moveZ ( -200, 0.1, 0.1);
  251. trigareabarrierq moveZ ( -200, 0.1, 0.1);
  252. trigareabarrierr moveZ ( -200, 0.1, 0.1);
  253. trigareabarriers moveZ ( -200, 0.1, 0.1);
  254. trigareabarriert moveZ ( -200, 0.1, 0.1);
  255. trigareabarrieru moveZ ( -200, 0.1, 0.1);
  256.  
  257. }
  258.  
  259. function TriggerDyn()
  260. {
  261. TRIGKSTEST = GetEnt("TRIGDYN", "targetname");
  262. KSTEST = GetEnt("DYN", "targetname");
  263. TRIGKSTEST waittill("trigger", player);
  264. //SetDynEntEnabled( KSTEST, 0 );
  265. wait 20;
  266. //SetDynEntEnabled( KSTEST, 1 );
  267. //xej = randomint(50);
  268. //yej = randomint(50);
  269. //zej = randomint(50);
  270. //force = xej + yej + zej;
  271. wait 5;
  272. //launchdynent( KSTEST, force );
  273. RadiusDamage(KSTEST.origin + (0,0,12), 256, 110, 10, undefined, "MOD_GRENADE_SPLASH", GetWeapon("iw4_stinger_up"));
  274. }
  275.  
  276. function RandDNCycle()
  277. {
  278. {
  279. randomc = randomint(2);
  280. switch(randomc)
  281. {
  282. case 0:
  283. level util::set_lighting_state(0);
  284. break;
  285. case 1:
  286. level util::set_lighting_state(1);
  287. break;
  288. default:
  289. }
  290. }
  291. }
  292.  
  293. function RandZombHealth()
  294. {
  295. while(1)
  296. {
  297. wait 5;
  298. randomd = randomint(2);
  299. switch(randomd)
  300. {
  301. case 0:
  302. level.zombie_health = 300;
  303. setdvar("zombie_health_start", "300");
  304. //iPrintLnBold("^2 300");
  305. break;
  306. case 1:
  307. level.zombie_health = 350;
  308. setdvar("zombie_health_start", "350");
  309. //iPrintLnBold("^2 350");
  310. break;
  311. default:
  312. }
  313. }
  314. }
  315.  
  316. function LoopRound()
  317. {
  318. while(1)
  319. {
  320. wait 1;
  321. level.round_number = 10;
  322. level.zombie_total = 999;
  323. zombie_utility::set_zombie_var( "zombie_move_speed_multiplier", 10, false ); // Multiply by the round number to give the base speed value. 0-40 = walk, 41-70 = run, 71+ = sprint
  324. zombie_utility::set_zombie_var( "zombie_move_speed_multiplier_easy", 10, false ); // Multiply by the round number to give the base speed value. 0-40 = walk, 41-70 = run, 71+ = sprint
  325. level.zombie_move_speed = level.round_number * level.zombie_vars["zombie_move_speed_multiplier"];
  326. }
  327. }
  328.  
  329. function GeneralSpawn()
  330. {
  331. structsClass = struct::get_array("classic_spawn", "script_noteworthy");
  332.  
  333. players = GetPlayers();
  334. for( i = 0; i < players.size; i++ )
  335. {
  336. players[i] setorigin( structsClass[i].origin );
  337. players[i] setplayerangles( structsClass[i].angles );
  338. players[i].spectator_respawn = structsClass[i];
  339. }
  340.  
  341. }
  342.  
  343. function usermap_test_zone_init()
  344. {
  345. level flag::init( "always_on" );
  346. level flag::set( "always_on" );
  347. zm_zonemgr::add_adjacent_zone( "start_zone", "zone2", "enter_zone2" );
  348. zm_zonemgr::add_adjacent_zone( "zoneb", "zone3", "enter_zone3" );
  349. zm_zonemgr::add_adjacent_zone( "zonec", "zone2", "enter_zone2" );
  350. zm_zonemgr::add_adjacent_zone( "zoned", "zone5", "enter_zone5" );
  351. zm_zonemgr::add_adjacent_zone( "zonee", "zone6", "enter_zone6" );
  352. zm_zonemgr::add_adjacent_zone( "zonef", "zone7", "enter_zone7" );
  353. zm_zonemgr::add_adjacent_zone( "zoneg", "zone8", "enter_zone8" );
  354. zm_zonemgr::add_adjacent_zone( "zoneh", "zone9", "enter_zone9" );
  355. zm_zonemgr::add_adjacent_zone( "zonei", "zone10", "enter_zone10" );
  356. zm_zonemgr::add_adjacent_zone( "zonej", "zone11", "enter_zone11" );
  357. zm_zonemgr::add_adjacent_zone( "zonek", "zone12", "enter_zone12" );
  358. zm_zonemgr::add_adjacent_zone( "zonel", "zone13", "enter_zone13" );
  359. zm_zonemgr::add_adjacent_zone( "zonem", "zone14", "enter_zone14" );
  360. zm_zonemgr::add_adjacent_zone( "zonen", "zone15", "enter_zone15" );
  361. zm_zonemgr::add_adjacent_zone( "zoneo", "zone16", "enter_zone16" );
  362. zm_zonemgr::add_adjacent_zone( "zonep", "zone17", "enter_zone17" );
  363. zm_zonemgr::add_adjacent_zone( "zoneq", "zone18", "enter_zone18" );
  364. zm_zonemgr::add_adjacent_zone( "zoner", "zone19", "enter_zone19" );
  365. zm_zonemgr::add_adjacent_zone( "zones", "zone20", "enter_zone20" );
  366. zm_zonemgr::add_adjacent_zone( "zonet", "zone20", "enter_zone20" );
  367. }
  368.  
  369. function custom_add_weapons()
  370. {
  371. zm_weapons::load_weapon_spec_from_table("gamedata/weapons/zm/zm_levelcommon_weapons.csv", 1);
  372. }
  373.  
  374. function respawn_player_auto()
  375. {
  376. level endon("end_game");
  377. self endon("disconnect");
  378.  
  379. // Change, if you need it to be faster
  380. wait_time = 30;
  381.  
  382. while(1)
  383. {
  384. if(self.sessionstate == "spectator")
  385. {
  386. iPrintLn("^2RESPAWNING IN 30 SECONDS");
  387. wait(wait_time);
  388. self thread zm::spectator_respawn_player();
  389. }
  390.  
  391. WAIT_SERVER_FRAME;
  392. }
  393. }
  394.  
  395. function SpecCountdownHud()
  396. {
  397. level endon ( "nuke_cancelled" );
  398. level.nukeTimer = 60;
  399. fade_time = 1;
  400.  
  401. // Set up HUD icon
  402. self.nuke_icon = NewHudElem();
  403. self.nuke_icon.alpha = 0.95;
  404. self.nuke_icon.sort = 2;
  405. self.nuke_icon.hidewheninmenu = true;
  406. self.nuke_icon.hidewhendead = false;
  407. self.nuke_icon.alignX = "center"; // left center right
  408. self.nuke_icon.alignY = "top"; // top middle bottom
  409. self.nuke_icon.horzAlign = "center"; // left center right
  410. self.nuke_icon.vertAlign = "top"; // top middle bottom
  411. self.nuke_icon.x = 0;
  412. self.nuke_icon.y = 0;
  413. self.nuke_icon SetShader("mwz_hud_nuke_countdown_backer", 120, 60);
  414.  
  415. // Set up HUD countdown text
  416. self.nuke_text = NewHudElem();
  417. self.nuke_text.alpha = 1;
  418. self.nuke_text.elemType = "timer"; // font
  419. self.nuke_text.font = "objective"; // default objective small
  420. self.nuke_text.fontscale = 3; // 1.5
  421. self.nuke_text SetTenthsTimer(level.nukeTimer);
  422. self.nuke_text.foreground = true;
  423. self.nuke_text.sort = 3;
  424. self.nuke_text.hidewheninmenu = true;
  425. self.nuke_text.hidewhendead = false;
  426. self.nuke_text.alignX = "left"; // left center right
  427. self.nuke_text.alignY = "top"; // top middle bottom
  428. self.nuke_text.horzAlign = "left"; // left center right
  429. self.nuke_text.vertAlign = "top"; // top middle bottom
  430. self.nuke_text.x = self.nuke_icon.x + 46;
  431. self.nuke_text.y = self.nuke_icon.y + 29;
  432. self.nuke_text.color = (1, 1, 1); // X/255 RBG
  433.  
  434. wait(level.nukeTimer);
  435.  
  436. self.nuke_text.alpha = 0;
  437. self.nuke_icon.alpha = 0;
  438.  
  439. wait(1);
  440. self.nuke_text Destroy();
  441. self.nuke_icon Destroy();
  442. }
  443.  
  444. function trig_hit_these()
  445. {
  446. if(isDefined(self.script_string))
  447. self SetHintString(self.script_string);
  448. self SetCursorHint("HINT_NOICON");
  449. self UseTriggerRequireLookAt();
  450. }
  451.  
  452. function SurvivalMode()
  453. {
  454. //////////////////////AREA A//////////////////////
  455. //turn on generator, hit the switch, find fuel (door jam) and wait for door to open
  456. trigs = getEntArray("trig_area_a", "targetname");
  457. player = GetPlayers();
  458. forEach(trig in trigs)
  459. {
  460. trig trig_hit_these();
  461. trigastart = getEntArray("trig_area_a_start", "script_noteworthy");
  462. trigaend = getEntArray("trig_area_a_end", "script_noteworthy");
  463. amodel = getEntArray("area_a_model_a", "targetname");
  464. trigamodel = getEntArray("trig_area_a_fuel", "script_noteworthy");
  465. trigastart waittill("trigger");
  466. player thread huddialog( "WELCOME TO HASHIMA ISLAND, HERE IS A TEST DIALOG OF HOW FAR WE CAN TYPE", "10" );
  467. trigamodel waittill("trigger");
  468. amodel hide();
  469. trigaend waittill("trigger");
  470. level thread nukeCountdownHUD();
  471. }
  472. }
  473.  
  474. function endgame()
  475. {
  476. trigk = getEnt("trig_area_k", "targetname");
  477. while(1)
  478. wait 0.5;
  479. trigk waittill("trigger", player );
  480. level thread nukeCountdownHUD();
  481. wait 300;
  482. level notify("end_game");
  483. }
  484.  
  485. function huddialog( text, time )
  486. {
  487. x = 80;
  488. y = 40;
  489. self.dialog_bg = create_simple_hud();
  490. self.dialog_bg.x = x + 80;
  491. self.dialog_bg.y = y + 2;
  492. self.dialog_bg.alignx = "center";
  493. self.dialog_bg.aligny = "bottom";
  494. self.dialog_bg.horzalign = "fullscreen";
  495. self.dialog_bg.vertalign = "fullscreen";
  496. self.dialog_bg.alpha = 1;
  497. self.dialog_bg.foreground = 1;
  498. self.dialog_bg setshader( "black", 500, 20 );
  499. self.dialog_text = create_simple_hud();
  500. self.dialog_text.x = x + 80;
  501. self.dialog_text.y = y;
  502. self.dialog_text.alignx = "center";
  503. self.dialog_text.aligny = "bottom";
  504. self.dialog_text.horzalign = "fullscreen";
  505. self.dialog_text.vertalign = "fullscreen";
  506. self.dialog_text.alpha = 1;
  507. self.dialog_text.fontscale = 1;
  508. self.dialog_text.foreground = 1;
  509. self.dialog_text setText( text );
  510. wait time;
  511. self.dialog_text Destroy();
  512. self.dialog_bg Destroy();
  513. }
  514.  
  515. function healthbar()
  516. {
  517. player = GetPlayers();
  518. self endon("disconnect");
  519. x = 80;
  520. y = 40;
  521. self.health_bar = create_simple_hud();
  522. self.health_bar.x = x + 80;
  523. self.health_bar.y = y + 2;
  524. self.health_bar.alignx = "center";
  525. self.health_bar.aligny = "top";
  526. self.health_bar.horzalign = "fullscreen";
  527. self.health_bar.vertalign = "fullscreen";
  528. self.health_bar.alpha = 1;
  529. self.health_bar.foreground = 1;
  530. self.health_bar setshader( "black", 1, 8 );
  531. self.health_text = create_simple_hud();
  532. self.health_text.x = x + 80;
  533. self.health_text.y = y;
  534. self.health_text.alignx = "center";
  535. self.health_text.aligny = "top";
  536. self.health_text.horzalign = "fullscreen";
  537. self.health_text.vertalign = "fullscreen";
  538. self.health_text.alpha = 1;
  539. self.health_text.fontscale = 1;
  540. self.health_text.foreground = 1;
  541.  
  542. if(!isDefined(player.maxhealth) || player.maxhealth <= 0)
  543. player.maxhealth = 600;
  544. self thread update_healthbar();
  545. }
  546.  
  547. function update_healthbar()
  548. {
  549. player = GetPlayers();
  550. self endon("health_bar");
  551. for(;;)
  552. {
  553. wait 0.05;
  554. width = (player.health / player.maxhealth) * 300;
  555. width = int( max(width, 1) );
  556.  
  557. self.health_bar setshader("black", width, 8);
  558. self.health_text setvalue(player.health);
  559. }
  560. }
  561.  
  562. function nukeCountdownHUD()
  563. {
  564. level endon ( "nuke_cancelled" );
  565. level.nukeTimer = 300;
  566. fade_time = 1;
  567.  
  568. // Set up HUD icon
  569. self.nuke_icon = NewHudElem();
  570. self.nuke_icon.alpha = 0.95;
  571. self.nuke_icon.sort = 2;
  572. self.nuke_icon.hidewheninmenu = true;
  573. self.nuke_icon.hidewhendead = false;
  574. self.nuke_icon.alignX = "left"; // left center right
  575. self.nuke_icon.alignY = "top"; // top middle bottom
  576. self.nuke_icon.horzAlign = "left"; // left center right
  577. self.nuke_icon.vertAlign = "top"; // top middle bottom
  578. self.nuke_icon.x = 0;
  579. self.nuke_icon.y = 0;
  580. self.nuke_icon SetShader("mwz_hud_nuke_countdown_backer", 120, 60);
  581.  
  582. // Set up HUD countdown text
  583. self.nuke_text = NewHudElem();
  584. self.nuke_text.alpha = 1;
  585. self.nuke_text.elemType = "timer"; // font
  586. self.nuke_text.font = "objective"; // default objective small
  587. self.nuke_text.fontscale = 3; // 1.5
  588. self.nuke_text SetTenthsTimer(level.nukeTimer);
  589. self.nuke_text.foreground = true;
  590. self.nuke_text.sort = 3;
  591. self.nuke_text.hidewheninmenu = true;
  592. self.nuke_text.hidewhendead = false;
  593. self.nuke_text.alignX = "left"; // left center right
  594. self.nuke_text.alignY = "top"; // top middle bottom
  595. self.nuke_text.horzAlign = "left"; // left center right
  596. self.nuke_text.vertAlign = "top"; // top middle bottom
  597. self.nuke_text.x = self.nuke_icon.x + 46;
  598. self.nuke_text.y = self.nuke_icon.y + 29;
  599. self.nuke_text.color = (0.92, 0.90, 0.23); // X/255 RBG
  600.  
  601. wait(level.nukeTimer);
  602.  
  603. self.nuke_text.alpha = 0;
  604. self.nuke_icon.alpha = 0;
  605.  
  606. wait(1);
  607. self.nuke_text Destroy();
  608. self.nuke_icon Destroy();
  609. }
  610.  
  611.  
  612. function Fluid3P()
  613. {
  614. player = GetPlayers();
  615. //if(GetDvarString("cg_thirdperson") == "1" )
  616. {
  617. while( 1 )
  618. {
  619. if(self actionslotonebuttonpressed())
  620. {
  621. setdvar("cg_thirdpersonrange", "50");
  622. setdvar("cg_thirdpersoncamlerpscale", "1");
  623. setdvar("cg_thirdperson", "1");
  624. setdvar("cg_thirdpersonfocusdist", "1024");
  625. player thread tp_ui();
  626. continue;
  627. if(self actionslotonebuttonpressed())
  628. {
  629. setdvar("cg_thirdperson", "0");
  630. player notify("3p_end");
  631. return;
  632. }
  633. }
  634. wait 0.2;
  635. }
  636. return;
  637. }
  638. }
  639.  
  640. function tp_ui()
  641. {
  642. self endon("3p_end");
  643. KSADUIA = create_simple_hud();
  644. KSADUIA.horzAlign = "center";
  645. KSADUIA.vertAlign = "middle";
  646. KSADUIA.alignX = "center";
  647. KSADUIA.alignY = "middle";
  648. KSADUIA.y = 0;
  649. KSADUIA.x = 0;
  650. KSADUIA.foreground = 1;
  651. KSADUIA.fontscale = 40.0;
  652. KSADUIA.alpha = 1;
  653. KSADUIA.color = ( 1, 1, 1 );
  654. KSADUIB = create_simple_hud();
  655. KSADUIB.horzAlign = "center";
  656. KSADUIB.vertAlign = "middle";
  657. KSADUIB.alignX = "center";
  658. KSADUIB.alignY = "middle";
  659. KSADUIB.y = 20;
  660. KSADUIB.x = 0;
  661. KSADUIB.foreground = 1;
  662. KSADUIB.fontscale = 40.0;
  663. KSADUIB.alpha = 1;
  664. KSADUIB.color = ( 1, 0.2, 0.2 );
  665. hud.hidewheninmenu = false;
  666. hud.alpha = 0;
  667. wait 0.05;
  668. KSADUIA setText( "O" );
  669. KSADUIB setText( "+" );
  670. wait 60;
  671. KSADUIA destroy();
  672. KSADUIB destroy();
  673. }
  674.  
  675. function doShowAmmo()
  676. {
  677. self endon("death");
  678. self endon("disconnect");
  679. for(;;)
  680. {
  681. weapon = self getCurrentWeapon();
  682. ammoClip = self getWeaponAmmoClip( weapon );
  683. ammoStock = self getWeaponAmmoStock( weapon );
  684. AmmoC = create_simple_hud();
  685. AmmoC.horzAlign = "right";
  686. AmmoC.vertAlign = "bottom";
  687. AmmoC.alignX = 0;
  688. AmmoC.alignY = 0;
  689. AmmoC.y = 0;
  690. AmmoC.x = 0;
  691. AmmoC.glowColor = (0.3,0.6,0.3);
  692. AmmoC.glowAlpha = 1;
  693. AmmoC.foreground = 1;
  694. AmmoC.fontscale = 1.5;
  695. AmmoC.alpha = 1;
  696. AmmoC.color = ( 0.8, 1.0, 0.8 );
  697. AmmoC setText(ammoClip + " | " + ammoStock);
  698. }
  699. }
  700.  
  701. function destroyOnDeath( displayAmmo )
  702. {
  703. self waittill ( "death" );
  704. displayAmmo destroy();
  705. }
  706.  
  707. function PreloadForAll()
  708. {
  709. wait 1;
  710. //trigoa = GetEnt("preloadtrig", "targetname");
  711. //trigoa waittill("trigger", player);
  712. //level thread PreroundSounds();
  713. //level thread CheckForMod();
  714. //level thread displaylevel_string();
  715.  
  716. }
  717.  
  718. function CheckForMod()
  719. {
  720. wait 1;
  721. if(getDvarString("fs_game") != "hashima" )
  722. {
  723. self FreezeControls( true );
  724. self thread battlechatf_string( "MOD 'HASHIMA' NOT LOADED AND IS REQUIRED TO PLAY THIS MAP" );
  725. }
  726. }
  727.  
  728. function battlechatf_string( text )
  729. {
  730. self endon("disconnect");
  731. hintstring = create_simple_hud();
  732. hintstring.horzAlign = "center";
  733. hintstring.vertAlign = "middle";
  734. hintstring.alignX = "center";
  735. hintstring.alignY = "middle";
  736. hintstring.y = -100;
  737. hintstring.x = 0;
  738. hintstring.glowColor = (0.3,0.6,0.3);
  739. hintstring.glowAlpha = 1;
  740. hintstring.foreground = 1;
  741. hintstring.fontscale = 1.5;
  742. hintstring.alpha = 1;
  743. hintstring.color = ( 0.8, 1.0, 0.8 );
  744. hintstring setText( text );
  745. wait 10;
  746. hintstring destroy();
  747. }
  748.  
  749. /*
  750. function SoundTesting()
  751. {
  752. player = GetPlayers();
  753. modVar("mc_soundtest", "");
  754. varst = getDvarstring("mc_soundtest");
  755. while(1)
  756. {
  757. wait 0.5;
  758. player PlaySoundToPlayer(varst, player);
  759. }
  760. }
  761. */
  762. function PreroundSounds()
  763. {
  764. {
  765. player = GetPlayers();
  766. while(1)
  767. wait 17;
  768. randome = randomint(6);
  769. switch(randome)
  770. {
  771. case 0:
  772. player playLocalSound("wwz_amb_jap_02_outdoor_zombie_dist_00");
  773. break;
  774. case 1:
  775. player playLocalSound("wwz_amb_jap_02_outdoor_zombie_dist_01");
  776. break;
  777. case 2:
  778. player playLocalSound("wwz_amb_jap_02_outdoor_zombie_dist_02");
  779. break;
  780. case 3:
  781. player playLocalSound("wwz_amb_jap_02_outdoor_zombie_dist_03");
  782. break;
  783. case 4:
  784. player playLocalSound("wwz_amb_jap_02_outdoor_zombie_dist_04");
  785. break;
  786. case 5:
  787. player playLocalSound("wwz_amb_jap_02_outdoor_zombie_dist_05");
  788. break;
  789. default:
  790. }
  791. }
  792. }
  793.  
  794.  
  795. function PreroundSoundsDrones()
  796. {
  797. {
  798. player = GetPlayers();
  799. while(1)
  800. wait 120;
  801. randomf = randomint(6);
  802. switch(randomf)
  803. {
  804. case 0:
  805. player playLocalSound("amb_JD_drone_clattering_machine");
  806. break;
  807. case 1:
  808. player playLocalSound("amb_JD_drone_pulsing_darkness");
  809. break;
  810. case 2:
  811. player playLocalSound("amb_JD_drone_spinning_top");
  812. break;
  813. case 3:
  814. player playLocalSound("AtmosphericDrone03");
  815. break;
  816. case 4:
  817. player playLocalSound("DroneStaticWaves_ZA01");
  818. break;
  819. case 5:
  820. player playLocalSound("DroneVirusResearch_ZA01");
  821. break;
  822. default:
  823. }
  824. }
  825. }
  826.  
  827. function displaylevel_string()
  828. {
  829. self endon("disconnect");
  830. currentlevel = 1;
  831. currentscore = self.score;
  832. displevel = create_simple_hud();
  833. displevel.horzAlign = "left";
  834. displevel.vertAlign = "top";
  835. displevel.alignX = "left";
  836. displevel.alignY = "top";
  837. displevel.y = 0;
  838. displevel.x = 0;
  839. displevel.glowColor = (0.3,0.6,0.3);
  840. displevel.glowAlpha = 1;
  841. displevel.foreground = 1;
  842. displevel.fontscale = 1.5;
  843. displevel.alpha = 1;
  844. displevel.color = ( 0.8, 1.0, 0.8 );
  845. displevel setText( "Z-RANK |" + currentlevel + " |" );
  846. displevelb = create_simple_hud();
  847. displevelb.horzAlign = "left";
  848. displevelb.vertAlign = "top";
  849. displevelb.alignX = "left";
  850. displevelb.alignY = "top";
  851. displevelb.y = -50;
  852. displevelb.x = 0;
  853. displevelb.glowColor = (0.3,0.6,0.3);
  854. displevelb.glowAlpha = 1;
  855. displevelb.foreground = 1;
  856. displevelb.fontscale = 1.5;
  857. displevelb.alpha = 1;
  858. displevelb.color = ( 0.8, 1.0, 0.8 );
  859. displevelb setText( "Z-SCORE |" + currentscore + " |" );
  860. }
  861.  
  862. function levelup_string()
  863. {
  864. currentlevel = 1;
  865. lvlup = create_simple_hud();
  866. lvlup.horzAlign = "center";
  867. lvlup.vertAlign = "top";
  868. lvlup.alignX = "center";
  869. lvlup.alignY = "top";
  870. lvlup.y = 0;
  871. lvlup.x = 0;
  872. lvlup.glowColor = (0.3,0.6,0.3);
  873. lvlup.glowAlpha = 1;
  874. lvlup.foreground = 1;
  875. lvlup.fontscale = 1.5;
  876. lvlup.alpha = 1;
  877. lvlup.color = ( 0.8, 1.0, 0.8 );
  878. lvlup setText( "LEVEL UP" + currentlevel );
  879. wait 5;
  880. lvlup destroy();
  881. }
  882.  
  883. function ks_AssaultDrone()
  884. {
  885. player = GetPlayers();
  886. {
  887. if(player UseButtonPressed())
  888. wait 0.5;
  889. currentweapon = player GetCurrentWeapon();
  890. currentweaponalt = player GetCurrentWeaponAltWeapon();
  891. wait 1;
  892. player thread ks_ad_ui();
  893. player hide();
  894. player.maxhealth = 50000;
  895. player.health = player.maxhealth;
  896. player AllowedStances( "crouch" );
  897. player SetStance( "crouch" );
  898. player SetMoveSpeedScale( "2" );
  899. player thread ks_ad_spawn();
  900. player AllowSprint(false);
  901. player TakeAllWeapons();
  902. setdvar("cg_drawgun", "0");
  903. player func_giveWeapon("iw4_stinger_up");
  904. player SwitchToWeapon();
  905. player givemaxammo("iw4_stinger_up");
  906. wait 60;
  907. setdvar("cg_drawgun", "1");
  908. player.maxhealth = 500;
  909. player show();
  910. player AllowSprint(true);
  911. player TakeAllWeapons();
  912. player giveWeapon(currentweapon);
  913. player giveWeapon(currentweaponalt);
  914. player SwitchToWeapon(currentweapon);
  915. player givemaxammo(currentweapon);
  916. player givemaxammo(currentweaponalt);
  917. player SetMoveSpeedScale( "1" );
  918. player AllowedStances( "stand","crouch","prone" );
  919. player SetStance( "stand" );
  920. wait 0.5;
  921. }
  922. }
  923.  
  924. function ks_ad_spawn()
  925. {
  926. drone = spawn("script_model", self.origin+(0,0,0));
  927. drone setModel("vehicle_ugv_robot");
  928. drone linkto(self);
  929. while(1)
  930. {
  931. wait 0.5;
  932. //if(GetDvarInt("ks_ad_enable") == "1")
  933. {
  934. angles = self GetPlayerAngles();
  935. drone RotatePitch(angles, .001);
  936. wait 60;
  937. drone unlink();
  938. drone delete();
  939. }
  940. }
  941. }
  942.  
  943. function ks_ad_ui()
  944. {
  945. KSADUIA = create_simple_hud();
  946. KSADUIA.horzAlign = "center";
  947. KSADUIA.vertAlign = "middle";
  948. KSADUIA.alignX = "center";
  949. KSADUIA.alignY = "middle";
  950. KSADUIA.y = 0;
  951. KSADUIA.x = 0;
  952. KSADUIA.foreground = 1;
  953. KSADUIA.fontscale = 40.0;
  954. KSADUIA.alpha = 1;
  955. KSADUIA.color = ( 1, 1, 1 );
  956. KSADUIB = create_simple_hud();
  957. KSADUIB.horzAlign = "center";
  958. KSADUIB.vertAlign = "middle";
  959. KSADUIB.alignX = "center";
  960. KSADUIB.alignY = "middle";
  961. KSADUIB.y = 20;
  962. KSADUIB.x = 0;
  963. KSADUIB.foreground = 1;
  964. KSADUIB.fontscale = 40.0;
  965. KSADUIB.alpha = 1;
  966. KSADUIB.color = ( 1, 0.2, 0.2 );
  967. hud.hidewheninmenu = false;
  968. hud.alpha = 0;
  969. //ardronehud = newClientHudElem( self );
  970. //ardronehud.x = 0;
  971. //ardronehud.y = 0;
  972. //ardronehud setshader( "ardronehud", 640, 480 );
  973. //ardronehud.alignX = "left";
  974. //ardronehud.alignY = "top";
  975. //ardronehud.horzAlign = "fullscreen";
  976. //ardronehud.vertAlign = "fullscreen";
  977. //ardronehud.alpha = 0;
  978. wait 0.05;
  979. KSADUIA setText( "O" );
  980. KSADUIB setText( "+" );
  981. wait 60;
  982. KSADUIA destroy();
  983. KSADUIB destroy();
  984. //ardronehud destroy();
  985. }
  986.  
  987. function ks_Drone()
  988. {
  989. //TRIGKSTEST = GetEnt("ks_test", "targetname");
  990. //TRIGKSTEST waittill("trigger", player);
  991. player = getPlayers();
  992. wait 0.5;
  993. currentweapon = player GetCurrentWeapon();
  994. currentweaponalt = player GetCurrentWeaponAltWeapon();
  995. wait 1;
  996. //player thread ks_drone_ui();
  997. player thread ks_drone_spawn();
  998. player hide();
  999. player.maxhealth = 1500;
  1000. playerorigin = player.origin;
  1001. player.health = player.maxhealth;
  1002. player TakeAllWeapons();
  1003. setdvar("cg_drawgun", "0");
  1004. player func_giveWeapon("iw4_thumper_up");
  1005. player SwitchToWeapon();
  1006. player givemaxammo("iw4_thumper_up");
  1007. //player thread DroneCheckKeys();
  1008. wait 55;
  1009. player playsound( "alarm_loops_08_dronepre-exp" );
  1010. wait 5;
  1011. self.Fly = "0";
  1012. player notify( "drone_explode" );
  1013. player TakeAllWeapons();
  1014. PlayFX("explosions/fx_exp_bomb_demo_mp", player.origin+(0,0,60));
  1015. player playsound( "explosion_med_long_tail_01" );
  1016. //SetPlayerIgnoreRadiusDamage(true);
  1017. RadiusDamage(player.origin + (0,0,12), 256, 110, 10, undefined, "MOD_GRENADE_SPLASH", GetWeapon("iw4_stinger_up"));
  1018. setdvar("cg_drawgun", "1");
  1019. player.maxhealth = 500;
  1020. player setorigin(playerorigin);
  1021. player show();
  1022. player giveWeapon(currentweapon);
  1023. player giveWeapon(currentweaponalt);
  1024. player SwitchToWeapon(currentweapon);
  1025. player givemaxammo(currentweapon);
  1026. player givemaxammo(currentweaponalt);
  1027. }
  1028.  
  1029. function DroneCheckKeys()
  1030. {
  1031. player = getPlayers();
  1032. //if(self.UFOMode == false)
  1033. //{
  1034. //player thread doUFOMode();
  1035. self.NoclipMode = true;
  1036. //iPrintlnBOLD("^5PRESS [{+smoke}] TO MOVE");
  1037. //}
  1038. //else
  1039. //{
  1040. //self notify("EndUFOMode");
  1041. //self.NoclipMode = false;
  1042. //iPrintlnBOLD("^5Noclip ^7[^1OFF^7]");
  1043. //}
  1044. }
  1045.  
  1046. function doUFOMode()
  1047. {
  1048. player = getPlayers();
  1049. self endon("death");
  1050. self endon("EndUFOMode");
  1051. UFO = spawn("script_model",player.origin);
  1052. player playerLinkTo(UFO);
  1053. self.Fly = 1;
  1054. while(1)
  1055. {
  1056. if(player adsButtonPressed())
  1057. {
  1058. Fly = self.origin + vector_scal(anglesToForward(self getPlayerAngles()),20);
  1059. UFO moveTo(Fly,.05);
  1060. }
  1061. if(self.Fly == "0")
  1062. {
  1063. self unlink();
  1064. UFO delete();
  1065. }
  1066. wait .001;
  1067. }
  1068. }
  1069.  
  1070. function ks_drone_spawn()
  1071. {
  1072. self endon("drone_explode");
  1073. self endon("EndUFOMode");
  1074. drone = spawn("script_model", self.origin+(0,0,60));
  1075. drone setModel("ks_drone");
  1076.  
  1077. dronelink = spawn( "script_model", self.origin, 1 );
  1078. dronelink.angles = self.angles;
  1079. drone linkto(dronelink);
  1080. //dronelink linkto(self);
  1081. //self PlayerLinkTo( dronelink, undefined, 1, 180, 180, 180, 180, true );
  1082. self PlayerLinkTo(dronelink);
  1083. //drone rotateto(self.angles, .001);
  1084. self disableoffhandweapons();
  1085. while(1)
  1086. {
  1087. if(self FragButtonPressed())
  1088. {
  1089. Fly = self.origin + vector_scal(anglesToForward(self getPlayerAngles()),20);
  1090. dronelink moveTo(Fly,.05);
  1091.  
  1092. //normalized = anglestoforward( self getplayerangles() );
  1093. //scaled = vector_scale( normalized, 20 );
  1094. //originpos += scaled;
  1095. //self.originobj.origin = originpos;
  1096. }
  1097. if(self.Fly == "0")
  1098. {
  1099. self unlink();
  1100. drone delete();
  1101. self enableoffhandweapons();
  1102. }
  1103. else
  1104. {
  1105. angles = self GetPlayerAngles();
  1106. drone RotatePitch(angles, .001);
  1107. drone playloopsound( "PROPELLERENGINELoop01-dronefly" );
  1108. wait 59;
  1109. drone delete();
  1110. self unlink();
  1111. self notify("EndUFOMode");
  1112. }
  1113. }
  1114. }
  1115.  
  1116. function ks_RCXD()
  1117. {
  1118. player = GetPlayers();
  1119. //TRIGKSTEST = GetEnt("ks_test", "targetname");
  1120. //TRIGKSTEST waittill("trigger", player);
  1121. //if(player ActionSlotFourButtonPressed())
  1122. wait 0.5;
  1123. currentweapon = player GetCurrentWeapon();
  1124. currentweaponalt = player GetCurrentWeaponAltWeapon();
  1125. wait 1;
  1126. //player thread ks_rc_ui();
  1127. player hide();
  1128. player.maxhealth = 1500;
  1129. player.health = player.maxhealth;
  1130. player AllowedStances( "prone" );
  1131. player SetStance( "prone" );
  1132. player SetMoveSpeedScale( "10" );
  1133. player thread ks_rc_spawn();
  1134. player AllowSprint(false);
  1135. player TakeAllWeapons();
  1136. setdvar("cg_drawgun", "0");
  1137. setdvar("cg_thirdperson", "1");
  1138. wait 1;
  1139. while(1)
  1140. {
  1141. if( self AttackButtonPressed())
  1142. {
  1143. player notify( "rcxd_explode" );
  1144. //SetPlayerIgnoreRadiusDamage(true);
  1145. player playsound( "explosion_med_long_tail_01" );
  1146. RadiusDamage(player.origin + (0,0,12), 256, 110, 10, undefined, "MOD_GRENADE_SPLASH", GetWeapon("iw4_stinger_up"));
  1147. PlayFX("explosions/fx_exp_bomb_demo_mp", player.origin+(0,0,1));
  1148. setdvar("cg_drawgun", "1");
  1149. setdvar("cg_thirdperson", "0");
  1150. player.maxhealth = 500;
  1151. player show();
  1152. player AllowSprint(true);
  1153. player giveWeapon(currentweapon);
  1154. player giveWeapon(currentweaponalt);
  1155. player SwitchToWeapon(currentweapon);
  1156. player givemaxammo(currentweapon);
  1157. player givemaxammo(currentweaponalt);
  1158. player SetMoveSpeedScale( "1" );
  1159. player AllowedStances( "stand","crouch","prone" );
  1160. player SetStance( "stand" );
  1161. wait 0.5;
  1162. }
  1163. }
  1164. }
  1165.  
  1166. function ks_rc_spawn()
  1167. {
  1168. self endon("rcxd_explode");
  1169. droneb = spawn("script_model", self.origin+(0,0,5));
  1170. droneb setModel("ks_rcxd");
  1171. droneb linkto(self);
  1172. //drone rotateto(self.angles, .001);
  1173. while(1)
  1174. {
  1175. wait 0.5;
  1176. //if(GetDvarInt("ks_ad_enable") == "1")
  1177. {
  1178. angles = self GetPlayerAngles();
  1179. droneb RotatePitch(angles, .001);
  1180. }
  1181. }
  1182. }
  1183.  
  1184. function PerkBox()
  1185. {
  1186. cshops = getEntArray("trig_cp_perk","targetname");
  1187. forEach(cshop in cshops)
  1188. {
  1189. cshop thread RandPerkBox();
  1190. cshop SetHintString("RANDOM PERK [1000]");
  1191. }
  1192. }
  1193.  
  1194. function RandPerkBox()
  1195. {
  1196. cost = 1000;
  1197. while(1)
  1198. {
  1199. wait 0.1;
  1200. self waittill("trigger", player);
  1201. if( player.score >= cost )
  1202. {
  1203. player PlayLocalSound( "crusade_money" );
  1204. player zm_score::minus_to_player_score(cost);
  1205. randomc = randomint(6);
  1206. switch(randomc)
  1207. {
  1208. case 0:
  1209. Player zm_perks::give_perk("specialty_quickrevive");
  1210. iPrintLnBold("^2QUICK REVIVE");
  1211. break;
  1212. case 1:
  1213. Player zm_perks::give_perk("specialty_fastreload");
  1214. iPrintLnBold("^2FAST RELOAD");
  1215. break;
  1216. case 2:
  1217. Player zm_perks::give_perk("specialty_doubletap2");
  1218. iPrintLnBold("^2DOUBLE TAP");
  1219. break;
  1220. case 3:
  1221. Player zm_perks::give_perk("specialty_staminup");
  1222. iPrintLnBold("^2STAMINA");
  1223. break;
  1224. case 4:
  1225. Player zm_perks::give_perk("specialty_whoswho");
  1226. iPrintLnBold("^2");
  1227. break;
  1228. case 5:
  1229. Player zm_perks::give_perk("specialty_tombstone");
  1230. iPrintLnBold("^2TOMBSTONE");
  1231. break;
  1232. default:
  1233. }
  1234. return;
  1235. }
  1236. }
  1237. }
  1238.  
  1239. function RandWeapBox()
  1240. {
  1241. cshops = getEntArray("trig_cp_rweap","targetname");
  1242. forEach(cshop in cshops)
  1243. {
  1244. cshop thread RandWeap();
  1245. cshop SetHintString("RANDOM WEAPON [1000]");
  1246. }
  1247. }
  1248.  
  1249. function TrapBox()
  1250. {
  1251. bshops = getEntArray("trig_cp_trap","targetname");
  1252. forEach(bshop in bshops)
  1253. {
  1254. bshop thread RandTrapBox();
  1255. bshop SetHintString("RANDOM TRAP [1000]");
  1256. }
  1257. }
  1258.  
  1259. function RandTrapBox()
  1260. {
  1261. cost = 1000;
  1262. while(1)
  1263. {
  1264. wait 0.1;
  1265. self waittill("trigger", player);
  1266. if( player.score >= cost )
  1267. {
  1268. player PlayLocalSound( "crusade_money" );
  1269. player zm_score::minus_to_player_score(cost);
  1270. randomb = randomint(5);
  1271. switch(randomb)
  1272. {
  1273. case 0:
  1274. iPrintLnBold("^2 Death Machine");
  1275. level thread DeathM();
  1276. break;
  1277. case 1:
  1278. iPrintLnBold("^2Claymore");
  1279. thread zm_claymore::init();
  1280. break;
  1281. case 2:
  1282. iPrintLnBold("^2 Flame Thrower");
  1283. level thread Fthrower();
  1284. break;
  1285. case 3:
  1286. iPrintLnBold("^2 RPG");
  1287. level thread Rpg();
  1288. break;
  1289. case 4:
  1290. iPrintLnBold("^2 Drone");
  1291. level thread ks_Drone();
  1292. break;
  1293. /*
  1294. case 5:
  1295. iPrintLnBold("^1 Preditor Missile");
  1296. //player thread PreditorMissile();
  1297. break;
  1298. case 6:
  1299. //level thread supportbird();
  1300. iPrintLnBold("^2 Support Bird");
  1301. case 7:
  1302. iPrintLnBold("^2 Assault Drone");
  1303. //player thread ks_AssaultDrone();
  1304. case 8:
  1305. //level thread beartrap();
  1306. iPrintLnBold("^2 Bear Trap");
  1307. case 9:
  1308. //player func_giveWeapon("bouncingbetty");
  1309. iPrintLnBold("^2 Betty"); //bettys
  1310. case 10:
  1311. iPrintLnBold("^2 Drop Wire");
  1312. //player thread DropWire();
  1313. case 11:
  1314. iPrintLnBold("^2 Undead Bait");
  1315. player thread UndeadBait();
  1316. case 12:
  1317. iPrintLnBold("^2 Mines");
  1318. //player thread Mines();
  1319. case 13:
  1320. //player thread kamikaze();
  1321. iPrintLnBold("^2 Kamikaze");
  1322. case 14:
  1323. iPrintLnBold("^2 Zombie Blood");
  1324. player thread ZBlood();
  1325. case 15:
  1326. iPrintLnBold("^2RCXD");
  1327. player thread ks_RCXD();*/
  1328. default:
  1329. }
  1330. return;
  1331. }
  1332. }
  1333. }
  1334.  
  1335. function ZBlood()
  1336. {
  1337. team = "Axis";
  1338. wait 30;
  1339. team = "Allies";
  1340. }
  1341.  
  1342. function DeathM()
  1343. {
  1344. player = GetPlayers();
  1345. currentweapon = player GetCurrentWeapon();
  1346. player TakeAllWeapons();
  1347. player func_giveWeapon("minigun");
  1348. wait 60;
  1349. player giveWeapon(currentweapon);
  1350. player SwitchToWeapon(currentweapon);
  1351. player givemaxammo(currentweapon);
  1352. }
  1353.  
  1354. function Rpg()
  1355. {
  1356. player = GetPlayers();
  1357. currentweapon = player GetCurrentWeapon();
  1358. player TakeAllWeapons();
  1359. player func_giveWeapon("iw4_rpg7");
  1360. wait 60;
  1361. player giveWeapon(currentweapon);
  1362. player SwitchToWeapon(currentweapon);
  1363. player givemaxammo(currentweapon);
  1364. }
  1365.  
  1366. function Fthrower()
  1367. {
  1368. player = GetPlayers();
  1369. currentweapon = player GetCurrentWeapon();
  1370. player TakeAllWeapons();
  1371. player func_giveWeapon("m2_flamethrower");
  1372. wait 60;
  1373. player giveWeapon(currentweapon);
  1374. player SwitchToWeapon(currentweapon);
  1375. player givemaxammo(currentweapon);
  1376. }
  1377.  
  1378. function kamikaze()
  1379. {
  1380. while(1)
  1381. {
  1382. if(self usebuttonpressed())
  1383. {
  1384. RadiusDamage(self.origin + (0,0,12), 500, 110, 10, undefined, "MOD_GRENADE_SPLASH", GetWeapon("iw4_stinger_up"));
  1385. PlayFX("explosions/fx_exp_bomb_demo_mp", self.origin+(0,0,5));
  1386. }
  1387. }
  1388. }
  1389.  
  1390. function mines()
  1391. {
  1392. level.mineSet = 0;
  1393. mineSpot = undefined;
  1394. zombies = GetAiTeamArray( level.zombie_team );
  1395. if(IsDefined(zombies) && zombies.size > 0)
  1396. for(;;)
  1397. {
  1398. if(self usebuttonpressed() && level.mineSet == 0)
  1399. {
  1400. mineSpot = self.origin;
  1401. mineSpot SetModel("weapon_proximity_mine");
  1402. level.mineSet = 1;
  1403. }
  1404. foreach(zombie in zombies)
  1405. {
  1406. if(distance(minespot, zombie.origin) < 10 && level.mineSet == "1" )
  1407. {
  1408. RadiusDamage(mineSpot.origin + (0,0,12), 256, 110, 10, undefined, "MOD_GRENADE_SPLASH", GetWeapon("iw4_stinger_up"));
  1409. PlayFX("explosions/fx_exp_bomb_demo_mp", mineSpot.origin+(0,0,5));
  1410. level.mineSet = 0;
  1411. wait 3;
  1412. }
  1413. }
  1414. wait 0.05;
  1415. }
  1416. }
  1417.  
  1418.  
  1419. function UndeadBait()
  1420. {
  1421. player = GetPlayers();
  1422. if( player UseButtonPressed())
  1423. {
  1424. iPrintLnBold("^1ZOMBIEFIED for 30 seconds");
  1425. setdvar("zombify_player", "1");
  1426. wait 30;
  1427. setdvar("zombify_player", "0");
  1428. /*
  1429. bait = spawn("script_model", self.origin+(0,0,0));
  1430. bait setModel("p7_food_jar_pepper_03_closed");
  1431. hit_player thread zm_utility::create_zombie_point_of_interest( 1000, 15, 10000 );
  1432. hit_player.attract_to_origin = true;
  1433. hit_player thread zm_utility::create_zombie_point_of_interest_attractor_positions( 4, 45 );
  1434. hit_player thread zm_utility::wait_for_attractor_positions_complete();
  1435. wait 30;
  1436. hit_player.attract_to_origin = false;*/
  1437. }
  1438. }
  1439.  
  1440. function AmmoRestock()
  1441. {
  1442. ashops = getEntArray("trig_cp_ammo","targetname");
  1443. forEach(ashop in ashops)
  1444. {
  1445. ashop thread MaxAmmo();
  1446. ashop SetHintString("AMMO RESTOCK [1000] (PER WEAPON)");
  1447. }
  1448. }
  1449.  
  1450. function MaxAmmo()
  1451. {
  1452. //trigger = GetEnt("maxammo_trigger", "targetname");
  1453. //trigger SetHintString("Press ^3&&1^7 for max ammo. Cost [1000]"); // Changes the string that shows when looking at the trigger.
  1454. //trigger SetCursorHint("HINT_NOICON"); // Changes the icon that shows when looking at the trigger.
  1455. trigger1cost = 1000;
  1456.  
  1457. while(1)
  1458. {
  1459. wait 0.1;
  1460. {
  1461. // Purchase Code
  1462. self waittill("trigger", player);
  1463.  
  1464. if(player.score >= trigger1cost)
  1465. {
  1466. player zm_score::minus_to_player_score(trigger1cost);
  1467. player PlayLocalSound( "crusade_money" );
  1468. currentweapon = player GetCurrentWeapon();
  1469. currentweaponalt = player GetCurrentWeaponAltWeapon();
  1470. player givemaxammo(currentweapon);
  1471. player givemaxammo(currentweaponalt);
  1472. }
  1473. else
  1474. {
  1475. player PlayLocalSound( "nsz_deny" );
  1476. }
  1477. }
  1478. wait(5);
  1479. }
  1480. }
  1481.  
  1482. function func_giveWeapon(weapon)
  1483. {
  1484. //player = GetPlayers();
  1485. //self zm_weapons::weapon_give(weapon);
  1486. self TakeWeapon(self GetCurrentWeapon());
  1487. weapon = getWeapon(weapon);
  1488. self GiveWeapon(weapon);
  1489. self GiveMaxAmmo(weapon);
  1490. self SwitchToWeapon(weapon);
  1491. }
  1492.  
  1493. function create_simple_hud( client, team )
  1494. {
  1495. if ( IsDefined( team ) )
  1496. {
  1497. hud = NewTeamHudElem( team );
  1498. hud.team = team;
  1499. }
  1500. else
  1501. {
  1502. if( IsDefined( client ) )
  1503. {
  1504. hud = NewClientHudElem( client );
  1505. }
  1506. else
  1507. {
  1508. hud = NewHudElem();
  1509. }
  1510. }
  1511.  
  1512. level.hudelem_count++;
  1513.  
  1514. hud.foreground = true;
  1515. hud.sort = 1;
  1516. hud.hidewheninmenu = false;
  1517.  
  1518. return hud;
  1519. }
  1520.  
  1521. function RandWeap()
  1522. {
  1523. self endon( "disconnect" );
  1524. cost = 1000;
  1525. while(1)
  1526. {
  1527. wait 0.1;
  1528. self waittill("trigger", player);
  1529. if( player.score >= cost )
  1530. {
  1531. player PlayLocalSound( "crusade_money" );
  1532. player zm_score::minus_to_player_score(cost);
  1533. random = randomint(84);
  1534.  
  1535. switch(random)
  1536. {
  1537. case 0:
  1538. player func_giveWeapon("iw4_wa2000");
  1539. break;
  1540. case 1:
  1541. player func_giveWeapon("iw4_wa2000");
  1542. break;
  1543. case 2:
  1544. player func_giveWeapon("iw4_vector");
  1545. break;
  1546. case 3:
  1547. player func_giveWeapon("iw4_vector");
  1548. break;
  1549. case 4:
  1550. player func_giveWeapon("iw4_ump45");
  1551. break;
  1552. case 5:
  1553. player func_giveWeapon("iw4_ump45");
  1554. break;
  1555. case 6:
  1556. player func_giveWeapon("iw4_tmp");
  1557. break;
  1558. case 7:
  1559. player func_giveWeapon("iw4_tmp");
  1560. break;
  1561. case 8:
  1562. player func_giveWeapon("iw4_tar21");
  1563. break;
  1564. case 9:
  1565. player func_giveWeapon("iw4_tar21");
  1566. break;
  1567. case 10:
  1568. player func_giveWeapon("iw4_scarh");
  1569. break;
  1570. case 11:
  1571. player func_giveWeapon("iw4_scarh");
  1572. break;
  1573. case 12:
  1574. player func_giveWeapon("iw4_rpd");
  1575. break;
  1576. case 13:
  1577. player func_giveWeapon("iw4_rpd");
  1578. break;
  1579. case 14:
  1580. player func_giveWeapon("iw4_ranger_ldw_up_zm");
  1581. player func_giveWeapon("iw4_ranger_rdw_up_zm");
  1582. break;
  1583. case 15:
  1584. player func_giveWeapon("iw4_pp2000_ldw_up_zm");
  1585. player func_giveWeapon("iw4_pp2000_rdw_up_zm");
  1586. break;
  1587. case 16:
  1588. player func_giveWeapon("iw4_pp2000");
  1589. break;
  1590. case 17:
  1591. player func_giveWeapon("iw4_p90_ldw_up_zm");
  1592. player func_giveWeapon("iw4_p90_rdw_up_zm");
  1593. break;
  1594. case 18:
  1595. player func_giveWeapon("iw4_mp5k_ldw_up_zm");
  1596. player func_giveWeapon("iw4_mp5k_rdw_up_zm");
  1597. break;
  1598. case 19:
  1599. player func_giveWeapon("iw4_model1887_ldw_up_zm");
  1600. player func_giveWeapon("iw4_model1887_rdw_up_zm");
  1601. break;
  1602. case 20:
  1603. player func_giveWeapon("iw4_mini_uzi");
  1604. break;
  1605. case 21:
  1606. player func_giveWeapon("iw4_mini_uzi");
  1607. break;
  1608. case 22:
  1609. player func_giveWeapon("iw4_mg4");
  1610. break;
  1611. case 23:
  1612. player func_giveWeapon("iw4_mg4");
  1613. break;
  1614. case 24:
  1615. player func_giveWeapon("iw4_m1014");
  1616. break;
  1617. case 25:
  1618. player func_giveWeapon("iw4_m1014");
  1619. break;
  1620. case 26:
  1621. player func_giveWeapon("iw4_m240");
  1622. break;
  1623. case 27:
  1624. player func_giveWeapon("iw4_m240");
  1625. break;
  1626. case 28:
  1627. player func_giveWeapon("iw4_m93r");
  1628. break;
  1629. case 29:
  1630. player func_giveWeapon("iw4_m93r");
  1631. break;
  1632. case 30:
  1633. player func_giveWeapon("iw4_m16a4");
  1634. break;
  1635. case 31:
  1636. player func_giveWeapon("iw4_m16a4");
  1637. break;
  1638. case 32:
  1639. player func_giveWeapon("iw4_m14ebr");
  1640. break;
  1641. case 33:
  1642. player func_giveWeapon("iw4_m14ebr");
  1643. break;
  1644. case 34:
  1645. player func_giveWeapon("iw4_l86_lsw_up");
  1646. break;
  1647. case 35:
  1648. player func_giveWeapon("iw4_l86_lsw_up");
  1649. break;
  1650. case 36:
  1651. player func_giveWeapon("iw4_intervention");
  1652. break;
  1653. case 37:
  1654. player func_giveWeapon("iw4_g18_ldw_up_zm");
  1655. player func_giveWeapon("iw4_g18_rdw_up_zm");
  1656. break;
  1657. case 38:
  1658. player func_giveWeapon("iw4_f2000");
  1659. break;
  1660. case 39:
  1661. player func_giveWeapon("iw4_f2000");
  1662. break;
  1663. case 40:
  1664. player func_giveWeapon("iw4_famas");
  1665. break;
  1666. case 41:
  1667. player func_giveWeapon("iw4_famas");
  1668. break;
  1669. case 42:
  1670. player func_giveWeapon("iw4_fal");
  1671. break;
  1672. case 43:
  1673. player func_giveWeapon("iw4_fal");
  1674. break;
  1675. case 44:
  1676. player func_giveWeapon("iw4_dragunov");
  1677. break;
  1678. case 45:
  1679. player func_giveWeapon("iw4_m82a1");
  1680. break;
  1681. case 46:
  1682. player func_giveWeapon("iw4_m82a1");
  1683. break;
  1684. case 47:
  1685. player func_giveWeapon("iw4_aug_hbar");
  1686. break;
  1687. case 48:
  1688. player func_giveWeapon("iw4_aug_hbar");
  1689. break;
  1690. case 49:
  1691. player func_giveWeapon("iw4_ak47");
  1692. break;
  1693. case 50:
  1694. player func_giveWeapon("iw4_ak47");
  1695. break;
  1696. case 51:
  1697. player func_giveWeapon("iw4_acr");
  1698. break;
  1699. case 52:
  1700. player func_giveWeapon("iw4_acr");
  1701. break;
  1702. case 53:
  1703. player func_giveWeapon("iw4_aa12");
  1704. break;
  1705. case 54:
  1706. player func_giveWeapon("iw5_xm25");
  1707. break;
  1708. case 55:
  1709. player func_giveWeapon("iw5_usas12");
  1710. break;
  1711. case 56:
  1712. player func_giveWeapon("iw5_ump45");
  1713. break;
  1714. case 57:
  1715. player func_giveWeapon("iw5_type95");
  1716. break;
  1717. case 58:
  1718. player func_giveWeapon("iw5_spas12");
  1719. break;
  1720. case 59:
  1721. player func_giveWeapon("iw5_scarl");
  1722. break;
  1723. case 60:
  1724. player func_giveWeapon("iw5_rsass");
  1725. break;
  1726. case 61:
  1727. player func_giveWeapon("iw5_pp90m1");
  1728. break;
  1729. case 62:
  1730. player func_giveWeapon("iw5_pm9");
  1731. break;
  1732. case 63:
  1733. player func_giveWeapon("iw5_pkp");
  1734. break;
  1735. case 64:
  1736. player func_giveWeapon("iw5_p99");
  1737. break;
  1738. case 65:
  1739. player func_giveWeapon("iw5_msr");
  1740. break;
  1741. case 66:
  1742. player func_giveWeapon("iw5_mp7");
  1743. break;
  1744. case 67:
  1745. player func_giveWeapon("iw5_mp412");
  1746. break;
  1747. case 68:
  1748. player func_giveWeapon("iw5_mp5");
  1749. break;
  1750. case 69:
  1751. player func_giveWeapon("iw5_mk46");
  1752. break;
  1753. case 70:
  1754. player func_giveWeapon("iw5_mg36");
  1755. break;
  1756. case 71:
  1757. player func_giveWeapon("iw5_m60e4");
  1758. break;
  1759. case 72:
  1760. player func_giveWeapon("iw5_m16a4");
  1761. break;
  1762. case 73:
  1763. player func_giveWeapon("iw5_m4a1");
  1764. break;
  1765. case 74:
  1766. player func_giveWeapon("iw5_l118a");
  1767. break;
  1768. case 75:
  1769. player func_giveWeapon("iw5_l86_lsw");
  1770. break;
  1771. case 76:
  1772. player func_giveWeapon("iw5_ksg12");
  1773. break;
  1774. case 77:
  1775. player func_giveWeapon("iw5_g36c");
  1776. break;
  1777. case 78:
  1778. player func_giveWeapon("iw5_fmg9");
  1779. break;
  1780. case 79:
  1781. player func_giveWeapon("iw5_fad");
  1782. break;
  1783. case 80:
  1784. player func_giveWeapon("iw5_cm901");
  1785. break;
  1786. case 81:
  1787. player func_giveWeapon("iw5_m82a1");
  1788. break;
  1789. case 82:
  1790. player func_giveWeapon("iw5_as50");
  1791. break;
  1792. case 83:
  1793. player func_giveWeapon("iw5_ak47");
  1794. break;
  1795. default:
  1796. }
  1797. return;
  1798. }
  1799. }
  1800. }
  1801.  
  1802. function vector_scal(vec, scale)
  1803. {
  1804. vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
  1805. return vec;
  1806. }
  1807.  
  1808. function bo2_deathhands()
  1809. {
  1810. self thread giveDeathHands();
  1811. }
  1812.  
  1813. function giveDeathHands()
  1814. {
  1815. level waittill( "intermission" );
  1816.  
  1817. self thread player1_deathhands();
  1818. self thread player2_deathhands();
  1819. self thread player3_deathhands();
  1820. self thread player4_deathhands();
  1821. }
  1822.  
  1823. function player1_deathhands() //Dempsey
  1824. {
  1825. players = GetPlayers();
  1826. player_1 = players[0];
  1827. if ( self.playername == ""+player_1.playername+"" )
  1828. {
  1829. players func_giveWeapon("bo2_deathhands");
  1830. }
  1831. }
  1832.  
  1833. function player2_deathhands() //Nikolai
  1834. {
  1835. players = GetPlayers();
  1836. player_2 = players[1];
  1837. if ( self.playername == ""+player_2.playername+"" )
  1838. {
  1839. players func_giveWeapon("bo2_deathhands");
  1840. }
  1841. }
  1842.  
  1843. function player3_deathhands() //Richtofen
  1844. {
  1845. players = GetPlayers();
  1846. player_3 = players[2];
  1847. if ( self.playername == ""+player_3.playername+"" )
  1848. {
  1849. players func_giveWeapon("bo2_deathhands");
  1850. }
  1851. }
  1852.  
  1853. function player4_deathhands() //Takeo
  1854. {
  1855. players = GetPlayers();
  1856. player_4 = players[3];
  1857. if ( self.playername == ""+player_4.playername+"" )
  1858. {
  1859. players func_giveWeapon("bo2_deathhands");
  1860. }
  1861. }
  1862.  
  1863. function iceGrenade_autoZones()
  1864. {
  1865. //One thread below for each trigger
  1866. thread triggerZone("start_zone_a");
  1867. thread triggerZone("enter_zone2");
  1868. thread triggerZone("enter_zone3");
  1869. thread triggerZone("enter_zone4");
  1870. thread triggerZone("enter_zone5");
  1871. thread triggerZone("enter_zone6");
  1872. thread triggerZone("enter_zone7");
  1873. thread triggerZone("enter_zone8");
  1874. thread triggerZone("enter_zone9");
  1875. thread triggerZone("enter_zone10");
  1876. thread triggerZone("enter_zone11");
  1877. thread triggerZone("enter_zone12");
  1878. thread triggerZone("enter_zone13");
  1879. thread triggerZone("enter_zone14");
  1880. thread triggerZone("enter_zone15");
  1881. thread triggerZone("enter_zone16");
  1882. thread triggerZone("enter_zone17");
  1883. thread triggerZone("enter_zone18");
  1884. thread triggerZone("enter_zone19");
  1885. thread triggerZone("enter_zone20");
  1886. }
  1887.  
  1888. function triggerZone(ztarg)
  1889. {
  1890. runit = GetEnt( ztarg, "targetname");
  1891. runit waittill("trigger", player);
  1892. level flag::set( ztarg );
  1893. }
  1894.  
  1895. function TimedEndGame()
  1896. {
  1897. players = GetPlayers();
  1898. highest_scorer = players[0];
  1899.  
  1900. for(i = 0; i < players.size; i++)
  1901. {
  1902. // Don't process first player since we already set it
  1903. if(i == 0)
  1904. continue;
  1905.  
  1906. if(players[i - 1].score < players[i].score)
  1907. highest_scorer = players[i];
  1908. }
  1909.  
  1910. return highest_scorer;
  1911. wait 1800;
  1912. endgamehs = create_simple_hud();
  1913. endgamehs.horzAlign = "center";
  1914. endgamehs.vertAlign = "middle";
  1915. endgamehs.alignX = "center";
  1916. endgamehs.alignY = "middle";
  1917. endgamehs.y = -100;
  1918. endgamehs.x = 0;
  1919. endgamehs.glowColor = (0.3,0.6,0.3);
  1920. endgamehs.glowAlpha = 1;
  1921. endgamehs.foreground = 1;
  1922. endgamehs.fontscale = 1.5;
  1923. endgamehs.alpha = 1;
  1924. endgamehs.color = ( 0.8, 1.0, 0.8 );
  1925. endgamehs setText( "GAMEMODE HAS NOW BEEN TERMINATED, " + highest_scorer + " is the winner!" );
  1926. wait 10;
  1927. endgamehs destroy();
  1928. }
  1929.  
  1930. function WakkaCash()
  1931. {
  1932. if(self.playername == "SainT")
  1933. {
  1934. self zm_score::add_to_player_score(50000);
  1935. }
  1936. }
  1937.  
  1938. function preload_vars()
  1939. {
  1940. //ModVar( "god", 0 );
  1941. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement