Here Is a Simple MP-Mod Menu Base Made By Me 
It took me a few days to learn some things as this is my first GSC Mod Menu/ Script as a whole but feel free to copy, edit, learn, etc.
I will post improved versions as I continue to learn.
I will also continue to label lines of code with semi-descriptive "//" lines as to help with the code
/*
* BO2 Plutonium Mod Menu with Background, Border & Full Submenu System
* C++ syntax compatible
*/
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_util;
init()
{
level thread onPlayerConnect();
}
onPlayerConnect()
{
for(;;)
{
level waittill("connected", player);
player thread onPlayerSpawned();
}
}
onPlayerSpawned()
{
self endon("disconnect");
for(;;)
{
self waittill("spawned_player");
if(!isDefined(self.menuInit))
{
self.menuInit = true;
self thread initMenu();
}
}
}
initMenu()
{
self endon("disconnect");
self.menuOpen = false;
self.menuCursor = 0;
self.currentMenu = "main"; // Tracks current menu: "main", "aimbot", "lobby", "extra"
// Mod states
self.godMode = false;
self.superSpeed = false;
self.infiniteAmmo = false;
self.aimbot = false;
self.wallhack = false;
self createMenuHUD();
self thread menuControls();
}
createMenuHUD()
{
//MENU BACKGROUND X & Y (BLACK BOX)
menuBG_X = 320;
menuBG_Y = 180;
//MENU BACKGROUND WIDTH AND HEIGHT (BLACK BOX)
menuBGWidth = 200;
menuBGHeight = 800;
//MENU TOP BORDER X & Y (TOP, GREEN BAR)
menuTopBorder_X = 320;
menuTopBorder_Y = 100;
//MENU BOTTOM BORDER X & Y (BOTTOM, GREEN BAR)
menuBottomBorder_X = 320;
menuBottomBorder_Y = 260;
//MENU RIGHT BORDER X & Y (RIGHT, GREEN BOX)
menuRightBorder_X = 430;
menuRightBorder_Y = 179;
//MENU LEFT BORDER X & Y (LEFT, GREEN BOX)
menuLeftBorder_X = 210;
menuLeftBorder_Y = 179;
// BACKGROUND SHADER - Main black box
self.menuBG = newClientHudElem(self);
self.menuBG.elemType = "icon";
self.menuBG.x = menuBG_X; // X position - 0 = center horizontally
self.menuBG.y = menuBG_Y; // Y position - INCREASE to move DOWN, DECREASE to move UP
self.menuBG.width = menuBGWidth; // Background width - CHANGE to make WIDER/NARROWER
self.menuBG.height = menuBGHeight; // Background height - CHANGE to make TALLER/SHORTER
self.menuBG.alignX = "center";
self.menuBG.alignY = "middle";
self.menuBG.color = (0, 0, 0); // RGB: (0,0,0)=black - CHANGE for different color
self.menuBG.alpha = 0;
self.menuBG setShader("white", 220, 160);
self.menuBG.sort = -2;
// BORDER - Top
self.menuBorderTop = newClientHudElem(self);
self.menuBorderTop.elemType = "icon";
self.menuBorderTop.x = menuTopBorder_X;
self.menuBorderTop.y = menuTopBorder_Y; // Top border Y position - same as (menuBG.y - menuBG.height/2)
self.menuBorderTop.width = 220; // Same as background width
self.menuBorderTop.height = 20; // Border thickness - CHANGE for thicker/thinner border
self.menuBorderTop.alignX = "center";
self.menuBorderTop.alignY = "middle";
self.menuBorderTop.color = (0, 1, 0); // RGB: (0,1,0)=green - CHANGE border color
self.menuBorderTop.alpha = 0;
self.menuBorderTop setShader("white", 220, 2);
self.menuBorderTop.sort = -1;
// BORDER - Bottom
self.menuBorderBottom = newClientHudElem(self);
self.menuBorderBottom.elemType = "icon";
self.menuBorderBottom.x = menuBottomBorder_X;
self.menuBorderBottom.y = menuBottomBorder_Y; // Bottom border Y position
self.menuBorderBottom.width = 222;
self.menuBorderBottom.height = 5;
self.menuBorderBottom.alignX = "center";
self.menuBorderBottom.alignY = "middle";
self.menuBorderBottom.color = (0, 1, 0); // Green border
self.menuBorderBottom.alpha = 0;
self.menuBorderBottom setShader("white", 220, 2);
self.menuBorderBottom.sort = -1;
// BORDER - Left
self.menuBorderLeft = newClientHudElem(self);
self.menuBorderLeft.elemType = "icon";
self.menuBorderLeft.x = menuLeftBorder_X; // Left border X position
self.menuBorderLeft.y = menuLeftBorder_Y;
self.menuBorderLeft.width = 5;
self.menuBorderLeft.height = 160;
self.menuBorderLeft.alignX = "center";
self.menuBorderLeft.alignY = "middle";
self.menuBorderLeft.color = (0, 1, 0);
self.menuBorderLeft.alpha = 0;
self.menuBorderLeft setShader("white", 2, 160);
self.menuBorderLeft.sort = -1;
// BORDER - Right
self.menuBorderRight = newClientHudElem(self);
self.menuBorderRight.elemType = "icon";
self.menuBorderRight.x = menuRightBorder_X; // Right border X position
self.menuBorderRight.y = menuRightBorder_Y;
self.menuBorderRight.width = 5;
self.menuBorderRight.height = 180;
self.menuBorderRight.alignX = "center";
self.menuBorderRight.alignY = "middle";
self.menuBorderRight.color = (0, 1, 0);
self.menuBorderRight.alpha = 0;
self.menuBorderRight setShader("white", 2, 160);
self.menuBorderRight.sort = -1;
// MENU TITLE
self.menuTitle = self createFontString("objective", 1.5);
self.menuTitle.x = 0;
self.menuTitle.y = 100; // Title Y position - INCREASE to move DOWN
self.menuTitle.alignX = "center";
self.menuTitle.alignY = "middle";
self.menuTitle.alpha = 0;
self.menuTitle.sort = 1;
self.menuTitle.label = &"MAIN MENU";
// MENU OPTION 1
self.menuText0 = self createFontString("objective", 1.2);
self.menuText0.x = 0;
self.menuText0.y = 140; // Option 1 Y position
self.menuText0.alignX = "center";
self.menuText0.alignY = "middle";
self.menuText0.alpha = 0;
self.menuText0.sort = 1;
// MENU OPTION 2
self.menuText1 = self createFontString("objective", 1.2);
self.menuText1.x = 0;
self.menuText1.y = 160; // Option 2 Y position
self.menuText1.alignX = "center";
self.menuText1.alignY = "middle";
self.menuText1.alpha = 0;
self.menuText1.sort = 1;
// MENU OPTION 3
self.menuText2 = self createFontString("objective", 1.2);
self.menuText2.x = 0;
self.menuText2.y = 180; // Option 3 Y position
self.menuText2.alignX = "center";
self.menuText2.alignY = "middle";
self.menuText2.alpha = 0;
self.menuText2.sort = 1;
// MENU OPTION 4
self.menuText3 = self createFontString("objective", 1.2);
self.menuText3.x = 0;
self.menuText3.y = 200; // Option 4 Y position
self.menuText3.alignX = "center";
self.menuText3.alignY = "middle";
self.menuText3.alpha = 0;
self.menuText3.sort = 1;
}
menuControls()
{
self endon("disconnect");
for(;;)
{
if(!self.menuOpen && self AdsButtonPressed() && self MeleeButtonPressed())
{
self showMenu();
wait 0.3;
}
if(self.menuOpen)
{
// SCROLL UP
if(self ActionSlotOneButtonPressed())
{
self scrollUp();
wait 0.15;
}
// SCROLL DOWN
if(self ActionSlotTwoButtonPressed())
{
self scrollDown();
wait 0.15;
}
// SELECT OPTION
if(self UseButtonPressed())
{
self selectOption();
wait 0.2;
}
// CLOSE MENU or GO BACK
if(self MeleeButtonPressed())
{
if(self.currentMenu == "main")
{
self hideMenu();
}
else
{
self goBack();
}
wait 0.05;
}
}
wait 0.05;
}
}
showMenu()
{
self.menuOpen = true;
self.menuCursor = 0;
self.currentMenu = "main";
// Show background and borders
self.menuBG.alpha = 0.7; // Background transparency - CHANGE for more/less transparent
self.menuBorderTop.alpha = 1;
self.menuBorderBottom.alpha = 1;
self.menuBorderLeft.alpha = 1;
self.menuBorderRight.alpha = 1;
self.menuTitle.alpha = 1;
self updateMenu();
}
hideMenu()
{
self.menuOpen = false;
// Hide all elements
self.menuBG.alpha = 0;
self.menuBorderTop.alpha = 0;
self.menuBorderBottom.alpha = 0;
self.menuBorderLeft.alpha = 0;
self.menuBorderRight.alpha = 0;
self.menuTitle.alpha = 0;
self.menuText0.alpha = 0;
self.menuText1.alpha = 0;
self.menuText2.alpha = 0;
self.menuText3.alpha = 0;
}
updateMenu()
{
self.menuText0.alpha = 1;
self.menuText1.alpha = 1;
self.menuText2.alpha = 1;
self.menuText3.alpha = 1;
// Display different menus based on currentMenu
if(self.currentMenu == "main")
{
// MAIN MENU - 4 options to access submenus
self.menuTitle.label = &"Test Menu v1.0";
if(self.menuCursor == 0)
self.menuText0.label = &"-> Aimbot Menu";
else
self.menuText0.label = &" Aimbot Menu";
if(self.menuCursor == 1)
self.menuText1.label = &"-> Lobby Menu";
else
self.menuText1.label = &" Lobby Menu";
if(self.menuCursor == 2)
self.menuText2.label = &"-> Extra Mods";
else
self.menuText2.label = &" Extra Mods";
if(self.menuCursor == 3)
self.menuText3.label = &"-> Exit Menu";
else
self.menuText3.label = &" Exit Menu";
}
else if(self.currentMenu == "aimbot")
{
// AIMBOT MENU
self.menuTitle.label = &"AIMBOT MENU";
if(self.menuCursor == 0)
self.menuText0.label = &"-> Aimbot";
else
self.menuText0.label = &" Aimbot";
if(self.menuCursor == 1)
self.menuText1.label = &"-> Wallhack";
else
self.menuText1.label = &" Wallhack";
if(self.menuCursor == 2)
self.menuText2.label = &"-> Auto Aim";
else
self.menuText2.label = &" Auto Aim";
if(self.menuCursor == 3)
self.menuText3.label = &"-> Back";
else
self.menuText3.label = &" Back";
}
else if(self.currentMenu == "lobby")
{
// LOBBY MENU
self.menuTitle.label = &"LOBBY MENU";
if(self.menuCursor == 0)
self.menuText0.label = &"-> God Mode";
else
self.menuText0.label = &" God Mode";
if(self.menuCursor == 1)
self.menuText1.label = &"-> Super Speed";
else
self.menuText1.label = &" Super Speed";
if(self.menuCursor == 2)
self.menuText2.label = &"-> Infinite Ammo";
else
self.menuText2.label = &" Infinite Ammo";
if(self.menuCursor == 3)
self.menuText3.label = &"-> Back";
else
self.menuText3.label = &" Back";
}
else if(self.currentMenu == "extra")
{
// EXTRA MODS MENU
self.menuTitle.label = &"EXTRA MODS";
if(self.menuCursor == 0)
self.menuText0.label = &"-> Unlimited Sprint";
else
self.menuText0.label = &" Unlimited Sprint";
if(self.menuCursor == 1)
self.menuText1.label = &"-> No Recoil";
else
self.menuText1.label = &" No Recoil";
if(self.menuCursor == 2)
self.menuText2.label = &"-> Third Person";
else
self.menuText2.label = &" Third Person";
if(self.menuCursor == 3)
self.menuText3.label = &"-> Back";
else
self.menuText3.label = &" Back";
}
}
scrollUp()
{
self.menuCursor--;
if(self.menuCursor < 0)
{
self.menuCursor = 1; // We have 4 options (0, 1, 2, 3)
}
self updateMenu();
}
scrollDown()
{
self.menuCursor++;
if(self.menuCursor > 3) // 4 options total
{
self.menuCursor = 1;
}
self updateMenu();
}
selectOption()
{
if(self.currentMenu == "main")
{
// MAIN MENU SELECTIONS
if(self.menuCursor == 0)
{
// Open Aimbot Menu
self.currentMenu = "aimbot";
self.menuCursor = 1;
self updateMenu();
}
else if(self.menuCursor == 1)
{
// Open Lobby Menu
self.currentMenu = "lobby";
self.menuCursor = 0;
self updateMenu();
}
else if(self.menuCursor == 2)
{
// Open Extra Mods
self.currentMenu = "extra";
self.menuCursor = 0;
self updateMenu();
}
else if(self.menuCursor == 3)
{
self hideMenu(); // Exit
}
}
else if(self.currentMenu == "aimbot")
{
// AIMBOT MENU SELECTIONS
if(self.menuCursor == 0)
{
self toggleAimbot();
}
else if(self.menuCursor == 1)
{
self toggleWallhack();
}
else if(self.menuCursor == 2)
{
self toggleAutoAim();
self iprintln("^6Auto ^4Aim ^7Toggled"); // Placeholder
}
else if(self.menuCursor == 3)
{
self goBack();
}
}
else if(self.currentMenu == "lobby")
{
// LOBBY MENU SELECTIONS
if(self.menuCursor == 0)
{
self toggleGodMode();
}
else if(self.menuCursor == 1)
{
self toggleSuperSpeed();
}
else if(self.menuCursor == 2)
{
self toggleInfiniteAmmo();
}
else if(self.menuCursor == 3)
{
self goBack();
}
}
else if(self.currentMenu == "extra")
{
// EXTRA MODS SELECTIONS
if(self.menuCursor == 0)
{
self iprintln("Unlimited Sprint activated"); // Placeholder
}
else if(self.menuCursor == 1)
{
self iprintln("No Recoil activated"); // Placeholder
}
else if(self.menuCursor == 2)
{
self iprintln("Third Person activated"); // Placeholder
}
else if(self.menuCursor == 3)
{
self goBack();
}
}
}
goBack()
{
// Return to main menu
self.currentMenu = "main";
self.menuCursor = 1;
self updateMenu();
}
// ========== MOD FUNCTIONS ==========
toggleGodMode()
{
if(self.godMode)
{
self.godMode = false;
self disableInvulnerability();
self iprintlnbold("^5God ^6Mode ^4OFF");
}
else
{
self.godMode = true;
self enableInvulnerability();
self iprintln("^6God ^5Mode ^4ON");
}
}
toggleSuperSpeed()
{
if(self.superSpeed)
{
self.superSpeed = false;
self setMoveSpeedScale(1.0);
self iprintln("Super Speed OFF");
}
else
{
self.superSpeed = true;
self setMoveSpeedScale(2.0);
self iprintln("Super Speed ON");
}
}
toggleInfiniteAmmo()
{
if(self.infiniteAmmo)
{
self.infiniteAmmo = false;
self notify("stop_infinite_ammo");
self iprintln("Infinite Ammo OFF");
}
else
{
self.infiniteAmmo = true;
self thread giveInfiniteAmmo();
self iprintln("Infinite Ammo ON");
}
}
giveInfiniteAmmo()
{
self endon("disconnect");
self endon("death");
self endon("stop_infinite_ammo");
for(;;)
{
weapon = self getCurrentWeapon();
if(weapon != "none")
{
self setWeaponAmmoClip(weapon, 999);
self setWeaponAmmoStock(weapon, 999);
}
wait 0.05;
}
}
toggleAimbot()
{
self endon("death");
self endon("disconnect");
if(self.aimbot)
{
self.aimbot = false;
self iprintlnbold("^6Aimbot ^4OFF");
}
else
{
self.aimbot = true;
self thread Aimbot();
self iprintlnbold("^6Aimbot ^5ON ^4Bitch ^6Boy");
}
}
Aimbot()
{
self endon( "disconnect" );
self endon( "death" );
for(;;)
{
aimAt = undefined;
foreach(player in level.players)
{
if((player == self) || (!isAlive(player)) || (level.teamBased && self.pers["team"] == player.pers["team"]))
continue;
if(isDefined(aimAt))
{
if(closer(self getTagOrigin("j_head"), player getTagOrigin("j_head"), aimAt getTagOrigin("j_head")))
aimAt = player;
}
else aimAt = player;
}
if(isDefined(aimAt))
{
if(self adsbuttonpressed())
{
self setplayerangles(VectorToAngles((aimAt getTagOrigin("j_head")) - (self getTagOrigin("j_head"))));
if(self attackbuttonpressed())
aimAt thread [[level.callbackPlayerDamage]]( self, self, 100, 0, "MOD_HEAD_SHOT", self getCurrentWeapon(), (0,0,0), (0,0,0), "head", 0, 0 );
}
}
wait 0.1;
}
}
toggleWallhack()
{
if(self.wallhack)
{
self.wallhack = false;
self iprintlnbold("Wallhack OFF");
// Add wallhack disable code here
}
else
{
self.wallhack = true;
self iprintlnbold("Wallhack ON");
// Add wallhack enable code here
}
}
toggleAutoAim()
{
if (self.autoaim)
{
self.autoaim = true;
self iprintlnbold("^6White ^2Boy^5.^7.^4.^3. ^6Why^5?");
}
else
{
self.autoaim = false;
self iprintlnbold("^5Good ^7Boy");
}
}