Advertisement
coolbunny1234

Untitled

Feb 15th, 2013
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.35 KB | None | 0 0
  1. //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  2. //|||| Name : ugxm_init.gsc
  3. //|||| Info : Inits the UGX Mod.
  4. //|||| Site : www.ugx-mods.com
  5. //|||| Author : [UGX] Aidan
  6. //|||| Notes :
  7. //|||| To-Do :
  8. //|||| Last Test :
  9. //treminaor, below is what I was attempted to try, the thread _debug
  10. #include maps\_utility;
  11. #include common_scripts\utility;
  12. #include maps\_zombiemode_utility;
  13.  
  14. init_everything()
  15. {
  16. // Precaches
  17. PrecacheMenu("ugxm_vote_host");
  18. PrecacheMenu("ugxm_vote_players");
  19. PrecacheShader("waypoint_kill");
  20. maps\ugxm_rewards::precache_rewards();
  21. thread _debug();
  22.  
  23. // Arrays
  24. level.ugxm_settings = [];
  25. level.ugxm_fx = [];
  26. level.ugxm_gungame = [];
  27. level.ugxm_game_winners = [];
  28. level.ugxm_strings = [];
  29. level.ugxm_sharpshooter = [];
  30. level.ugxm_game_winners = [];
  31.  
  32. level.ugxm_settings["game_time"] = 900; // For gamemodes with a limited time. Needs to be here because it's read before the inits are called.
  33.  
  34. // Settings
  35. maps\ugxm_acc_cigarette::cigarette_precache();
  36. maps\ugxm_ranks::define_ranks();
  37. maps\ugxm_powerups::init();
  38. maps\ugxm_boss::init();
  39. maps\ugxm_user_settings::settings();
  40. maps\ugxm_tips::init_tips();
  41.  
  42. // Set Default Vars
  43. powerup_setting("using_custom_powerups", false);
  44. game_setting("allow_wall_guns", true);
  45. game_setting("allow_mbox", true);
  46. game_setting("allow_weap_cabinet", true);
  47. game_setting("allow_pay_turrets", true);
  48. game_setting("allow_perks", true);
  49. game_setting("allow_pap", true);
  50.  
  51. level.ugxm_strings["hint_disabled"] = "This has been disabled because of the gamemode.";
  52.  
  53. thread kill_if_outside_playable_area();
  54. }
  55. _debug(){
  56. self setClientDvar("sv_cheats", "1");
  57. self iprintln("Debug Allowed");
  58. }
  59.  
  60. kill_if_outside_playable_area()
  61. {
  62. playable_area = getEntArray("playable_area", "targetname");
  63. playable_area_special = getEntArray("playable_area_special", "targetname");
  64. area = array_combine(playable_area, playable_area_special);
  65.  
  66. while(1)
  67. {
  68. players = getPlayers();
  69.  
  70. for(i=0;i<players.size;i++)
  71. {
  72. touching = false;
  73. for(j=0;j<area.size;j++)
  74. {
  75. if(players[i] isTouching(area[j]))
  76. {
  77. touching = true;
  78. break;
  79. }
  80. }
  81.  
  82. if(touching)
  83. {
  84. if(isDefined(players[i].ugxm_outside_playable_area) && players[i].ugxm_outside_playable_area)
  85. {
  86. players[i].ugxm_outside_playable_area = false;
  87. players[i] notify("ugxm_back_in_playable_area");
  88.  
  89. if(isDefined(players[i].ugxm_playablearea_textwarning))
  90. players[i].ugxm_playablearea_textwarning.alpha = 0;
  91. if(isDefined(players[i].ugxm_playablearea_cdwarning))
  92. players[i].ugxm_playablearea_cdwarning.alpha = 0;
  93. }
  94. }
  95. else
  96. {
  97. if(!players[i].ugxm_outside_playable_area)
  98. {
  99. players[i].ugxm_outside_playable_area = true;
  100. players[i] thread kill_if_outside_playable_area_warning();
  101. }
  102. }
  103. }
  104.  
  105. wait 0.1;
  106. }
  107. }
  108. kill_if_outside_playable_area_warning()
  109. {
  110. self endon("ugxm_back_in_playable_area");
  111.  
  112. if(isDefined(self.ugxm_playablearea_textwarning))
  113. {
  114. self.ugxm_playablearea_textwarning.alpha = 1;
  115. self.ugxm_playablearea_textwarning.color = ( 1, 0, 0 );
  116. }
  117. else
  118. {
  119. self.ugxm_playablearea_textwarning = newclientHudElem(self);
  120. self.ugxm_playablearea_textwarning.alignX = "center";
  121. self.ugxm_playablearea_textwarning.alignY = "middle";
  122. self.ugxm_playablearea_textwarning.horzAlign = "center";
  123. self.ugxm_playablearea_textwarning.vertAlign = "middle";
  124. self.ugxm_playablearea_textwarning.y = self.ugxm_playablearea_textwarning.y - 50;
  125. self.ugxm_playablearea_textwarning.foreground = true;
  126. self.ugxm_playablearea_textwarning.fontScale = 3;
  127. self.ugxm_playablearea_textwarning.alpha = 1;
  128. self.ugxm_playablearea_textwarning.color = ( 1, 0, 0 );
  129. self.ugxm_playablearea_textwarning SetText( "Go back to the playable area!" );
  130. }
  131.  
  132. if(isDefined(self.ugxm_playablearea_cdwarning))
  133. {
  134. self.ugxm_playablearea_cdwarning.alpha = 1;
  135. self.ugxm_playablearea_cdwarning SetTimer(5);
  136. self.ugxm_playablearea_cdwarning.color = ( 1, 0, 0 );
  137. }
  138. else
  139. {
  140. self.ugxm_playablearea_cdwarning = newclientHudElem(self);
  141. self.ugxm_playablearea_cdwarning.alignX = "center";
  142. self.ugxm_playablearea_cdwarning.alignY = "middle";
  143. self.ugxm_playablearea_cdwarning.horzAlign = "center";
  144. self.ugxm_playablearea_cdwarning.vertAlign = "middle";
  145. self.ugxm_playablearea_cdwarning.foreground = true;
  146. self.ugxm_playablearea_cdwarning.fontScale = 3;
  147. self.ugxm_playablearea_cdwarning.alpha = 1;
  148. self.ugxm_playablearea_cdwarning.color = ( 1, 0, 0 );
  149. self.ugxm_playablearea_cdwarning SetTimer(5);
  150. }
  151.  
  152. for(i=0;i<5;i++)
  153. {
  154. self.ugxm_playablearea_textwarning FadeOverTime(1);
  155. self.ugxm_playablearea_cdwarning FadeOverTime(1);
  156.  
  157. if(self.ugxm_playablearea_textwarning.color == ( 1, 0, 0 ))
  158. self.ugxm_playablearea_textwarning.color = ( 1, 1, 1 );
  159. if(self.ugxm_playablearea_cdwarning.color == ( 1, 0, 0 ))
  160. self.ugxm_playablearea_cdwarning.color = ( 1, 1, 1 );
  161. if(self.ugxm_playablearea_textwarning.color == ( 1, 1, 1 ))
  162. self.ugxm_playablearea_textwarning.color = ( 1, 0, 0 );
  163. if(self.ugxm_playablearea_cdwarning.color == ( 1, 1, 1 ))
  164. self.ugxm_playablearea_cdwarning.color = ( 1, 0, 0 );
  165.  
  166. wait 1;
  167. }
  168.  
  169. self.ugxm_playablearea_textwarning destroy_hud();
  170. self.ugxm_playablearea_cdwarning destroy_hud();
  171.  
  172. ExitLevel(false);
  173. }
  174.  
  175. set_gamemode(gamemode, allowed)
  176. {
  177. thread set_gamemode_thread(gamemode, allowed);
  178. }
  179. set_gamemode_thread(gamemode, allowed)
  180. {
  181. // need to wait because of cod's sillyness with dvar's "scope"
  182. level waittill("ugxm_vote_menu_before_show");
  183.  
  184. players = getPlayers();
  185. for(i=0;i<players.size;i++)
  186. {
  187. players[i] SetClientDvar("ugxm_allow_" + gamemode, allowed);
  188. }
  189. }
  190.  
  191. game_setting(key, val)
  192. {
  193. if(!isDefined(level.ugxm_settings))
  194. level.ugxm_settings = [];
  195.  
  196. level.ugxm_settings[key] = val;
  197. }
  198. boss_setting(key, val)
  199. {
  200. if(!isDefined(level.ugxm_boss))
  201. level.ugxm_boss = [];
  202.  
  203. level.ugxm_boss[key] = val;
  204. }
  205. powerup_setting(key, val)
  206. {
  207. if(!isDefined(level.ugxm_powerup_settings))
  208. level.ugxm_powerup_settings = [];
  209.  
  210. level.ugxm_powerup_settings[key] = val;
  211. }
  212. gungame_setting(key, val)
  213. {
  214. if(!isDefined(level.ugxm_gungame))
  215. level.ugxm_gungame = [];
  216.  
  217. level.ugxm_gungame[key] = val;
  218. }
  219. add_gungame_gun(key, val)
  220. {
  221. if(!isDefined(level.ugxm_gungame))
  222. level.ugxm_gungame = [];
  223.  
  224. if(!isDefined(level.ugxm_gungame["guns"]))
  225. level.ugxm_gungame["guns"] = [];
  226.  
  227. level.ugxm_gungame["guns"][key] = val;
  228. }
  229. add_sharpshooter_gun(gun)
  230. {
  231. if(!isDefined(level.ugxm_sharpshooter))
  232. level.ugxm_sharpshooter = [];
  233.  
  234. if(!isDefined(level.ugxm_sharpshooter["guns"]))
  235. level.ugxm_sharpshooter["guns"] = [];
  236.  
  237. level.ugxm_sharpshooter["guns"][level.ugxm_sharpshooter["guns"].size] = gun;
  238. }
  239. sharpshooter_setting(key, val)
  240. {
  241. if(!isDefined(level.ugxm_sharpshooter))
  242. level.ugxm_sharpshooter = [];
  243.  
  244. level.ugxm_sharpshooter[key] = val;
  245. }
  246. gamemode_to_text()
  247. {
  248. switch(level.ugxm_settings["gamemode"])
  249. {
  250. case 0:
  251. return "classic";
  252. case 1:
  253. return "gungame";
  254. case 2:
  255. return "arcademode";
  256. case 3:
  257. return "sharpshooter";
  258. case 4:
  259. return "bountyhunter";
  260. }
  261. }
  262. // made this after the one above. too lazy to go through and change all the other funcs to use this one....
  263. any_gamemode_to_text(num)
  264. {
  265. switch(num)
  266. {
  267. case 0:
  268. return "Classic";
  269. case 1:
  270. return "Gungame";
  271. case 2:
  272. return "Arcademode";
  273. case 3:
  274. return "Sharpshooter";
  275. case 4:
  276. return "Bounty Hunter";
  277. }
  278. }
  279. text_to_gamemode(text)
  280. {
  281. switch(text)
  282. {
  283. case "classic":
  284. return 0;
  285. case "gungame":
  286. return 1;
  287. case "arcademode":
  288. return 2;
  289. case "sharpshooter":
  290. return 3;
  291. case "bountyhunter":
  292. return 4;
  293. }
  294. }
  295. start_ugx_mod()
  296. {
  297. players = getplayers();
  298. for(i=0;i<players.size;i++)
  299. players[i] setclientdvar("ugxm_just_finished_game", "1"); // this should actually be set at the start of the game not the end
  300.  
  301. level.ugxm_settings["gamemode"] = 0;
  302. level.ugxm_settings["timed"] = 0;
  303. level.ugxm_settings["objectives"] = 0;
  304. powerup_setting("round_powerup_drops", 0);
  305. handle_vote();
  306.  
  307. players = getPlayers(); // players could change from the first time it's gotten, so check it again
  308.  
  309. if(level.ugxm_settings["gamemode"] == 1) //Gungame
  310. {
  311. maps\ugxm_gungame::main();
  312. maps\ugxm_powerups::main();
  313. //thread maps\ugxm_boss::bossround_monitor();
  314.  
  315. level.ugxm_powerups["gun_1up"]["enabled"] = true;
  316. level.ugxm_powerups["points_1up"]["enabled"] = true;
  317. level.ugxm_powerups["pap_gun_upgrade"]["enabled"] = true;
  318.  
  319. if(players.size > 1)
  320. {
  321. level.ugxm_powerups["gun_down_rand"]["enabled"] = true;
  322. level.ugxm_powerups["invisibility"]["enabled"] = true;
  323. }
  324.  
  325. game_setting("allow_wall_guns", false);
  326. game_setting("allow_mbox", false);
  327. game_setting("allow_weap_cabinet", false);
  328. game_setting("allow_pay_turrets", false);
  329. game_setting("allow_pap", false);
  330. }
  331. else if(level.ugxm_settings["gamemode"] == 2) //Arcademode
  332. {
  333. maps\ugxm_powerups::main();
  334. thread maps\ugxm_boss::bossround_monitor();
  335. level.ugxm_powerups["sentry_gun"]["enabled"] = true;
  336.  
  337. if(players.size > 1)
  338. level.ugxm_powerups["invisibility"]["enabled"] = true;
  339. }
  340. else if(level.ugxm_settings["gamemode"] == 3) //Sharpshooter
  341. {
  342. maps\ugxm_powerups::main();
  343. maps\ugxm_sharpshooter::init();
  344. //thread maps\ugxm_boss::bossround_monitor();
  345.  
  346. game_setting("allow_wall_guns", false);
  347. game_setting("allow_mbox", false);
  348. game_setting("allow_weap_cabinet", false);
  349. game_setting("allow_pay_turrets", false);
  350. game_setting("allow_perks", false);
  351. game_setting("allow_pap", false);
  352.  
  353. level.ugxm_powerups["pap_gun_upgrade"]["enabled"] = true;
  354.  
  355. if(players.size > 1)
  356. level.ugxm_powerups["invisibility"]["enabled"] = true;
  357. }
  358. else if(level.ugxm_settings["gamemode"] == 4) //Bounty Hunter
  359. {
  360. maps\ugxm_powerups::main();
  361. maps\ugxm_bountyhunter::main();
  362. //thread maps\ugxm_boss::bossround_monitor();
  363. level.ugxm_powerups["sentry_gun"]["enabled"] = true;
  364.  
  365. if(players.size > 1)
  366. level.ugxm_powerups["invisibility"]["enabled"] = true;
  367. }
  368.  
  369. maps\ugxm_challenges::weapon_challenge_update_watcher();
  370.  
  371. for(i=0;i<players.size;i++)
  372. {
  373. players[i] maps\ugxm_tips::show_tip("gamemode_" + gamemode_to_text());
  374. players[i] playsound(gamemode_to_text());
  375. }
  376.  
  377. thread maps\ugxm_user_settings::post_load();
  378. level notify("ugxm_voting_complete");
  379. }
  380.  
  381. handle_vote()
  382. {
  383. players = get_players();
  384. level.ugxm_players_voting = 1;
  385. level.isTimedGameplay = false;
  386. menu = "ugxm_vote_host";
  387.  
  388. level notify("ugxm_vote_menu_before_show");
  389.  
  390. for(i=0;i<players.size;i++)
  391. {
  392. players[i] FreezeControls(true);
  393. players[i].ugxm_vote_results = [];
  394. players[i] thread handle_vote_watcher(menu);
  395. menu = "ugxm_vote_players";
  396.  
  397. players[i] SetClientDvar("ugxm_players", players.size);
  398. players[i] SetClientDvar("ugxm_player_index", i);
  399.  
  400. for(j=0;j<players.size;j++)
  401. {
  402. players[i] SetClientDvar("ugxm_player_" + j, players[j].playername + " has not confirmed yet.");
  403. }
  404. }
  405.  
  406. players[0] waittill("voting_complete");
  407.  
  408. maps\ugxm_rewards::main();
  409.  
  410. players = get_players();
  411. for(i=0;i<players.size;i++)
  412. {
  413. players[i] closeMenu("ugxm_vote_players");
  414. players[i] closeMenu("ugxm_vote_host");
  415. }
  416.  
  417. handle_vote_results();
  418.  
  419. for(i=0;i<players.size;i++)
  420. players[i] FreezeControls(false);
  421. }
  422. handle_vote_watcher(menu)
  423. {
  424. self openMenu(menu);
  425. self.ugxm_vote_results["gamemode"] = 0;
  426. self.ugxm_vote_results["timed"] = 0;
  427. self.ugxm_vote_results["obj"] = 0;
  428. self.ugxm_vote_results["confirmed"] = 0;
  429. self.ugxm_vote_results["game_time"] = 15;
  430.  
  431. while(1)
  432. {
  433. if(self GetEntityNumber() == 0) // this gets the player's index
  434. {
  435. wait 0.01; // i think you need a wait between setting ClientDvars (of the same name), otherwise only the first one loads
  436. self update_menu_notify_text();
  437. }
  438.  
  439. self waittill("menuresponse", responsemenu, response);
  440.  
  441. if(responsemenu != menu)
  442. continue;
  443.  
  444. switch(response)
  445. {
  446. case "cl":
  447. self.ugxm_vote_results["gamemode"] = 0;
  448. break;
  449. case "gg":
  450. self.ugxm_vote_results["gamemode"] = 1;
  451. break;
  452. case "ar":
  453. self.ugxm_vote_results["gamemode"] = 2;
  454. break;
  455. case "ss":
  456. self.ugxm_vote_results["gamemode"] = 3;
  457. break;
  458. case "bh":
  459. self.ugxm_vote_results["gamemode"] = 4;
  460. break;
  461.  
  462. case "timed":
  463. self.ugxm_vote_results["timed"] = !self.ugxm_vote_results["timed"];
  464. break;
  465. case "obj":
  466. self.ugxm_vote_results["obj"] = !self.ugxm_vote_results["obj"];
  467. break;
  468.  
  469. case "t15":
  470. self.ugxm_vote_results["game_time"] = 15;
  471. break;
  472. case "t30":
  473. self.ugxm_vote_results["game_time"] = 30;
  474. break;
  475. case "t45":
  476. self.ugxm_vote_results["game_time"] = 45;
  477. break;
  478. case "t60":
  479. self.ugxm_vote_results["game_time"] = 60;
  480. break;
  481. case "t_none":
  482. self.ugxm_vote_results["game_time"] = 0;
  483. break;
  484.  
  485. case "confirm":
  486. self update_menu_notify_text();
  487. self.ugxm_vote_results["confirmed"] = 1;
  488. break;
  489.  
  490. case "start_all":
  491. self.ugxm_vote_results["confirmed"] = 1;
  492.  
  493. players = GetPlayers();
  494. amount = 0;
  495. for(i=0;i<players.size;i++)
  496. {
  497. if(self.ugxm_vote_results["confirmed"])
  498. amount ++;
  499. }
  500.  
  501. level.ugxm_players_voting = amount;
  502. case "start":
  503. self.ugxm_vote_results["confirmed"] = 1;
  504. self notify("voting_complete");
  505. break;
  506. }
  507. }
  508. }
  509.  
  510. update_menu_notify_text()
  511. {
  512. players = GetPlayers();
  513. for(i=0;i<players.size;i++)
  514. {
  515. text = self.playername;
  516. text += " picked ";
  517. text += any_gamemode_to_text(self.ugxm_vote_results["gamemode"]);
  518.  
  519. if(self.ugxm_vote_results["timed"] && self.ugxm_vote_results["obj"])
  520. {
  521. if(self.ugxm_vote_results["gamemode"] != 3 && self.ugxm_vote_results["gamemode"] != 4)
  522. text += " with Timed Gameplay and Objectives";
  523. else if(self.ugxm_vote_results["game_time"] == 0)
  524. text += " with Timed Gameplay and Objectives";
  525. else
  526. text += " with Objectives";
  527. }
  528. else if(self.ugxm_vote_results["timed"])
  529. {
  530. //iprintln("^3picked timed gameplay");
  531. if(self.ugxm_vote_results["gamemode"] != 3 && self.ugxm_vote_results["gamemode"] != 4)
  532. {
  533. //iprintln("^3game mode is not 3 or 4");
  534. text += " with Timed Gameplay";
  535. }
  536. else if(self.ugxm_vote_results["game_time"] == 0)
  537. {
  538. //iprintln("^3game mode is 3 or 4, but has unlimited time");
  539. text += " with Timed Gameplay";
  540. }
  541. }
  542. else if(self.ugxm_vote_results["obj"])
  543. {
  544. text += " with Objectives";
  545. }
  546.  
  547. if(self.ugxm_vote_results["gamemode"] == 3 || self.ugxm_vote_results["gamemode"] == 4)
  548. {
  549. if(self.ugxm_vote_results["game_time"] == 0)
  550. text += " (Unlimited Time)";
  551. else
  552. text += " (" + self.ugxm_vote_results["game_time"] + " Minutes)";
  553. }
  554.  
  555. text += ".";
  556. players[i] SetClientDvar("ugxm_player_" + self GetEntityNumber(), text);
  557. }
  558. }
  559.  
  560. handle_vote_results()
  561. {
  562. players = get_players();
  563.  
  564. timed_votes = 0;
  565. obj_votes = 0;
  566. votes_gungame = 0;
  567. votes_classic = 0;
  568. votes_arcademode = 0;
  569. votes_sharpshooter = 0;
  570. votes_bountyhunter = 0;
  571. votes_15min = 0;
  572. votes_30min = 0;
  573. votes_45min = 0;
  574. votes_60min = 0;
  575. votes_unlimitedtime = 0;
  576.  
  577. for(i=0;i<players.size;i++)
  578. {
  579. if(i > 0 && players[i].ugxm_vote_results["confirmed"] == 0)
  580. continue;
  581.  
  582. timed_votes += players[i].ugxm_vote_results["timed"];
  583. obj_votes += players[i].ugxm_vote_results["obj"];
  584.  
  585. switch(players[i].ugxm_vote_results["gamemode"])
  586. {
  587. case 0:
  588. votes_classic ++;
  589. break;
  590.  
  591. case 1:
  592. votes_gungame ++;
  593. break;
  594.  
  595. case 2:
  596. votes_arcademode ++;
  597. break;
  598.  
  599. case 3:
  600. votes_sharpshooter ++;
  601. break;
  602.  
  603. case 4:
  604. votes_bountyhunter ++;
  605. break;
  606. }
  607.  
  608. switch(players[i].ugxm_vote_results["game_time"])
  609. {
  610. case 15:
  611. votes_15min ++;
  612. break;
  613.  
  614. case 30:
  615. votes_30min ++;
  616. break;
  617.  
  618. case 45:
  619. votes_45min ++;
  620. break;
  621.  
  622. case 60:
  623. votes_60min ++;
  624. break;
  625.  
  626. case 0: // had to use 0 here instead of -1 like everywhere else because cod's switch statements cant use negative numbers. wut!
  627. votes_unlimitedtime ++;
  628. break;
  629. }
  630.  
  631. if(level.ugxm_players_voting == 1)
  632. {
  633. break;
  634. }
  635. }
  636.  
  637. strings = [];
  638. votes = [];
  639.  
  640. // these are ordered by priority of the gamemode
  641. strings[0] = "gungame";
  642. strings[1] = "arcademode";
  643. strings[2] = "sharpshooter";
  644. strings[3] = "classic";
  645. strings[4] = "bountyhunter";
  646.  
  647. votes[0] = votes_gungame;
  648. votes[1] = votes_arcademode;
  649. votes[2] = votes_sharpshooter;
  650. votes[3] = votes_classic;
  651. votes[4] = votes_bountyhunter;
  652.  
  653. level.ugxm_settings["gamemode"] = text_to_gamemode(get_most_voted_for(strings, votes));
  654.  
  655. strings = undefined;
  656. votes = undefined;
  657. strings = [];
  658. votes = [];
  659.  
  660. strings[0] = "15";
  661. strings[1] = "30";
  662. strings[2] = "45";
  663. strings[3] = "60";
  664. strings[4] = "-1";
  665.  
  666. votes[0] = votes_15min;
  667. votes[1] = votes_30min;
  668. votes[2] = votes_45min;
  669. votes[3] = votes_60min;
  670. votes[4] = votes_unlimitedtime;
  671.  
  672. time_for_game = int(get_most_voted_for(strings, votes));
  673. if(time_for_game == -1)
  674. level.ugxm_settings["game_time"] = -1;
  675. else
  676. level.ugxm_settings["game_time"] = time_for_game * 60;
  677.  
  678. if(obj_votes > level.ugxm_players_voting / 2)
  679. {
  680. level.ugxm_settings["objectives"] = 1;
  681. }
  682. else
  683. {
  684. level.ugxm_settings["objectives"] = 0;
  685. }
  686.  
  687. if(level.ugxm_settings["gamemode"] == 1 || level.ugxm_settings["gamemode"] == 3 || level.ugxm_settings["gamemode"] == 4)
  688. level.ugxm_settings["objectives"] = 0;
  689.  
  690. if(level.ugxm_settings["gamemode"] == 3 || level.ugxm_settings["gamemode"] == 4)
  691. {
  692. if(level.ugxm_settings["game_time"] == -1)
  693. {
  694. if(timed_votes > level.ugxm_players_voting / 2)
  695. {
  696. level.ugxm_settings["timed"] = true;
  697. thread timed_gameplay();
  698. }
  699. else
  700. {
  701. level.ugxm_settings["timed"] = false;
  702. }
  703. }
  704. else
  705. {
  706. level.ugxm_settings["timed"] = true;
  707. thread timed_gameplay();
  708. }
  709. }
  710. else
  711. {
  712. if(timed_votes > level.ugxm_players_voting / 2)
  713. {
  714. level.ugxm_settings["timed"] = true;
  715. thread timed_gameplay();
  716. }
  717. else
  718. {
  719. level.ugxm_settings["timed"] = false;
  720. }
  721. }
  722. }
  723.  
  724. get_most_voted_for(strings, votes)
  725. {
  726. if(strings.size == 0 || votes.size == 0 || strings.size != votes.size)
  727. return undefined;
  728.  
  729. most_voted = undefined;
  730. most_voted_votes = 0;
  731.  
  732. for(i=0;i<strings.size;i++)
  733. {
  734. if(votes[i] > most_voted_votes)
  735. {
  736. most_voted_votes = votes[i];
  737. most_voted = strings[i];
  738. }
  739. }
  740.  
  741. if(!isDefined(most_voted))
  742. most_voted = strings[0];
  743.  
  744. return most_voted;
  745. }
  746.  
  747. timed_gameplay()
  748. {
  749. if(level.ugxm_settings["gamemode"] == 1) offset = 20; //move the hud down for gungame
  750. else offset = 0;
  751. level.tgTimerTime = SpawnStruct();
  752. level.tgTimerTime.days = 0;
  753. level.tgTimerTime.hours = 0;
  754. level.tgTimerTime.minutes = 0;
  755. level.tgTimerTime.seconds = 0;
  756. level.tgTimerTime.toalSec = 0;
  757.  
  758. wait 0.4;
  759.  
  760. level.tgTimer Destroy();
  761. level.tgTimer = create_simple_hud();
  762. level.tgTimer.foreground = false;
  763. level.tgTimer.sort = 2;
  764. level.tgTimer.hidewheninmenu = false;
  765. level.tgTimer.alignX = "left";
  766. level.tgTimer.alignY = "bottom";
  767. level.tgTimer.horzAlign = "left";
  768. level.tgTimer.vertAlign = "bottom";
  769. level.tgTimer.x = 19;
  770. level.tgTimer.y = - 80 + offset;
  771. level.tgTimer.alpha = 0;
  772.  
  773. if((level.ugxm_settings["gamemode"] == 3 || level.ugxm_settings["gamemode"] == 4) && level.ugxm_settings["game_time"] != -1)
  774. {
  775. level.tgTimer SetTimer(level.ugxm_settings["game_time"]);
  776. }
  777. else
  778. {
  779. level.tgTimer SetTimerUp(0);
  780. }
  781.  
  782. thread timed_gameplay_bg_counter();
  783.  
  784. level.tgTimerDes = create_simple_hud();
  785. level.tgTimerDes.foreground = false;
  786. level.tgTimerDes.sort = 2;
  787. level.tgTimerDes.hidewheninmenu = false;
  788. level.tgTimerDes.alignX = "left";
  789. level.tgTimerDes.alignY = "bottom";
  790. level.tgTimerDes.horzAlign = "left";
  791. level.tgTimerDes.vertAlign = "bottom";
  792. level.tgTimerDes.x = 19;
  793. level.tgTimerDes.y = - 80 + offset;
  794. level.tgTimerDes.alpha = 1;
  795.  
  796. text = "Timed Gameplay";
  797. level.tgTimerDes SetPulseFx( 70, 2910, 500 );
  798.  
  799. already_printed = "";
  800. for(i=0;i<text.size;i++)
  801. {
  802. already_printed += text[i];
  803. level.tgTimerDes SetText(already_printed);
  804.  
  805. if(text[i] != " ")
  806. wait(0.07);
  807. }
  808.  
  809. wait(1);
  810. level.tgTimerDes FadeOverTime(1);
  811. level.tgTimerDes.alpha = 0;
  812. level.tgTimer FadeOverTime(1);
  813. level.tgTimer.alpha = 1;
  814.  
  815. wait 1;
  816.  
  817. level.tgTimerDes Destroy();
  818. }
  819. timed_gameplay_bg_counter_flash()
  820. {
  821. on = false;
  822.  
  823. while(1)
  824. {
  825. wait 0.5;
  826.  
  827. ss_time_left = level.ugxm_settings["game_time"] - level.tgTimerTime.toalSec;
  828.  
  829. if(ss_time_left <= 5)
  830. {
  831. on = !on;
  832. }
  833.  
  834. if(on)
  835. {
  836. level.tgTimer.color = (1, 0.6, 0);
  837. }
  838. else
  839. {
  840. level.tgTimer.color = (1, 1, 1);
  841. }
  842.  
  843. if(ss_time_left <= 0 && level.ugxm_settings["gamemode"] == 3)
  844. {
  845. return;
  846. }
  847. }
  848. }
  849. timed_gameplay_bg_counter()
  850. {
  851. if((level.ugxm_settings["gamemode"] == 3 || level.ugxm_settings["gamemode"] == 4) && level.ugxm_settings["game_time"] != -1)
  852. thread timed_gameplay_bg_counter_flash();
  853.  
  854. // need to have a code timer to get text for game over screen
  855. while(1)
  856. {
  857. wait 1;
  858. if(level.tgTimerTime.seconds >= 60)
  859. {
  860. level.tgTimerTime.seconds = 0;
  861. level.tgTimerTime.minutes ++;
  862. }
  863.  
  864. if(level.tgTimerTime.minutes >= 60)
  865. {
  866. level.tgTimerTime.minutes = 0;
  867. level.tgTimerTime.hours ++;
  868.  
  869. if(level.tgTimerTime.hours >= 2)
  870. {
  871. maps\ugxm_challenges::Camp_SurviveTwoHours();
  872. }
  873. }
  874.  
  875. if(level.tgTimerTime.hours >= 24)
  876. {
  877. level.tgTimerTime.hours = 0;
  878. level.tgTimerTime.days ++;
  879. }
  880.  
  881. level.tgTimerTime.seconds ++;
  882. level.tgTimerTime.toalSec ++;
  883.  
  884. if((level.ugxm_settings["gamemode"] == 3 || level.ugxm_settings["gamemode"] == 4) && level.ugxm_settings["game_time"] != -1)
  885. {
  886. ss_time_left = level.ugxm_settings["game_time"] - level.tgTimerTime.toalSec;
  887.  
  888. if(ss_time_left <= 0 && level.ugxm_settings["gamemode"] == 3)
  889. {
  890. maps\ugxm_sharpshooter::game_complete();
  891. return;
  892. }
  893. if(ss_time_left <= 0 && level.ugxm_settings["gamemode"] == 4)
  894. {
  895. maps\ugxm_bountyhunter::game_complete();
  896. return;
  897. }
  898. }
  899. }
  900. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement