GSC MP-Menu Base
BO2 Modding Support & Discussion
1
Posts
1
Posters
55
Views
1
Watching
-
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"); } }