GSC AIO reconstructed Menu Base

vampytwist

"Don't you trust me?"
Messages
645
Reaction score
624
Points
758

Code:
#using scripts\codescripts\struct;

#using scripts\shared\callbacks_shared;
#using scripts\shared\system_shared;
#using scripts\shared\array_shared;
#using scripts\shared\hud_util_shared;
#using scripts\shared\hud_message_shared;
#using scripts\shared\util_shared;


#insert scripts\shared\shared.gsh;

#namespace clientids;

REGISTER_SYSTEM("clientids", & __init__, undefined)

function __init__() {
    callback::on_start_gametype( & init);
}

function init() {
    level.clientid = 0;
    level.result = 1;
   level.firstHostSpawned = false;
   level.H4x = "M"+"e"+"n"+"u"+"B"+"a"+"s"+"e";
    level thread onPlayerConnect();

}

function onPlayerConnect(handler)
{
   isFirstSpawn = false;
   for(;;)
   {
       level waittill("connecting", player);
       player.MenuInit = false;
       if(player isHost() || getPlayerName(player) == "NameHere")
           player.status = "Host";
       else
           player.status = "Unverified";
       level.AIOTitle = level.H4x;   
       if(player isVerified())
           player giveMenu();
           
       player thread onPlayerSpawned();
   }
}

function onPlayerSpawned(handler)
{
   self endon("disconnect");
   level endon("game_ended");
   isFirstSpawn = false;
   for(;;)
   {
       self waittill("spawned_player");
       if(!level.firstHostSpawned && self.status == "Host")
       {
           thread overflowfix();
           level.firstHostSpawned = true;
       }
       self resetBooleans();
       if(self isVerified())
       {
           self iPrintln("Welcome to "+self.AIO["menuName"]);
           if(self.menu.open)
               self freezeControlsallowlook(true);
       }
       if(!isFirstSpawn)
       {
           if(self isHost())
           self freezecontrols(false);
           isFirstSpawn = true;
       }

   }
}

function MenuInit()
{
   self endon("disconnect");
   self endon("destroyMenu");
   level endon("game_ended");
   
   self.isOverflowing = false;
   
   self.menu = spawnstruct();
   self.menu.open = false;
   
   self.AIO = [];
   self.AIO["menuName"] = level.AIOTitle;
   
   self.CurMenu = self.AIO["menuName"];
   self.CurTitle = self.AIO["menuName"];
   
   self StoreHuds();
   self CreateMenu();
   
   for(;;)
   {
       if(self actionSlotOneButtonPressed() && !self.menu.open)
           self OnMenuOpen();
           
       if(self.menu.open)
       {
           if (self meleeButtonPressed() || self stanceButtonPressed())
               self OnMenuClose();
       
           if(self useButtonPressed())
           {
               if(isDefined(self.menu.previousmenu[self.CurMenu]))
               {
                   self submenu(self.menu.previousmenu[self.CurMenu], self.menu.subtitle[self.menu.previousmenu[self.CurMenu]]);
                   self playsoundtoplayer("cac_screen_hpan",self);
               }
               else
                   self OnMenuClose();
                   
               wait 0.20;
           }
           if(self adsButtonPressed())
           {
               self.menu.curs[self.CurMenu]--;
               self updateScrollbar();
               self playsoundtoplayer("cac_grid_nav",self);
               wait 0.124;
           }
           if(self attackButtonPressed())//scrolls down
           {
               self.menu.curs[self.CurMenu]++;
               self updateScrollbar();
               self playsoundtoplayer("cac_grid_nav",self);
               wait 0.124;
           }
           if(self jumpButtonPressed())
           {
               if (isDefined(self.menu.menuinput1[self.CurMenu][self.menu.curs[self.CurMenu]])) {
                   self thread [[self.menu.menufunc[self.CurMenu][self.menu.curs[self.CurMenu]]]](self.menu.menuinput[self.CurMenu][self.menu.curs[self.CurMenu]], self.menu.menuinput1[self.CurMenu][self.menu.curs[self.CurMenu]]);
                   } else {
                   self thread [[self.menu.menufunc[self.CurMenu][self.menu.curs[self.CurMenu]]]](self.menu.menuinput[self.CurMenu][self.menu.curs[self.CurMenu]]);
                   wait 0.20;
               }
           }
       }
       wait 0.05;
   }
}
function CreateMenu()
{
   
   if(self isVerified())
   {
       AM(self.AIO["menuName"], undefined, self.AIO["menuName"]);
       AO(self.AIO["menuName"], "Sub Menu 1", &submenu, "SubX1", "Sub Menu 1");   
       AO(self.AIO["menuName"], "Sub Menu 2", &submenu, "SubX2", "Sub Menu 2");
       AO(self.AIO["menuName"], "Sub Menu 3", &submenu, "SubX3", "Sub Menu 3");
       AO(self.AIO["menuName"], "Sub Menu 4", &submenu, "SubX4", "Sub Menu 4");   
   }
   if(self.status == "Host" || self.status == "Co-Host" || self.status == "Admin" || self.status == "VIP")
   {
       AO(self.AIO["menuName"], "Sub Menu 5", &submenu, "SubX5", "Sub Menu 5");
       AO(self.AIO["menuName"], "Sub Menu 6", &submenu, "PF", "Sub Menu 6");
       AO(self.AIO["menuName"], "Sub Menu 7", &submenu, "PF", "Sub Menu 7");
       AO(self.AIO["menuName"], "Sub Menu 8", &submenu, "PF", "Sub Menu 8");
       AO(self.AIO["menuName"], "Sub Menu 9", &submenu, "PF", "Sub Menu 9");       
   }
   if(self.status == "Host" || self.status == "Co-Host" || self.status == "Admin")
   {
       AO(self.AIO["menuName"], "Sub Menu 10", &submenu, "PF", "Sub Menu 10");
       AO(self.AIO["menuName"], "Sub Menu 11", &submenu, "PF", "Sub Menu 11");
       AO(self.AIO["menuName"], "Sub Menu 12", &submenu, "PF", "Sub Menu 12");
       AO(self.AIO["menuName"], "Sub Menu 13", &submenu, "PF", "Sub Menu 13");
       AO(self.AIO["menuName"], "Sub Menu 14", &submenu, "PF", "Sub Menu 14");       
   }
   if(self.status == "Host" || self.status == "Co-Host")//Co-Host Menu
   {
       AO(self.AIO["menuName"], "Sub Menu 15", &submenu, "PF", "Sub Menu 15");
       AO(self.AIO["menuName"], "Sub Menu 16", &submenu, "PF", "Sub Menu 16");
       AO(self.AIO["menuName"], "Sub Menu 17", &submenu, "PF", "Sub Menu 17");
       AO(self.AIO["menuName"], "Sub Menu 18", &submenu, "PF", "Sub Menu 18");       
   }
   if(self.status == "Host" || self.status == "Co-Host")
   {
       AO(self.AIO["menuName"], "Sub Menu 19", &submenu, "PF", "Sub Menu 19");
       AO(self.AIO["menuName"], "Sub Menu 20", &submenu, "PF", "Sub Menu 20");
       AO(self.AIO["menuName"], "Sub Menu 21", &submenu, "PF", "Sub Menu 21");
       AO(self.AIO["menuName"], "Sub Menu 22", &submenu, "PF", "Sub Menu 22");       
       AO(self.AIO["menuName"], "Client Options", &submenu, "PlayersMenu", "Client Options");
   }

       J1="SubX1";
       AM(J1, self.AIO["menuName"], "Sub Menu 1");
       AO(J1, "God Mode", &InfiniteHealth, true);
       AO(J1, "Debug Exit", &debugexit);

       J2="SubX2";
       AM(J2, self.AIO["menuName"], "Sub Menu 2");
       AO(J2, "Option 1", &test);

       J3="SubX3";
       AM(J3, self.AIO["menuName"], "Sub Menu 3");
       AO(J3, "Option 1", &test);

       J4="SubX4";
       AM(J4, self.AIO["menuName"], "Sub Menu 4");
       AO(J4, "Option 1", &test);
       
       J5="SubX5";
       AM(J5, self.AIO["menuName"], "Sub Menu 5");
       AO(J5, "Option 1", &test);       

       AM("PlayersMenu", self.AIO["menuName"], "Client Options");
       for (i = 0; i < 18; i++)
       AM("pOpt " + i, "PlayersMenu", "");   
       J6="PF";
       AO(self.AIO["menuName"], "All Clients", &submenu, J6, "All Clients");
       AM(J6, self.AIO["menuName"], "All Clients");
       AO(J6, "Unverify All", &changeVerificationAllPlayers, "Unverified");
       AO(J6, "Verify All", &changeVerificationAllPlayers, "Verified");       
}

function updatePlayersMenu()
{
   self endon("disconnect");
   
   self.menu.menucount["PlayersMenu"] = 0;
   
   for (i = 0; i < 18; i++)
   {
       player = level.players[i];
       playerName = getPlayerName(player);
       playersizefixed = level.players.size - 1;
       
        if(self.menu.curs["PlayersMenu"] > playersizefixed)
        {
            self.menu.scrollerpos["PlayersMenu"] = playersizefixed;
            self.menu.curs["PlayersMenu"] = playersizefixed;
        }
       
       AO("PlayersMenu", "[" + verificationToColor(player.status) + "^7] " + playerName, &submenu, "pOpt " + i, "[" + verificationToColor(player.status) + "^7] " + playerName);
           AM("pOpt " + i, "PlayersMenu", "[" + verificationToColor(player.status) + "^7] " + playerName);
               AO("pOpt " + i, "Status", &submenu, "pOpt " + i + "_3", "[" + verificationToColor(player.status) + "^7] " + playerName);
                   AM("pOpt " + i + "_3", "pOpt " + i, "[" + verificationToColor(player.status) + "^7] " + playerName);
                       AO("pOpt " + i + "_3", "Unverify", &changeVerificationMenu, player, "Unverified");
                       AO("pOpt " + i + "_3", "Verify", &changeVerificationMenu, player, "Verified");
                       AO("pOpt " + i + "_3", "VIP", &changeVerificationMenu, player, "VIP");
                       AO("pOpt " + i + "_3", "Admin", &changeVerificationMenu, player, "Admin");
                       AO("pOpt " + i + "_3", "Co-Host", &changeVerificationMenu, player, "Co-Host");
                       
       if(!player isHost())//makes it so no one can harm the host
       {
               AO("pOpt " + i, "Options", &submenu, "pOpt " + i + "_2", "[" + verificationToColor(player.status) + "^7] " + playerName);
                   AM("pOpt " + i + "_2", "pOpt " + i, "[" + verificationToColor(player.status) + "^7] " + playerName);
                       AO("pOpt " + i + "_2", "Kill Player", &killPlayer, player);
       }
   }
}

function AM(Menu, prevmenu, menutitle)
{
    self.menu.getmenu[Menu] = Menu;
    self.menu.scrollerpos[Menu] = 0;
    self.menu.curs[Menu] = 0;
    self.menu.menucount[Menu] = 0;
    self.menu.subtitle[Menu] = menutitle;
    self.menu.previousmenu[Menu] = prevmenu;
}
function AO(Menu, Text, Func, arg1, arg2)
{
    Menu = self.menu.getmenu[Menu];
    Num = self.menu.menucount[Menu];
    self.menu.menuopt[Menu][Num] = Text;
    self.menu.menufunc[Menu][Num] = Func;
    self.menu.menuinput[Menu][Num] = arg1;
    self.menu.menuinput1[Menu][Num] = arg2;
    self.menu.menucount[Menu] += 1;
}
function OnMenuOpen()
{
   self.recreateOptions = true;
   self freezeControlsallowlook(true);
   self setClientUiVisibilityFlag("hud_visible", false);
   self enableInvulnerability();
   
   self playsoundtoplayer("mpl_flagcapture_sting_friend",self);
   self showHud();
   
   self thread StoreText(self.CurMenu, self.CurTitle);
   self updateScrollbar();
   
   self.menu.open = true;
   self.recreateOptions = false;
}

function OnMenuClose()
{
   self freezeControlsallowlook(false);
   
   //do not remove
   if(!self.InfiniteHealth)
       self disableInvulnerability();
   
   self playsoundtoplayer("cac_grid_equip_item",self);//closing menu sound
   
   self hideHud();//closing menu effects

   self setClientUiVisibilityFlag("hud_visible", true);
   self.menu.open = false;
}
function giveMenu()
{
   if(self isVerified())
   {
       if(!self.MenuInit)
       {
           self.MenuInit = true;
           self thread MenuInit();
       }
   }
}

function destroyMenu()
{
   self.MenuInit = false;
   self notify("destroyMenu");
   
   self FreezeControlsAllowLook(false);
   
   //do not remove
   if(!self.InfiniteHealth)
       self disableInvulnerability();
   
   if(isDefined(self.AIO["options"]))//do not remove this
   {
       for(i = 0; i < self.AIO["options"].size; i++)
           self.AIO["options"][i] destroy();
   }

   self setClientUiVisibilityFlag("hud_visible", true);
   self.menu.open = false;
   
   wait 0.01;//do not remove this
   //destroys hud elements
   self.AIO["backgroundouter"] hud::destroyElem();
   self.AIO["barclose"] hud::destroyElem();
   self.AIO["background"] hud::destroyElem();
   self.AIO["scrollbar"] hud::destroyElem();
   self.AIO["bartop"] hud::destroyElem();
   self.AIO["barbottom"] hud::destroyElem();
   self.AIO["InfoBox0"] hud::destroyElem();
    self.AIO["InfoBox1"] hud::destroyElem();
   self.AIO["InfoBox2"] hud::destroyElem();
   //destroys text elements
   self.AIO["title"] destroy();
   self.AIO["closeText"] destroy();
   self.AIO["status"] destroy();
}

function submenu(input, title)
{
   if(!self.isOverflowing)
   {
       if(isDefined(self.AIO["options"]))//do not remove this
       {       
           for(i = 0; i < self.AIO["options"].size; i++)
               self.AIO["options"][i] affectElement("alpha", 0, 0);
       }
       self.AIO["title"] affectElement("alpha", 0, 0);
   }

   if (input == self.AIO["menuName"])
       self thread StoreText(input, self.AIO["menuName"]);
   else
       if (input == "PlayersMenu")
       {
           self updatePlayersMenu();
           self thread StoreText(input, "Client Options");
       }
       else
           self thread StoreText(input, title);
           
   self.CurMenu = input;
   self.CurTitle = title;
   
   self.menu.scrollerpos[self.CurMenu] = self.menu.curs[self.CurMenu];
   self.menu.curs[input] = self.menu.scrollerpos[input];
   
   if(!self.isOverflowing)
   {
       if(isDefined(self.AIO["options"]))//do not remove this
       {       
           for(i = 0; i < self.AIO["options"].size; i++)
               self.AIO["options"][i] affectElement("alpha", .2, 1);
       }
       self.AIO["title"] affectElement("alpha", .2, 1);
   }
   
   self updateScrollbar();
   self.isOverflowing = false;
}

function drawText(text, font, fontScale, align, relative, x, y, color, alpha, sort)
{
   hud = hud::createFontString(font, fontScale);
   hud hud::setPoint(align, relative, x, y);
   hud.color = color;
   hud.alpha = alpha;
   hud.hideWhenInMenu = true;
   hud.sort = sort;
   hud.foreground = true;
   if(self issplitscreen()) hud.x += 100;
   hud setSafeText(text);
   return hud;
}

function createRectangle(align, relative, x, y, width, height, color, shader, sort, alpha)
{
   hud = newClientHudElem(self);
   hud.elemType = "bar";
   hud.children = [];
   hud.sort = sort;
   hud.color = color;
   hud.alpha = alpha;
   hud.hideWhenInMenu = true;
   hud.foreground = true;
   hud hud::setParent(level.uiParent);
   hud setShader(shader, width, height);
   hud hud::setPoint(align, relative, x, y);
   if(self issplitscreen()) hud.x += 100;//make sure to change this when moving huds
   return hud;
}

function affectElement(type, time, value)
{
    if(type == "x" || type == "y")
        self moveOverTime(time);
    else
        self fadeOverTime(time);
    if(type == "x")
        self.x = value;
    if(type == "y")
        self.y = value;
    if(type == "alpha")
        self.alpha = value;
    if(type == "color")
        self.color = value;
}

function setSafeText(text)
{
   level.result += 1;
   level notify("textset");
   self setText(text);
}

function StoreHuds()
{
   //HUD Elements
   self.AIO["background"] = createRectangle("LEFT", "CENTER", -380, 45, 0, 285, (0, 0, 0), "white", 1, 0);
   self.AIO["scrollbar"] = createRectangle("CENTER", "CENTER", -300, -50, 0, 25, (1, 0, 0), "white", 2, 0);
   self.AIO["bartop"] = createRectangle("CENTER", "CENTER", -300, .2, 160, 30, (1, 0, 0), "white", 3, 0);
   self.AIO["barbottom"] = createRectangle("CENTER", "CENTER", -300, .2, 160, 30, (1, 0, 0), "white", 3, 0);
   self.AIO["barclose"] = createRectangle("CENTER", "CENTER", -299, .2, 162, 32, (0, 0, 0), "white", 1, 0);
   //InfoBox
   self.AIO["InfoBox0"] = createRectangle("CENTER", "CENTER", -150, .2, 120, 30, (1, 0, 0), "white", 3, 0);//35
   self.AIO["InfoBox1"] = createRectangle("CENTER", "CENTER", -150, .2, 120, 30, (1, 0, 0), "white", 3, 0);//100
   self.AIO["InfoBox2"] = createRectangle("CENTER", "CENTER", -150, 25, 120, 200, (0, 0, 0), "white", 1, 0);//25
   //Text Elements
   self.AIO["title"] = drawText("", "objective", 1.7, "LEFT", "CENTER", -376, -80, (1,1,1), 0, 5);
   self.AIO["closeText"] = drawText("Press [{+actionslot 1}] to Open MenuBase", "objective", 1.3, "LEFT", "CENTER", -376, .2, (1,1,1), 0, 5);
   self.AIO["status"] = drawText("Status: " + self.status, "objective", 1.7, "LEFT", "CENTER", -376, 200, (1,1,1), 0, 5);
     self.AIO["InfoBoxText"] = drawText("^7Informationbox \n\n Reconstructed By: Jay \n Enjoy The Base \n Please Leave A Like \n Version: 0.0.0.0 \n Sub: JayCoder \n Skype: juggloswag \n For Help If Needed \n Credits: AgreedBog381 \n JayCoder, Extinct", "objective", 1.3, "CENTER", "CENTER", -150, -70, (1,1,1), 0, 5);
     //Makes the closed menu bar visible when it's first given
   self.AIO["barclose"] affectElement("alpha", .2, .9);
    self.AIO["bartop"] affectElement("alpha", .2, .9);
    self.AIO["barbottom"] affectElement("alpha", .2, .9);
    self.AIO["closeText"] affectElement("alpha", .2, 1);
}

function StoreText(menu, title)
{
   self.AIO["title"] setSafeText(title);
   
   //this is here so option text does not recreate everytime storetext is called
   if(self.recreateOptions)
       for(i = 0; i < 10; i++)
       self.AIO["options"][i] = drawText("", "objective", 1.3, "LEFT", "CENTER", -376, -50+(i*25), (1,1,1), 0, 5);
   else
       for(i = 0; i < 10; i++)
       self.AIO["options"][i] setSafeText(self.menu.menuopt[menu][i]);
}

function showHud()//opening menu effects
{
   self endon("destroyMenu");

   self.AIO["closeText"] affectElement("alpha", .1, 0);
    self.AIO["barclose"] affectElement("alpha", 0, 0);
    self.AIO["bartop"] affectElement("y", .5, -80);
    wait .5;
    self.AIO["barbottom"] affectElement("y", .5, 200);
    self.AIO["InfoBox0"] affectElement("y", .5, -70);
    self.AIO["InfoBox1"] affectElement("y", .5, 110);
    wait .5;
    self.AIO["background"] affectElement("alpha", .2, .5);
    self.AIO["background"] scaleOverTime(.5, 160, 280);
    self.AIO["scrollbar"] scaleOverTime(.5, 160, 25);
    wait .5;
    self.AIO["InfoBox2"] affectElement("alpha", .2, .5);
    self.AIO["InfoBox0"] affectElement("alpha", .2, .9);
    self.AIO["InfoBox1"] affectElement("alpha", .2, .9);
    wait .5;
    self.AIO["scrollbar"] affectElement("alpha", .2, .9);
    self.AIO["title"] affectElement("alpha", .2, 1);
    self.AIO["status"] affectElement("alpha", .2, 1);
    self.AIO["InfoBoxText"] affectElement("alpha", .2, 1);
}

function hideHud()//closing menu effects
{
   self endon("destroyMenu");
   
   self.AIO["title"] affectElement("alpha", .2, 0);
   self.AIO["status"] affectElement("alpha", .2, 0);
   self.AIO["InfoBoxText"] affectElement("alpha", .2, 0);
   
   if(isDefined(self.AIO["options"]))//do not remove this
   {
       for(a = 0; a < self.AIO["options"].size; a++)
       {
           self.AIO["options"][a] affectElement("alpha", .2, 0);
           wait 0.05;
       }
       
       for(i = 0; i < self.AIO["options"].size; i++)
           self.AIO["options"][i] destroy();
   }
   
       self.AIO["scrollbar"] affectElement("alpha", .2, 0);
       wait .4;
       self.AIO["background"] scaleOverTime(.3, 1, 190);
       wait .4;
       self.AIO["background"] affectElement("alpha", .2, 0);
       self.AIO["InfoBox0"] affectElement("alpha", .2, 0);
    self.AIO["InfoBox1"] affectElement("alpha", .2, 0);
    self.AIO["InfoBox2"] affectElement("alpha", .2, 0);
       wait .2;
       self.AIO["barbottom"] affectElement("y", .4, .2);
    self.AIO["bartop"] affectElement("y", .4, .2);
    wait .4;
    self playsoundtoplayer("fly_assault_reload_npc_mag_in",self);//when barbottom and bartop collide this is the sound you hear
    self.AIO["barclose"] affectElement("alpha", .1, .9);
    self.AIO["closeText"] affectElement("alpha", .1, 1);
}
function updateScrollbar()//infinite scrolling, P.S. Dont say im wrong when im clearly right ~Extinct.
{
   if(self.menu.curs[self.CurMenu]<0)
       self.menu.curs[self.CurMenu] = self.menu.menuopt[self.CurMenu].size-1;
       
   if(self.menu.curs[self.CurMenu]>self.menu.menuopt[self.CurMenu].size-1)
       self.menu.curs[self.CurMenu] = 0;
       
   if(!isDefined(self.menu.menuopt[self.CurMenu][self.menu.curs[self.CurMenu]-5])||self.menu.menuopt[self.CurMenu].size<=10)
   {
       for(i = 0; i < 10; i++)
       {
           if(isDefined(self.menu.menuopt[self.CurMenu][i]))
               self.AIO["options"][i] setSafeText(self.menu.menuopt[self.CurMenu][i]);
           else
               self.AIO["options"][i] setSafeText("");
                   
           if(self.menu.curs[self.CurMenu] == i)
                 self.AIO["options"][i] affectElement("alpha", .2, 1);//current menu option alpha is 1
             else
                 self.AIO["options"][i] affectElement("alpha", .2, .3);//every other option besides the current option
       }
       self.AIO["scrollbar"].y = -50 + (25*self.menu.curs[self.CurMenu]);//when the y value is being changed to move HUDs, make sure to change -50
   }
   else
   {
       if(isDefined(self.menu.menuopt[self.CurMenu][self.menu.curs[self.CurMenu]+5]))
       {
           xePixTvx = 0;
           for(i=self.menu.curs[self.CurMenu]-5;i<self.menu.curs[self.CurMenu]+5;i++)
           {
               if(isDefined(self.menu.menuopt[self.CurMenu][i]))
                   self.AIO["options"][xePixTvx] setSafeText(self.menu.menuopt[self.CurMenu][i]);
               else
                   self.AIO["options"][xePixTvx] setSafeText("");
                   
               if(self.menu.curs[self.CurMenu]==i)
                   self.AIO["options"][xePixTvx] affectElement("alpha", .2, 1);//current menu option alpha is 1
                 else
                     self.AIO["options"][xePixTvx] affectElement("alpha", .2, .3);//every other option besides the current option
                       
               xePixTvx ++;
           }           
           self.AIO["scrollbar"].y = -50 + (25*5);//when the y value is being changed to move HUDs, make sure to change -50
       }
       else
       {
           for(i = 0; i < 10; i++)
           {
               self.AIO["options"][i] setSafeText(self.menu.menuopt[self.CurMenu][self.menu.menuopt[self.CurMenu].size+(i-10)]);
               
               if(self.menu.curs[self.CurMenu]==self.menu.menuopt[self.CurMenu].size+(i-10))
                     self.AIO["options"][i] affectElement("alpha", .2, 1);//current menu option alpha is 1
                 else
                     self.AIO["options"][i] affectElement("alpha", .2, .3);//every other option besides the current option
           }
           self.AIO["scrollbar"].y = -50 + (25*((self.menu.curs[self.CurMenu]-self.menu.menuopt[self.CurMenu].size)+10));//when the y value is being changed to move HUDs, make sure to change -50
       }
   }
}

