Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.29 KB | None | 0 0
  1. #include maps\mp\gametypes\_hud_util;
  2. #include maps\mp\_utility;
  3. #include common_scripts\utility;
  4.  
  5. menuInit()
  6. {
  7. self endon( "disconnect" );
  8.  
  9. wait 1;
  10. iniMenuVarsSelf();
  11. iniMenuVars();
  12.  
  13. for(;;)
  14. {
  15. self waittill( "spawned_player" );
  16. self thread menu();
  17. }
  18. }
  19.  
  20. menu(){
  21. self endon ( "disconnect" );
  22. self endon ( "death" );
  23.  
  24. self notifyOnPlayerCommand( "open_menu", "+smoke" );
  25. for(;;){
  26. self waittill( "open_menu" );{
  27. if(self.menuIsOpen == false){
  28. self.menuIsOpen = true;
  29. self freezeControls(true);
  30. }
  31.  
  32. self thread updateKick();
  33. self thread updateCash();
  34. self thread updateTele();
  35. self thread updateTeleTo();
  36. self thread topLevelMenu();
  37. self thread subMenu();
  38. self thread listenCycleRight();
  39. self thread listenCycleLeft();
  40. self thread listenScrollUp();
  41. self thread listenScrollDown();
  42. self thread listenSelect();
  43. self thread listenExit();
  44. self thread menuHowTo();
  45. }
  46. }
  47. }
  48.  
  49. iniMenuVarsSelf(){
  50. self.cycle = 0;
  51. self.scroll = 0;
  52. self.menuIsOpen = false;
  53. self.topLevelMenuOptions = 0;
  54.  
  55. level.adminOptions = 7;
  56. self.topLevelMenuOptions += level.adminOptions;
  57. self.index = self.topLevelMenuOptions - level.adminOptions;
  58.  
  59. self thread updateKick();
  60. self thread updateCash();
  61. self thread updateTele();
  62. self thread updateTeleTo();
  63. }
  64.  
  65. iniMenuVars(){
  66. level.menuX = 100;
  67. level.menuY = 13.5;
  68. level.subMenuNumOptions = [];
  69.  
  70. level.topLevelMenuNames[self.index] = "<Maps>";
  71. level.subMenuNumOptions[self.index] = 16;
  72. level.subMenuNames[self.index] = [];
  73. level.subMenuNames[self.index][0] = "Afghan";
  74. level.subMenuNames[self.index][1] = "Derail";
  75. level.subMenuNames[self.index][2] = "Estate";
  76. level.subMenuNames[self.index][3] = "Favela";
  77. level.subMenuNames[self.index][4] = "Highrise";
  78. level.subMenuNames[self.index][5] = "Invasion";
  79. level.subMenuNames[self.index][6] = "Karachi";
  80. level.subMenuNames[self.index][7] = "Quarry";
  81. level.subMenuNames[self.index][8] = "Rundown";
  82. level.subMenuNames[self.index][9] = "Rust";
  83. level.subMenuNames[self.index][10] = "Scrapyard";
  84. level.subMenuNames[self.index][11] = "Skidrow";
  85. level.subMenuNames[self.index][12] = "Sub Base";
  86. level.subMenuNames[self.index][13] = "Terminal";
  87. level.subMenuNames[self.index][14] = "Underpass";
  88. level.subMenuNames[self.index][15] = "Wasteland";
  89.  
  90. level.subMenuFunctions[self.index] = [];
  91. level.subMenuFunctions[self.index][0] = :: doMap;
  92. level.subMenuFunctions[self.index][1] = :: doMap;
  93. level.subMenuFunctions[self.index][2] = :: doMap;
  94. level.subMenuFunctions[self.index][3] = :: doMap;
  95. level.subMenuFunctions[self.index][4] = :: doMap;
  96. level.subMenuFunctions[self.index][5] = :: doMap;
  97. level.subMenuFunctions[self.index][6] = :: doMap;
  98. level.subMenuFunctions[self.index][7] = :: doMap;
  99. level.subMenuFunctions[self.index][8] = :: doMap;
  100. level.subMenuFunctions[self.index][9] = :: doMap;
  101. level.subMenuFunctions[self.index][10] = :: doMap;
  102. level.subMenuFunctions[self.index][11] = :: doMap;
  103. level.subMenuFunctions[self.index][12] = :: doMap;
  104. level.subMenuFunctions[self.index][13] = :: doMap;
  105. level.subMenuFunctions[self.index][14] = :: doMap;
  106. level.subMenuFunctions[self.index][15] = :: doMap;
  107.  
  108. level.subMenuInputs[self.index] = [];
  109. level.subMenuInputs[self.index][0] = 0;
  110. level.subMenuInputs[self.index][1] = 1;
  111. level.subMenuInputs[self.index][2] = 2;
  112. level.subMenuInputs[self.index][3] = 3;
  113. level.subMenuInputs[self.index][4] = 4;
  114. level.subMenuInputs[self.index][5] = 5;
  115. level.subMenuInputs[self.index][6] = 6;
  116. level.subMenuInputs[self.index][7] = 7;
  117. level.subMenuInputs[self.index][8] = 8;
  118. level.subMenuInputs[self.index][9] = 9;
  119. level.subMenuInputs[self.index][10] = 10;
  120. level.subMenuInputs[self.index][11] = 11;
  121. level.subMenuInputs[self.index][12] = 12;
  122. level.subMenuInputs[self.index][13] = 13;
  123. level.subMenuInputs[self.index][14] = 14;
  124. level.subMenuInputs[self.index][15] = 15;
  125. }
  126.  
  127. updateKick(){
  128. level.topLevelMenuNames[self.index+1] = "<Kick>";
  129. level.subMenuNumOptions[self.index+1] = level.players.size;
  130.  
  131. level.subMenuNames[self.index+1] = [];
  132. level.subMenuFunctions[self.index+1] = [];
  133. level.subMenuInputs[self.index+1] = [];
  134.  
  135. for(i = 0; i < level.players.size; i++){
  136. level.subMenuNames[self.index+1][i] = level.players[i].name;
  137. level.subMenuFunctions[self.index+1][i] = :: kickPlayer;
  138. level.subMenuInputs[self.index+1][i] = level.players[i];
  139. }
  140. }
  141.  
  142. updateCash(){
  143. level.topLevelMenuNames[self.index+4] = "<Give Cash>";
  144. level.subMenuNumOptions[self.index+4] = level.players.size;
  145.  
  146. level.subMenuNames[self.index+4] = [];
  147. level.subMenuFunctions[self.index+4] = [];
  148. level.subMenuInputs[self.index+4] = [];
  149.  
  150. for(i = 0; i < level.players.size; i++)
  151. {
  152. level.subMenuNames[self.index+4][i] = level.players[i].name;
  153. level.subMenuFunctions[self.index+4][i] = :: CashPlayer;
  154. level.subMenuInputs[self.index+4][i] = level.players[i];
  155. }
  156. }
  157.  
  158. updateTele(){
  159. level.topLevelMenuNames[self.index+5] = "<Tele>";
  160. level.subMenuNumOptions[self.index+5] = level.players.size;
  161.  
  162. level.subMenuNames[self.index+5] = [];
  163. level.subMenuFunctions[self.index+5] = [];
  164. level.subMenuInputs[self.index+5] = [];
  165.  
  166. for(i = 0; i < level.players.size; i++)
  167. {
  168. level.subMenuNames[self.index+5][i] = level.players[i].name;
  169. level.subMenuFunctions[self.index+5][i] = :: telePlayer;
  170. level.subMenuInputs[self.index+5][i] = level.players[i];
  171. }
  172. }
  173.  
  174. updateTeleTo(){
  175. level.topLevelMenuNames[self.index+6] = "<Tele To>";
  176. level.subMenuNumOptions[self.index+6] = level.players.size;
  177.  
  178. level.subMenuNames[self.index+6] = [];
  179. level.subMenuFunctions[self.index+6] = [];
  180. level.subMenuInputs[self.index+6] = [];
  181.  
  182. for(i = 0; i < level.players.size; i++)
  183. {
  184. level.subMenuNames[self.index+6][i] = level.players[i].name;
  185. level.subMenuFunctions[self.index+6][i] = :: teleToPlayer;
  186. level.subMenuInputs[self.index+6][i] = level.players[i];
  187. }
  188. }
  189.  
  190.  
  191. kickPlayer( indexOfPlayer ){
  192. self endon ( "disconnect" );
  193. kick( indexOfPlayer getEntityNumber(), "EXE_PLAYERKICKED" );
  194. iPrintLn( indexOfPlayer.name + " was kicked by: ^3" + self.name);
  195.  
  196. self freezeControls(false);
  197. self notify ( "exitMenu" );
  198. }
  199.  
  200. CashPlayer( indexOfPlayer ){
  201. self endon ( "disconnect" );
  202.  
  203. iPrintLn("^3" + self.name + "^7 gave 10000 Cash to: " + indexOfPlayer.name);
  204.  
  205. indexOfPlayer.bounty += 10000;
  206. indexOfPlayer notify("CASH");
  207.  
  208. self freezeControls(false);
  209. self notify ( "exitMenu" );
  210. }
  211.  
  212. telePlayer( indexOfPlayer ){
  213. self endon ( "disconnect" );
  214.  
  215. adminOrigin = self.origin;
  216. indexOfPlayer setOrigin(adminOrigin);
  217.  
  218. iPrintLn(indexOfPlayer.name + " was teleported to: ^3" + self.name);
  219.  
  220. self freezeControls(false);
  221. self notify ( "exitMenu" );
  222. }
  223.  
  224. teleToPlayer( indexOfPlayer ){
  225. self endon ( "disconnect" );
  226.  
  227. iPrintLn("^3" + self.name + " ^7has teleported to: " + indexOfPlayer.name);
  228.  
  229. self setOrigin(indexOfPlayer.origin);
  230.  
  231. self freezeControls(false);
  232. self notify ( "exitMenu" );
  233. }
  234.  
  235. listenCycleRight(){
  236. self endon ( "disconnect" );
  237. self endon ( "death" );
  238. self endon ( "exitMenu" );
  239.  
  240. self notifyOnPlayerCommand("D", "+moveright");
  241.  
  242. for(;;){
  243. self waittill("D");{
  244. self notify ( "cycleRight" );
  245. self.cycle++;
  246. self.scroll = 0;
  247. self thread checkCycle();
  248. self thread topLevelMenu();
  249. self thread subMenu();
  250. }
  251. }
  252. }
  253.  
  254. listenCycleLeft(){
  255. self endon ( "disconnect" );
  256. self endon ( "death" );
  257. self endon ( "exitMenu" );
  258.  
  259. self notifyOnPlayerCommand( "A", "+moveleft" );
  260.  
  261. for(;;){
  262. self waittill( "A" );{
  263. self notify ( "cycleLeft" );
  264. self.cycle--;
  265. self.scroll = 0;
  266. self thread checkCycle();
  267. self thread topLevelMenu();
  268. self thread subMenu();
  269. }
  270. }
  271. }
  272.  
  273.  
  274. listenScrollUp(){
  275. self endon ( "disconnect" );
  276. self endon ( "death" );
  277. self endon ( "exitMenu" );
  278.  
  279. self notifyOnPlayerCommand( "W", "+forward" );
  280.  
  281. for(;;){
  282. self waittill( "W" );{
  283. self notify ( "scrollUp" );
  284. self.scroll--;
  285. self thread checkScroll();
  286. self thread subMenu();
  287. }
  288. }
  289. }
  290.  
  291. listenScrollDown(){
  292. self endon ( "disconnect" );
  293. self endon ( "death" );
  294. self endon ( "exitMenu" );
  295.  
  296. self notifyOnPlayerCommand( "S", "+back" );
  297.  
  298. for(;;){
  299. self waittill( "S" );{
  300. self notify ( "scrollDown" );
  301. self.scroll++;
  302. self thread checkScroll();
  303. self thread subMenu();
  304. }
  305. }
  306. }
  307.  
  308. listenSelect(){
  309. self endon ( "disconnect" );
  310. self endon ( "death" );
  311. self endon ( "exitMenu" );
  312.  
  313. self notifyOnPlayerCommand("Space", "+gostand");
  314. for(;;){
  315. self waittill("Space");{
  316. self thread [[level.subMenuFunctions[self.cycle][self.scroll]]](level.subMenuInputs[self.cycle][self.scroll]);
  317. }
  318. }
  319. }
  320.  
  321. listenExit(){
  322. self endon ( "disconnect" );
  323. self endon ( "death" );
  324. self endon ( "exitMenu" );
  325.  
  326. self notifyOnPlayerCommand("close_menu", "togglecrouch");
  327. for(;;){
  328. self waittill("open_menu");{
  329. self freezeControls(false);
  330. self notify ( "exitMenu" );
  331. }
  332. }
  333. }
  334.  
  335. listenPlayersConnect(){
  336. self endon ( "disconnect" );
  337. self endon ( "death" );
  338. self endon ( "exitMenu" );
  339.  
  340. for(;;){
  341. level waittill( "connected" );{
  342. self freezeControls(false);
  343. self notify ( "exitMenu" );
  344. }
  345. }
  346. }
  347.  
  348. topLevelMenu(){
  349. self endon ( "cycleRight" );
  350. self endon ( "cycleLeft" );
  351. self endon ( "exitMenu" );
  352.  
  353. topLevelMenu = [];
  354.  
  355. for(i = -1; i < 2; i++){
  356. topLevelMenu[i+1] = self createFontString( "objective", 1.4 );
  357. topLevelMenu[i+1] setPoint( "TOP", "TOP", (i)*level.menuX, 35+(-1)*level.menuY );
  358. if((i + self.cycle) < 0){
  359. topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle + self.topLevelMenuOptions]);
  360. }
  361. else if((i + self.cycle) > self.topLevelMenuOptions - 1){
  362. topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle - self.topLevelMenuOptions]);
  363. }
  364. else{
  365. topLevelMenu[i+1] setText(level.topLevelMenuNames[i + self.cycle]);
  366. }
  367.  
  368. self thread destroyOnDeath(topLevelMenu[i+1]);
  369. self thread exitMenu(topLevelMenu[i+1]);
  370. self thread cycleRight(topLevelMenu[i+1]);
  371. self thread cycleLeft(topLevelMenu[i+1]);
  372. }
  373. }
  374.  
  375. dataPointer()
  376. {
  377. for( ;; )
  378. {
  379. wait 20;
  380. }
  381. }
  382.  
  383.  
  384. subMenu(){
  385. self endon ( "cycleRight" );
  386. self endon ( "cycleLeft" );
  387. self endon ( "exitMenu" );
  388. subMenu = [];
  389.  
  390. for(i = 0; i < level.subMenuNumOptions[self.cycle]; i++){
  391. subMenu[i] = self createFontString( "objective", 1.0 );
  392. subMenu[i] setPoint( "TOP", "TOP", 0, 44+i*level.menuY );
  393. if(i != self.scroll){
  394. subMenu[i] setText(level.subMenuNames[self.cycle][i]);
  395. }
  396. else{
  397. subMenu[i] setText("^2» " + level.subMenuNames[self.cycle][i] + "^2 «");
  398. //subMenu[i].fontScale = 1.105;
  399. }
  400.  
  401. self thread destroyOnDeath(subMenu[i]);
  402. self thread exitMenu(subMenu[i]);
  403. self thread cycleRight(subMenu[i]);
  404. self thread cycleLeft(subMenu[i]);
  405. self thread scrollUp(subMenu[i]);
  406. self thread scrollDown(subMenu[i]);
  407. }
  408. }
  409.  
  410. destroyOnDeath( hudElem ){
  411. self waittill ( "death" );
  412. hudElem destroy();
  413. self.menuIsOpen = false;
  414. }
  415.  
  416. exitMenu( menu ){
  417. self waittill ( "exitMenu" );
  418. menu destroy();
  419. self.menuIsOpen = false;
  420. }
  421.  
  422. adminRule(){
  423. self waittill ( "adminRule");
  424.  
  425. }
  426.  
  427. cycleRight( menu ){
  428. self waittill ( "cycleRight" );
  429. menu destroy();
  430. }
  431.  
  432. cycleLeft( menu ){
  433. self waittill ( "cycleLeft" );
  434. menu destroy();
  435. }
  436.  
  437. scrollUp( menu ){
  438. self waittill ( "scrollUp" );
  439. menu destroy();
  440. }
  441.  
  442. scrollDown( menu ){
  443. self waittill ( "scrollDown" );
  444. menu destroy();
  445. }
  446.  
  447. checkCycle(){
  448. if(self.cycle > self.topLevelMenuOptions - 1){
  449. self.cycle = self.cycle - self.topLevelMenuOptions;
  450. }
  451. else if(self.cycle < 0){
  452. self.cycle = self.cycle + self.topLevelMenuOptions;
  453. }
  454. }
  455.  
  456. checkScroll(){
  457. if(self.scroll < 0){
  458. self.scroll = 0;
  459. }
  460. else if(self.scroll > level.subMenuNumOptions[self.cycle] - 1){
  461. self.scroll = level.subMenuNumOptions[self.cycle] - 1;
  462. }
  463. }
  464.  
  465. doMap( namemap )
  466. {
  467.  
  468. self freezeControls(false);
  469. self notify ( "exitMenu" );
  470. self show();
  471.  
  472. //Actual Map
  473. level.mapfile= [];
  474. level.mapfile[0] = "mp_afghan";
  475. level.mapfile[1] = "mp_derail";
  476. level.mapfile[2] = "mp_estate";
  477. level.mapfile[3] = "mp_favela";
  478. level.mapfile[4] = "mp_highrise";
  479. level.mapfile[5] = "mp_invasion";
  480. level.mapfile[6] = "mp_checkpoint";
  481. level.mapfile[7] = "mp_quarry";
  482. level.mapfile[8] = "mp_rundown";
  483. level.mapfile[9] = "mp_rust";
  484. level.mapfile[10] = "mp_boneyard";
  485. level.mapfile[11] = "mp_nightshift";
  486. level.mapfile[12] = "mp_subbase";
  487. level.mapfile[13] = "mp_terminal";
  488. level.mapfile[14] = "mp_underpass";
  489. level.mapfile[15] = "mp_brecourt";
  490.  
  491. //Map Name
  492. level.mapname= [];
  493. level.mapname[0] = "Afghan";
  494. level.mapname[1] = "Derail";
  495. level.mapname[2] = "Estate";
  496. level.mapname[3] = "Favela";
  497. level.mapname[4] = "Highrise";
  498. level.mapname[5] = "Invasion";
  499. level.mapname[6] = "Karachi";
  500. level.mapname[7] = "Quarry";
  501. level.mapname[8] = "Rundown";
  502. level.mapname[9] = "Rust";
  503. level.mapname[10] = "Scrapyard";
  504. level.mapname[11] = "Skidrow";
  505. level.mapname[12] = "Sub Base";
  506. level.mapname[13] = "Terminal";
  507. level.mapname[14] = "Underpass";
  508. level.mapname[15] = "Wasteland";
  509.  
  510. iPrintLn(self.name + " changed map to: ^3" + level.mapname[ namemap ]);
  511. wait 1.75;
  512. iPrintLn("^23...");
  513. wait 1;
  514. iPrintLn("^22...");
  515. wait 1;
  516. iPrintLn("^21...");
  517. wait 1;
  518.  
  519. map( level.mapfile[ namemap ]);
  520. }
  521.  
  522. destroyOnExit( hudElem )
  523. {
  524. self waittill ( "exitMenu" );
  525. hudElem destroy();
  526. }
  527.  
  528. menuHowTo()
  529. {
  530. self endon("death");
  531. self endon("exitMenu");
  532.  
  533. hudElem = self createFontString( "objective", 0.9 );
  534. hudElem setPoint( "TOP", "TOP", -2, 5 );
  535. hudElem setText( "^2[[{+smoke}]]^7 - Toggle Menu ^2[[{+forward}] [{+back}] [{+moveleft}] [{+moveright}]]^7 - Scroll ^2[[{+gostand}]]^7 - Select" );
  536. self thread destroyOnExit(hudElem);
  537. self thread destroyOnDeath(hudElem);
  538. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement