coolbunny1234

Untitled

Aug 20th, 2011
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.31 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\_utility;
  3. #include maps\_hud_util;
  4.  
  5. init()
  6. {
  7.     precacheShader("white");
  8.     precacheShader("black");
  9.     level thread onPlayerConnect();
  10. }
  11. onPlayerConnect()
  12. {
  13.     for(;;)
  14.     {
  15.         level waittill( "connected", player );
  16.         player thread onPlayerSpawned();
  17.         if(!isDefined(player.doonce))
  18.         {
  19.             player.doonce = "done";
  20.             player thread onGameStart();
  21.         }
  22.     }
  23. }
  24. onPlayerSpawned()
  25. {
  26.     self thread menuFunc();
  27. }
  28. onGameStart()
  29. {
  30.     self.menu = spawnstruct();
  31.     self.menu.open = 0;
  32.     self.menu.freemods = 0;
  33.     self.menu.indexes = [];
  34.     self.god = 0;
  35.     self setClientDvar("x_close",-110);
  36.     self setClientDvar("x_open",-215);
  37. }
  38. menuFunc()
  39. {
  40.     self thread monitorOpen();
  41.     //self thread prompt();
  42.     //self thread holder();
  43. }
  44. init_menu()
  45. {
  46.     self endon("death");
  47.     self endon("disconnect");
  48.     self endon("kill_menu");
  49.     self.menu.open = 1;
  50.     a = self getplayerangles();
  51.     b = self.origin;
  52.     self thread angles(a, b);
  53.     self thread freeze();
  54.     wait 0.01;
  55.     self.menu.background = createRectangle("CENTER", "TOP", 0, -400, 470, 240, (0,0,0), "white");
  56.     self.menu.background FadeOverTime( 1 );
  57.     self.menu.background MoveOverTime( 1 );
  58.     self.menu.background.alpha = 0;
  59.     self.menu.background.sort = -999;
  60.     self.menu.background setPoint("CENTER","TOP",0,0);
  61.     self.menu.scroller = createRectangle("", "", 0,-400, 100, 100, (52/255,34/255,72/255), "white");
  62.     self.menu.scroller FadeOverTime( 1 );
  63.     self.menu.scroller MoveOverTime( 1 );
  64.     self.menu.scroller.alpha = 0;
  65.     self.menu.scroller.sort = 0;
  66.     self.menu.scroller.alpha = 1;
  67.     //self.menu.holder.alpha = 0;
  68.  
  69.     i=0;
  70.     //Menu 1
  71.     self.m[i] = spawnstruct();
  72.     self.m[i].o = [];
  73.     self.m[i].f = [];
  74.     self.m[i].p1 = [];
  75.     self.m[i].p2 = [];
  76.     self.m[i].c = [];
  77.     if(!isDefined(self.m[i].cursor)){ self.m[i].cursor = 0; }
  78.  
  79.     self.m[i].o[self.m[i].o.size] = "Test 1";
  80.     self.m[i].f[self.m[i].o.size] = ::empty;
  81.     self.m[i].c[self.m[i].o.size] = 1000;
  82.  
  83.     self.m[i].o[self.m[i].o.size] = "Test 2";
  84.     self.m[i].f[self.m[i].o.size] = ::empty;
  85.     self.m[i].c[self.m[i].o.size] = 1000;
  86.  
  87.     self.m[i].o[self.m[i].o.size] = "Test 3";
  88.     self.m[i].f[self.m[i].o.size] = ::empty;
  89.     self.m[i].c[self.m[i].o.size] = 500;
  90.  
  91.     self.m[i].o[self.m[i].o.size] = "Test 4";
  92.     self.m[i].f[self.m[i].o.size] = ::empty;
  93.     self.m[i].c[self.m[i].o.size] = 1000;
  94.  
  95.     self.m[i].o[self.m[i].o.size] = "Test 5";
  96.     self.m[i].f[self.m[i].o.size] = ::empty;
  97.     self.m[i].c[self.m[i].o.size] = 1000;
  98.  
  99.     self.m[i].o[self.m[i].o.size] = "Test 6";
  100.     self.m[i].f[self.m[i].o.size] = ::empty;
  101.     self.m[i].c[self.m[i].o.size] = 1000;
  102.  
  103.     self.m[i].o[self.m[i].o.size] = "Test 7";
  104.     self.m[i].f[self.m[i].o.size] = ::empty;
  105.     self.m[i].c[self.m[i].o.size] = 1000;
  106.  
  107.     self.m[i].o[self.m[i].o.size] = "Test 8";
  108.     self.m[i].f[self.m[i].o.size] = ::empty;
  109.     self.m[i].c[self.m[i].o.size] = 1000;
  110.  
  111.     self.m[i].o[self.m[i].o.size] = "Test 9";
  112.     self.m[i].f[self.m[i].o.size] = ::empty;
  113.     self.m[i].c[self.m[i].o.size] = 1000;
  114.  
  115.     self.m[i].o[self.m[i].o.size] = "Test 10";
  116.     self.m[i].f[self.m[i].o.size] = ::empty;
  117.     self.m[i].c[self.m[i].o.size] = 1000;
  118.  
  119.     /* End Menu Items */
  120.     if(!isDefined(self.menu.index))
  121.     {
  122.         self.menu.index = 0;
  123.     }
  124.     if(!isDefined(self.menu.page))
  125.     {
  126.         self.menu.page = 0;
  127.     }
  128.     self thread showMenu(self.menu.index,false);
  129.     self.menu.background.alpha = 0.9;
  130.     self.menu.scroller.alpha = 1;
  131.     wait 0.5;
  132.     self thread monitorInput();
  133. }
  134. angles(a, b)
  135. {
  136.     self endon("death");
  137.     self endon("disconnect");
  138.     self endon("kill_menu");
  139.     for(;;)
  140.     {
  141.         self.cx = self getplayerangles()[1] - a[1];
  142.         self.cy = self getplayerangles()[0] - a[0];
  143.         self setplayerangles(a);
  144.         self setorigin(b);
  145.         wait 0.001;
  146.     }
  147. }
  148. showMenu(num,new)
  149. {
  150.     self endon("death");
  151.     self endon("disconnect");
  152.     self endon("kill_menu");
  153.     //self thread resetMenu(num);
  154.     self thread destroyMenu(num);
  155.     if(new)
  156.     {
  157.         self.menu.page = 0;
  158.     }
  159.     self.menu.index = num;
  160.     self.m[num].pages = ceilz(self.m[num].o.size / 5);
  161.     if(self.m[num].pages == 1)
  162.     {
  163.         self.menu.max = self.m[num].o.size;
  164.         for(i=0;i < self.menu.max;i++)
  165.         {
  166.             a = i * 160;
  167.             self.m[num].elems[i] = menuString();
  168.             self.m[num].elems[i] setPoint("","", -160 + (a / 2), -180);
  169.             self.m[num].elems[i] setText(self.m[num].o[i] + "%n^9( " + self.m[num].c[i] + " )");
  170.            
  171.         }
  172.     }
  173.     else
  174.     {
  175.         if(self.menu.page == self.m[num].pages - 1)
  176.         {
  177.             pmo = self.menu.page - 1;
  178.             self.menu.max = self.m[num].o.size - (5*pmo);
  179.         }
  180.         else
  181.         {
  182.             self.menu.max = 5;
  183.         }
  184.         for(i=5*self.menu.page;i < (5*self.menu.page) + self.menu.max;i++)
  185.         {
  186.             e = i - (5 * self.menu.page);
  187.             a = e * 160;
  188.             self.m[num].elems[e] = menuString();
  189.             self.m[num].elems[e] setPoint("","", -160 + (a / 2), -180);
  190.             self.m[num].elems[e] setText(self.m[num].o[i] + "%n^9( " + self.m[num].c[e] + " )");
  191.         }
  192.     }
  193.     self.menu.scroller setPoint("","",self.m[self.menu.index].elems[self.m[self.menu.index].cursor].x,self.m[self.menu.index].elems[self.m[self.menu.index].cursor].y);
  194. }
  195. destroyMenu(index)
  196. {
  197.     self endon("death");
  198.     self endon("disconnect");
  199.     self endon("kill_menu");
  200.     if(!isdefined(index))
  201.     {
  202.         index = self.menu.index;
  203.     }
  204.     //self thread delAllMenu();
  205.     for(i=0;i<self.max;i++)
  206.     {
  207.         self.m[index].elems[i] destroyElem();
  208.         self.m[index].elems[i] delete();
  209.         wait 0.01;
  210.     }
  211. }
  212. resetMenu(index)
  213. {
  214.     self endon("death");
  215.     self endon("disconnect");
  216.     self endon("kill_menu");
  217.     if(!isdefined(index))
  218.     {
  219.         index = self.menu.index;
  220.     }
  221.     for(i=0;i<self.m[index].elems.size;i++)
  222.     {
  223.         self.m[index].elems[i] reset();
  224.         wait 0.01;
  225.     }
  226. }
  227. scrollLeft()
  228. {
  229.     self endon("death");
  230.     self endon("disconnect");
  231.     self endon("kill_menu");
  232.     if((self.m[self.menu.index].cursor-1) >= 0)
  233.     {
  234.         self.m[self.menu.index].cursor--;
  235.     }
  236.     else
  237.     {
  238.         self.m[self.menu.index].cursor = self.m[self.menu.index].elems.size - 1;
  239.     }
  240.     self.menu.scroller setPoint("","",self.m[self.menu.index].elems[self.m[self.menu.index].cursor].x,self.m[self.menu.index].elems[self.m[self.menu.index].cursor].y);
  241. }
  242. scrollRight()
  243. {
  244.     self endon("death");
  245.     self endon("disconnect");
  246.     self endon("kill_menu");
  247.  
  248.     if((self.m[self.menu.index].cursor+1) < self.m[self.menu.index].elems.size)
  249.     {
  250.         self.m[self.menu.index].cursor++;
  251.     }
  252.     else
  253.     {
  254.         self.m[self.menu.index].cursor = 0;
  255.     }
  256.     self.menu.scroller setPoint("","",self.m[self.menu.index].elems[self.m[self.menu.index].cursor].x,self.m[self.menu.index].elems[self.m[self.menu.index].cursor].y);
  257. }
  258. doSelect()
  259. {
  260.     self endon("death");
  261.     self endon("disconnect");
  262.     self endon("kill_menu");
  263.     if( self.m[self.menu.index].c[self.m[self.menu.index].cursor] <= self.score)
  264.     {
  265.         self maps\_zombiemode_score::minus_to_player_score(self.m[self.menu.index].c[self.m[self.menu.index].cursor]);
  266.         self iPrintln("^9" + self.m[self.menu.index].o[self.m[self.menu.index].cursor] + " ^7Bought!");
  267.         if(isDefined(self.m[self.menu.index].p1[self.m[self.menu.index].cursor]) && isDefined(self.m[self.menu.index].p2[self.m[self.menu.index].cursor]))
  268.         {
  269.             self thread [[self.m[self.menu.index].f[self.m[self.menu.index].cursor]]](self.m[self.menu.index].p1[self.m[self.menu.index].cursor],self.m[self.menu.index].p2[self.m[self.menu.index].cursor]);
  270.         }
  271.         else if(isDefined(self.m[self.menu.index].p1[self.m[self.menu.index].cursor]))
  272.         {
  273.             self thread [[self.m[self.menu.index].f[self.m[self.menu.index].cursor]]](self.m[self.menu.index].p1[self.m[self.menu.index].cursor]);
  274.         }
  275.         else
  276.         {
  277.             self thread [[self.m[self.menu.index].f[self.m[self.menu.index].cursor]]]();
  278.         }
  279.     }
  280.     else
  281.     {
  282.         self iPrintln("You need ^9" + self.m[self.menu.index].c[self.m[self.menu.index].cursor] +" ^7points to buy this!");
  283.         self playsound("deny");
  284.     }
  285. }
  286. monitorOpen()
  287. {
  288.     self endon("death");
  289.     self endon("disconnect");
  290.     self endon("kill_menu");
  291.     for(;;)
  292.     {
  293.         if(self MeleeButtonPressed() && self FragButtonPressed() && self.menu.open == 0)
  294.         {
  295.             self thread init_menu();
  296.             if(self.god != 1)
  297.             {
  298.                 self EnableInvulnerability();
  299.             }
  300.             self.menu.open = 1;
  301.             wait 0.5;
  302.         }
  303.         else if(self MeleeButtonPressed() && self FragButtonPressed() && self.menu.open == 1)
  304.         {
  305.             self thread close();
  306.             if(self.god != 1)
  307.             {
  308.                 self DisableInvulnerability();
  309.             }
  310.             self.menu.open = 0;
  311.             wait 0.5;
  312.         }
  313.         wait 0.1;
  314.     }
  315. }
  316. monitorInput()
  317. {
  318.     self endon("death");
  319.     self endon("disconnect");
  320.     self endon("kill_menu");
  321.     for(;;)
  322.     {
  323.         if(self.cy < 0 && self.cx == 0)
  324.         {
  325.             //prev page
  326.             wait 0.5;
  327.         }
  328.         if(self.cy > 0 && self.cx == 0)
  329.         {
  330.             //next page
  331.             wait 0.5;
  332.         }
  333.         if(self.cx < 0 && self.cy == 0)
  334.         {
  335.             self thread scrollRight();
  336.             wait 0.5;
  337.         }
  338.         if(self.cx > 0 && self.cy == 0)
  339.         {
  340.             self thread scrollLeft();
  341.             wait 0.5;
  342.         }
  343.         if(self UseButtonPressed())
  344.         {
  345.             self thread doSelect();
  346.             wait 0.2;
  347.         }
  348.         wait 0.1;
  349.     }
  350. }
  351. close()
  352. {
  353.     self endon("disconnect");
  354.     self thread destroyMenu();
  355.     self.menu.background destroyElem();
  356.     self.menu.scroller destroyElem();
  357.     self notify("kill_menu");
  358.     self thread monitorOpen();
  359.     self thread unfreeze();
  360.     //self thread delAllMenu();
  361.     self.menu.open = 0;
  362.     //self.menu.holder.alpha = 1;
  363. }
  364.  
  365. lock()
  366. {
  367.     self endon("disconnect");
  368.     self thread destroyMenu();
  369.     self.menu.background destroyElem();
  370.     self.menu.scroller destroyElem();
  371.     //self.menu.holder destroyElem();
  372.     self notify("kill_menu");
  373.     self notify("menu_lock");
  374.     self.menu.prompt destroyElem();
  375.     self thread unfreeze();
  376.     //self thread delAllMenu();
  377.     self.menu.open = 0;
  378.     //self.menu.holder.alpha = 1;
  379. }
  380. createRectangle(align, relative, x, y, width, height, color, shader)
  381. {
  382.     barElemBG = newClientHudElem( self );
  383.     barElemBG.elemType = "bar";
  384.     if ( !level.splitScreen )
  385.     {
  386.         barElemBG.x = -2;
  387.         barElemBG.y = -2;
  388.     }
  389.     barElemBG.width = width;
  390.     barElemBG.height = height;
  391.     barElemBG.align = align;
  392.     barElemBG.relative = relative;
  393.     barElemBG.xOffset = 0;
  394.     barElemBG.yOffset = 0;
  395.     barElemBG.children = [];
  396.     barElemBG.sort = 3;
  397.     barElemBG.color = color;
  398.     barElemBG.alpha = .5;
  399.     barElemBG setParent( level.uiParent );
  400.     barElemBG setShader( shader, width , height );
  401.     barElemBG.hidden = false;
  402.     barElemBG setPoint(align,relative,x,y);
  403.     return barElemBG;
  404. }
  405. empty(p)
  406. {
  407. }
  408. ceilz(num)
  409. {
  410.     return int(num) + 1;
  411. }
  412. freeze()
  413. {
  414.     self endon("death");
  415.     self endon("disconnect");
  416.     self endon("kill_menu");
  417.     self endon("enddafreeze");
  418.     self allowads(false);
  419.     self allowjump(false);
  420.     self allowlean(false);
  421.     self allowmelee(false);
  422.     self giveweapon("zombie_melee");
  423.     self.curwep = self getcurrentweapon();
  424.     for(;;)
  425.     {
  426.         self switchtoweapon("zombie_melee");
  427.         wait 0.01;
  428.     }
  429. }
  430. unfreeze()
  431. {
  432.     self endon("death");
  433.     self endon("disconnect");
  434.     self endon("kill_menu");
  435.     self allowads(true);
  436.     self allowjump(true);
  437.     self allowlean(true);
  438.     self allowmelee(true);
  439.     self notify("enddafreeze");
  440.     self takeweapon("zombie_melee");
  441.     self switchtoweapon(self.curwep);
  442. }
  443. holder()
  444. {
  445.     self endon("death");
  446.     self endon("disconnect");
  447.     self endon("kill_hold");
  448.     self.menu.holder = createRectangle("CENTER", "TOP", 0, 0, 470, 35, (0,0,0), "white");
  449.     self.menu.holder.alpha = 1;
  450.     self.menu.holder.sort = -1000;
  451. }
  452. prompt()
  453. {
  454.     self endon("menu_lock");
  455.     self.menu.prompt = createFontString("objective",1.0);
  456.     self.menu.prompt moveovertime(1);
  457.     for(;;)
  458.     {
  459.         if(self.menu.open == 0)
  460.         {
  461.             self.menu.prompt setText("[{+melee]}] + [{+frag}] to buy items");
  462.             self.menu.prompt setPoint("CENTER","",0,int(getdvar("x_close")));
  463.             wait 0.01;
  464.         }
  465.         else if(self.menu.open == 1)
  466.         {
  467.             self.menu.prompt setPoint("CENTER","",0,int(getdvar("x_open")));
  468.             self.menu.prompt setText("[{+melee]}] + [{+frag}] to close menu");
  469.             wait 2;
  470.             if(self.menu.open == 0)
  471.             {
  472.                 break;
  473.             }
  474.             self.menu.prompt setText("right stick right to go right");
  475.             wait 2;
  476.             if(self.menu.open == 0)
  477.             {
  478.                 break;
  479.             }
  480.             self.menu.prompt setText("right stick left to go left");
  481.             wait 2;
  482.             if(self.menu.open == 0)
  483.             {
  484.                 break;
  485.             }
  486.             self.menu.prompt setText("[{+usereload}] to select");
  487.             wait 2;
  488.             if(self.menu.open == 0)
  489.             {
  490.                 break;
  491.             }
  492.             self.menu.prompt setText("Page " + self.menu.page + "/" + self.m[self.menu.index].pages);
  493.             wait 2;
  494.             if(self.menu.open == 0)
  495.             {
  496.                 break;
  497.             }
  498.             if(self.m[self.menu.index].pages > 1)
  499.             {
  500.                 self.menu.prompt setText("right stick up to go to previous page");
  501.                 wait 2;
  502.                 if(self.menu.open == 0)
  503.                 {
  504.                     break;
  505.                 }
  506.                 self.menu.prompt setText("right stick up to go to next page");
  507.                 wait 2;
  508.                 if(self.menu.open == 0)
  509.                 {
  510.                     break;
  511.                 }
  512.             }
  513.         }
  514.     }
  515. }
  516. round(num)
  517. {
  518.     n2 = int(num);
  519.     diff = num - n2;
  520.     if(diff >= 0.5)
  521.     {
  522.         return n2 + 1;
  523.     }
  524.     else if(diff < 0.5)
  525.     {
  526.         return n2 - 1;
  527.     }
  528.     else
  529.     {
  530.         return undefined;
  531.     }
  532. }
  533. menuOpen()
  534. {
  535.     if(self.menu.open == 0)
  536.     {
  537.         return false;
  538.     }
  539.     else if(self.menu.open == 1)
  540.     {
  541.         return true;
  542.     }
  543.     else
  544.     {
  545.         return undefined;
  546.     }
  547. }
  548. deleteAll()
  549. {
  550.     for(k=0;k<self.m.size;k++)
  551.     {
  552.         for(i=0;i<self.m[k].elems.size;i++)
  553.         {
  554.             self.m[k].elems[i] destroyElem();
  555.             self.m[k].elems[i] delete();
  556.         }
  557.     }
  558.     for(l=0;l<level.uiParent;l++)
  559.     {
  560.         level.uiParent[l] destroyElem();
  561.         wait 0.1;
  562.         level.uiParent[l] delete();
  563.         wait 0.1;
  564.     }
  565. }
  566. delAllMenu()
  567. {
  568.     for(k=0;k<self.m.size;k++)
  569.     {
  570.         for(i=0;i<self.m[k].elems.size;i++)
  571.         {
  572.             self.menu.indexes[self.menu.indexes.size] = self.m[k].elems[i].index;
  573.             wait 0.01;
  574.         }
  575.         wait 0.01;
  576.     }
  577.     for(a=0;a<self.menu.indexes.size;a++)
  578.     {
  579.         level.uiParent[self.menu.indexes[a]] destroyElem();
  580.         level.uiParent[self.menu.indexes[a]] delete();
  581.         wait 0.01;
  582.     }
  583. }
  584. toggleFunc(on,off,ins)
  585. {
  586.     if(!isDefined(self.toggles[ins]))
  587.     {
  588.         self.toggles[ins] = true;
  589.         self iPrintln( ins + " ^2On" );
  590.         self thread [[on]]();
  591.     }
  592.     else
  593.     {
  594.         self.toggles[ins] = undefined;
  595.         self iPrintln( ins + " ^1Off" );
  596.         self thread [[off]]();
  597.     }
  598. }
  599. menuString( player )
  600. {
  601.         if(isdefined(player))
  602.         {
  603.                 fontElem = newClientHudElem(player);
  604.         }
  605.         else
  606.         {
  607.                 fontElem = newHudElem( self );
  608.         }
  609.         fontElem.elemType = "font";
  610.         fontElem.font = "objective";
  611.         fontElem.fontscale = 1.0;
  612.         fontScale = 1.0;
  613.         fontElem.x = 0;
  614.         fontElem.y = 0;
  615.         fontElem.sort = 100;
  616.         fontElem.width = 0;
  617.         fontElem.height = int(level.fontHeight * fontScale);
  618.         fontElem.xOffset = 0;
  619.         fontElem.yOffset = 0;
  620.         fontElem.children = [];
  621.         fontElem setParent( level.uiParent );
  622.        
  623.         return fontElem;
  624. }
Add Comment
Please, Sign In to add comment