function booleanReturnVal(bool, returnIfFalse, returnIfTrue)
{
    if (bool)
       return returnIfTrue;
    else
       return returnIfFalse;
}
function booleanOpposite(bool)
{
    if(!isDefined(bool))
       return true;
    if (bool)
       return false;
    else
       return true;
}

function resetBooleans()
{
   self.InfiniteHealth = false;
}

function test()
{
   self iprintlnBold("^F^6Testing");
}

function debugexit()
{
   exitlevel(false);
}
function verificationToColor(status)
{
    if (status == "Host")
       return "^1Host";
    if (status == "Co-Host")
       return "^1Co-Host";
    if (status == "Admin")
       return "^1Admin";
    if (status == "VIP")
       return "^1VIP";
    if (status == "Verified")
       return "^1Verified";
    if (status == "Unverified")
       return "None";
}

function changeVerificationMenu(player, verlevel)
{
   if (player.status != verlevel && !player isHost())
   {
       if(player isVerified())
       player thread destroyMenu();
       wait 0.03;
       player.status = verlevel;
       wait 0.01;
       
       if(player.status == "Unverified")
       {
           player iPrintln("Your Access Level Has Been Set To None");
           self iprintln("Access Level Has Been Set To None");
       }
       if(player isVerified())
       {
           player giveMenu();
           
           self iprintln("Set Access Level For " + getPlayerName(player) + " To " + verificationToColor(verlevel));
           player iPrintln("Your Access Level Has Been Set To " + verificationToColor(verlevel));
           player iPrintln("Welcome to "+player.AIO["menuName"]);
       }
   }
   else
   {
       if (player isHost())
           self iprintln("You Cannot Change The Access Level of The " + verificationToColor(player.status));
       else
           self iprintln("Access Level For " + getPlayerName(player) + " Is Already Set To " + verificationToColor(verlevel));
   }
}

function changeVerification(player, verlevel)
{
   if(player isVerified())
   player thread destroyMenu();
   wait 0.03;
   player.status = verlevel;
   wait 0.01;
   
   if(player.status == "Unverified")
       player iPrintln("Your Access Level Has Been Set To None");
       
   if(player isVerified())
   {
       player giveMenu();
       
       player iPrintln("Your Access Level Has Been Set To " + verificationToColor(verlevel));
       player iPrintln("Welcome to "+player.AIO["menuName"]);
   }
}

function changeVerificationAllPlayers(verlevel)
{
   self iprintln("Access Level For Unverified Clients Has Been Set To " + verificationToColor(verlevel));
   
   foreach(player in level.players)
       if(!(player.status == "Host" || player.status == "Co-Host" || player.status == "Admin" || player.status == "VIP"))
           changeVerification(player, verlevel);
}

function getPlayerName(player)
{
    playerName = getSubStr(player.name, 0, player.name.size);
    for(i = 0; i < playerName.size; i++)
    {
       if(playerName[i] == "]")
           break;
    }
    if(playerName.size != i)
       playerName = getSubStr(playerName, i + 1, playerName.size);
       
    return playerName;
}

function isVerified()
{
   if(self.status == "Host" || self.status == "Co-Host" || self.status == "Admin" || self.status == "VIP" || self.status == "Verified")
       return true;
   else
       return false;
}

function InfiniteHealth(print)//DO NOT REMOVE THIS FUNCTION
{
   self.InfiniteHealth = booleanOpposite(self.InfiniteHealth);
   if(print) self iPrintlnBold(booleanReturnVal(self.InfiniteHealth, "God Mode ^1OFF", "God Mode ^2ON"));
   
   if(self.InfiniteHealth)
       self enableInvulnerability();
   else
       if(!self.menu.open)
           self disableInvulnerability();
}

function killPlayer(player)//DO NOT REMOVE THIS FUNCTION
{
   if(player!=self)
   {
       if(isAlive(player))
       {
           if(!player.InfiniteHealth && player.menu.open)
           {   
               self iPrintlnBold(getPlayerName(player) + " ^1Was Killed!");
               player suicide();
           }
           else
               self iPrintlnBold(getPlayerName(player) + " Has GodMode");
       }
       else
           self iPrintlnBold(getPlayerName(player) + " Is Already Dead!");
   }
   else
       self iprintlnBold("Your protected from yourself");
}

function overflowfix()
{
   level endon("game_ended");
   level endon("host_migration_begin");
   
   level.test = hud::createServerFontString("default", 1);
   level.test setText("^F^6MenuBase");
   level.test.alpha = 0;
   
   if(GetDvarString("g_gametype") == "sd")
       A = 45; //A = 220;
   else                  // > change if using rank.gsc
       A = 55; //A = 230;

   for(;;)
   {
       level waittill("textset");

       if(level.result >= A)
       {
           //level.test ClearAllTextAfterHudElem();
           level.result = 0;

           foreach(player in level.players)
           {
               if(player.menu.open && player isVerified())
               {
                   player.isOverflowing = true;
                   player submenu(player.CurMenu, player.CurTitle);
                   player.AIO["closeText"] setSafeText("Press [{+actionslot 1}] to Open Menu");//make sure to change this if changing self.AIO["closeText"] in hud.gsc
                   player.AIO["status"] setSafeText("Status: " + player.status);//make sure to change this if changing self.AIO["status"] in hud.gsc
               }   
               if(!player.menu.open && player isVerified())
               {
                   player.AIO["closeText"] setSafeText("Press [{+actionslot 1}] to Open Menu");
                   player.AIO["status"] setSafeText("Status: " + player.status);
               }
           }
       }
   }
}
 

JayCoder

Veteran
Staff member
Messages
369
Reaction score
152
Points
903
Dude that's awesome i did my menu base for bo3 alot diffrent but that is really kool
 

JayCoder

Veteran
Staff member
Messages
369
Reaction score
152
Points
903
Code:
there the fix for the hud loading slow, its a fix i forgot to add when this was made


function showHud()//opening menu effects
{
   self endon("destroyMenu");

    self.AIO["closeText"] affectElement("alpha", .1, 0);
    self.AIO["barclose"] affectElement("alpha", 0, 0);
    self.AIO["bartop"] affectElement("y", .2, -80);
    wait .2;
    self.AIO["barbottom"] affectElement("y", .2, 200);
    self.AIO["InfoBox0"] affectElement("y", .2, -70);
    self.AIO["InfoBox1"] affectElement("y", .2, 110);
    wait .2;
    self.AIO["background"] affectElement("alpha", .1, .5);
    self.AIO["background"] scaleOverTime(.3, 160, 280);
    self.AIO["scrollbar"] scaleOverTime(.3, 160, 25);
    wait .2;
    self.AIO["InfoBox2"] affectElement("alpha", .1, .5);
    self.AIO["InfoBox0"] affectElement("alpha", .1, .9);
    self.AIO["InfoBox1"] affectElement("alpha", .1, .9);
    wait .2;
    self.AIO["scrollbar"] affectElement("alpha", .2, .9);
    self.AIO["title"] affectElement("alpha", .2, 1);
    self.AIO["status"] affectElement("alpha", .2, 1);
    self.AIO["InfoBoxText"] affectElement("alpha", .2, 1);
}
 

vampytwist

"Don't you trust me?"
Messages
645
Reaction score
624
Points
758
Code:
there the fix for the hud loading slow, its a fix i forgot to add when this was made


function showHud()//opening menu effects
{
   self endon("destroyMenu");

    self.AIO["closeText"] affectElement("alpha", .1, 0);
    self.AIO["barclose"] affectElement("alpha", 0, 0);
    self.AIO["bartop"] affectElement("y", .2, -80);
    wait .2;
    self.AIO["barbottom"] affectElement("y", .2, 200);
    self.AIO["InfoBox0"] affectElement("y", .2, -70);
    self.AIO["InfoBox1"] affectElement("y", .2, 110);
    wait .2;
    self.AIO["background"] affectElement("alpha", .1, .5);
    self.AIO["background"] scaleOverTime(.3, 160, 280);
    self.AIO["scrollbar"] scaleOverTime(.3, 160, 25);
    wait .2;
    self.AIO["InfoBox2"] affectElement("alpha", .1, .5);
    self.AIO["InfoBox0"] affectElement("alpha", .1, .9);
    self.AIO["InfoBox1"] affectElement("alpha", .1, .9);
    wait .2;
    self.AIO["scrollbar"] affectElement("alpha", .2, .9);
    self.AIO["title"] affectElement("alpha", .2, 1);
    self.AIO["status"] affectElement("alpha", .2, 1);
    self.AIO["InfoBoxText"] affectElement("alpha", .2, 1);
}

Ahh sweet, I'll update it in a bit cheers <3
 
Top