Advertisement
Guest User

vote\_vote_menu.gsc

a guest
Aug 7th, 2014
369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.27 KB | None | 0 0
  1. #include maps\mp\_utility;
  2. #include common_scripts\utility;
  3. #include maps\mp\gametypes\_hud_util;
  4.  
  5. /**********
  6. ** Vote system by banz v1.0
  7. ** Edited by |UzD|GaZa
  8. **
  9. ** Edited for use with client mouse vote menu
  10. **
  11. **
  12. **
  13. ***********/
  14.  
  15. init()
  16. {
  17. level thread onPlayerConnect();
  18.  
  19. /******************************SETTINGS*******************************************************************/
  20. setDvar("sv_changemethod", 1); //0 - RPRIVATE MATCH, 1 - DEDICATED SERVER. (If wrong your game will crash).
  21. setDvarIfUninitialized( "sv_votemaps", "Favela,Afghan,Skidrow,Estate,Invasion,Karachi,Subbase,Rundown,Quarry,Terminal,Underpass,Wasteland,Scrapyard,Derail,Rust" ); //Maps - you can set this in server.cfg too
  22. setDvar("scr_vote_time", 18.0); //Time available to vote
  23. setDvar("vote_winner_time", 4.0); //Time the winning map is displayed for
  24. setDvar("scr_intermission_time", 8.0); //Time the scoreboard is shown for
  25. /******************************SETTINGS*******************************************************************/
  26.  
  27. game["menu_vote"] = "vote";
  28. precacheMenu(game["menu_vote"]);
  29.  
  30. level.changeMode = getDvarInt( "sv_changemethod" );
  31. level.voteMaps = getDvar( "sv_votemaps" );
  32. level.mapTok = strTok( level.voteMaps, "," );
  33.  
  34. checkMaps = level.mapTok;
  35. thread checkDvars( checkMaps );//check for invalid maps
  36.  
  37. randomArray = [];
  38. for(i = 0; i < 9; i++)
  39. {
  40. selectedRand = randomintrange(0, level.mapTok.size);
  41. randomArray[i] = level.mapTok[selectedRand];
  42. level.mapTok = restructMapArray(level.mapTok, selectedRand);
  43. }
  44.  
  45. level.mapTok = randomArray;
  46. for( i=0; i < level.mapTok.size; i++ )
  47. {
  48. level.mapVotes[i] = 0;
  49. }
  50. }
  51.  
  52. onPlayerConnect()
  53. {
  54. for(;;)
  55. {
  56. level waittill("connected", player);
  57. player thread onMenuResponse();
  58. player setClientDvar( "vote_map", "" );
  59. }
  60. }
  61.  
  62. onMenuResponse()
  63. {
  64. self endon("disconnect");
  65.  
  66. for(;;)
  67. {
  68. self waittill("menuresponse", menu, response);
  69.  
  70. if(menu==game["menu_vote"])
  71. {
  72. switch(response)
  73. {
  74. case "map1":
  75. self thread castMap(0);
  76. break;
  77. case "map2":
  78. self thread castMap(1);
  79. break;
  80. case "map3":
  81. self thread castMap(2);
  82. break;
  83. case "map4":
  84. self thread castMap(3);
  85. break;
  86. case "map5":
  87. self thread castMap(4);
  88. break;
  89. case "map6":
  90. self thread castMap(5);
  91. break;
  92. case "map7":
  93. self thread castMap(6);
  94. break;
  95. case "map8":
  96. self thread castMap(7);
  97. break;
  98. case "map9":
  99. self thread castMap(8);
  100. break;
  101. default:
  102. break;
  103. }
  104. }
  105.  
  106. if ( response == "back" && menu==game["menu_class"] && getDvar("ui_inVote") == "1")
  107. {
  108. self closepopupMenu();
  109. self closeInGameMenu();
  110. wait 0.25;
  111. self openPopupMenu("vote");
  112. continue;
  113. }
  114. }
  115. }
  116.  
  117. checkDvars( maps )
  118. {
  119. level endon( "check_done" );
  120.  
  121. mapError = 0;
  122.  
  123. //check for typos / invalid maps
  124. if ( !checkMaps( maps ) )
  125. {
  126. mapError = 1;
  127. }
  128.  
  129. if( mapError )
  130. thread errorMessage( mapError );
  131.  
  132. level notify( "check_done" );
  133. }
  134.  
  135.  
  136.  
  137. errorMessage( error1 )
  138. {
  139. level endon("game_ended");
  140.  
  141. for(;;)
  142. {
  143. if( error1 )
  144. iprintlnbold("^7Error in ^1sv_votemaps ^7dvar!");
  145. wait 5;
  146. }
  147. }
  148.  
  149. checkMaps( maps )
  150. {
  151. foreach( map in maps)
  152. {
  153. map = toLower( map );
  154.  
  155. switch( map )
  156. {
  157. case "favela":
  158. case "crash":
  159. case "skidrow":
  160. case "estate":
  161. case "wasteland":
  162. case "strike":
  163. case "vacant":
  164. case "highrise":
  165. case "invasion":
  166. case "karachi":
  167. case "bailout":
  168. case "subbase":
  169. case "afghan":
  170. case "carnival":
  171. case "fuel":
  172. case "salvage":
  173. case "scrapyard":
  174. case "derail":
  175. case "quarry":
  176. case "rundown":
  177. case "rust":
  178. case "underpass":
  179. case "overgrown":
  180. case "storm":
  181. case "trailerpark":
  182. case "terminal": //added
  183. case "nuketown":
  184. case "oilrig":
  185. case "burgertown":
  186. case "credits":
  187. case "gulag":
  188. case "contingency":
  189. case "pripyat":
  190. //dlc4
  191. case "crossfire":
  192. case "bloc":
  193. case "wetwork":
  194. case "killhouse":
  195. continue;
  196. default:
  197. return false;
  198. }
  199. }
  200. return true;
  201. }
  202.  
  203.  
  204. restructMapArray(oldArray, index)
  205. {
  206. restructArray = [];
  207.  
  208. for( i=0; i < oldArray.size; i++) {
  209. if(i < index)
  210. restructArray[i] = oldArray[i];
  211. else if(i > index)
  212. restructArray[i - 1] = oldArray[i];
  213. }
  214.  
  215. return restructArray;
  216. }
  217.  
  218.  
  219. updateMenuDisplay()
  220. {
  221. self endon("disconnect");
  222. for(;;)
  223. {
  224. for(i=0; i < level.mapTok.size; i++)
  225. {
  226. self setClientDvar("hud_gamesize", level.players.size);
  227. self setClientDvar(("hud_picName"+i), getPreviewName(toLower(level.mapTok[i])));
  228. self setClientDvar(("hud_mapName"+i), level.mapTok[i]);
  229. self setClientDvar(("hud_mapVotes"+i), level.mapVotes[i]);
  230. if(level.mapVotes[i] != 0)
  231. {
  232. self setClientDvar(("hud_mapVotes"+getHighestVotedMap()), ("^3"+level.mapVotes[getHighestVotedMap()]));
  233. self setClientDvar(("hud_mapName"+getHighestVotedMap()), ("^3"+level.mapTok[getHighestVotedMap()]));
  234. }
  235. }
  236. wait 0.25;
  237. }
  238. }
  239.  
  240.  
  241. getHighestVotedMap()
  242. {
  243. highest = 0;
  244.  
  245. position = randomInt(level.mapVotes.size);
  246.  
  247. for(i=0; i < level.mapVotes.size; i++ )
  248. {
  249. if( level.mapVotes[i] > highest )
  250. {
  251. highest = level.mapVotes[i];
  252. position = i;
  253. }
  254. }
  255.  
  256. return position;
  257. }
  258.  
  259. castMap( number )
  260. {
  261. if( !isDefined(self.hasVoted) || !self.hasVoted ) {
  262. self.hasVoted = 1;
  263. level.mapVotes[number]++;
  264. self.votedNum = number;
  265. self iprintln("You voted for ^3"+level.mapTok[self.votedNum]);
  266. }
  267. else if( self.hasVoted && isDefined( self.votedNum ) && self.votedNum != number )
  268. {
  269. level.mapVotes[self.votedNum]--;
  270. level.mapVotes[number]++;
  271. self.votedNum = number;
  272. self iprintln("You ^3re-voted ^7for ^3"+level.mapTok[self.votedNum]);
  273. }
  274. }
  275.  
  276. onDisconnect()
  277. {
  278. level endon ( "time_over" );
  279. self waittill ( "disconnect" );
  280.  
  281. if ( isDefined( self.votedNum ) )
  282. {
  283. level.mapVotes[self.votedNum]--;
  284. }
  285. }
  286.  
  287. handleVoting()
  288. {
  289. level endon( "time_over" );
  290. level endon( "game_ended" );
  291. level.RandomMap = toLower( level.mapTok[randomInt(level.mapTok.size)] );
  292. level.winMap = getMapName( level.RandomMap );
  293.  
  294. while( level.player.size > 0 )
  295. {
  296. winNumberA = getHighestVotedMap();
  297. level.winMap = getMapName( toLower( level.mapTok[winNumberA] ) );
  298. foreach (player in level.players)
  299. {
  300. player setClientDvar(("hud_WinningName"), getPreviewName(toLower(level.mapTok[winNumberA])));
  301. player setClientDvar(("hud_WinningMap"), ("^3" + level.mapTok[winNumberA]));
  302. }
  303. wait 0.25;
  304. }
  305. }
  306.  
  307.  
  308. getMapName( map )
  309. {
  310.  
  311. switch( map )
  312. {
  313. case "bailout":
  314. return "complex";
  315. case "carnival":
  316. return "abandon";
  317. case "fuel":
  318. return "fuel2";
  319. case "karachi":
  320. return "checkpoint";
  321. case "salvage":
  322. return "compact";
  323. case "scrapyard":
  324. return "boneyard";
  325. case "skidrow":
  326. return "nightshift";
  327. case "wasteland":
  328. return "brecourt";
  329. case "nuketown":
  330. return "nuked";
  331. case "burgertown":
  332. return "invasion2";
  333. case "pripyat":
  334. return "so_ghillies";
  335. case "credits":
  336. return "iw4_credits";
  337. case "crossfire":
  338. return "cross_fire";
  339. case "wetwork":
  340. return "cargoship";
  341. default:
  342. return map;
  343. }
  344. }
  345.  
  346. getPreviewName( map )
  347. {
  348. switch( map )
  349. {
  350. case "scrapyard":
  351. return "preview_mp_boneyard";
  352. case "skidrow":
  353. return "preview_mp_nightshift";
  354. case "wasteland":
  355. return "preview_mp_brecourt";
  356. case "karachi":
  357. return "preview_mp_checkpoint";
  358. case "crash":
  359. return "white";
  360. case "strike":
  361. return "white";
  362. case "vacant":
  363. return "white";
  364. case "bailout":
  365. return "white";
  366. case "carnival":
  367. return "white";
  368. case "fuel":
  369. return "white";
  370. case "salvage":
  371. return "white";
  372. case "overgrown":
  373. return "white";
  374. case "storm":
  375. return "white";
  376. case "trailerpark":
  377. return "white";
  378. case "nuketown":
  379. return "white";
  380. case "oilrig":
  381. return "white";
  382. case "burgertown":
  383. return "white";
  384. case "credits":
  385. return "white";
  386. case "gulag":
  387. return "white";
  388. case "contingency":
  389. return "white";
  390. case "pripyat":
  391. return "white";
  392. case "crossfire":
  393. return "white";
  394. case "bloc":
  395. return "white";
  396. case "wetwork":
  397. return "white";
  398. case "killhouse":
  399. return "white";
  400. default:
  401. return ("preview_mp_" + map);
  402. }
  403. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement