Post: [RELEASE] DConnors MW2 Menu Base Converted To W@W By IVI40A3Fusionz
02-01-2012, 01:50 PM #1
IVI40A3Fusionz
Former Gaming Squad Member
(adsbygoogle = window.adsbygoogle || []).push({}); So the probably the most 'famous' or used MW2 menu base ever has just been converted by me (IVI40A3Fusionz), i didn't see this anywhere else on this site so i decided to do it. Took about under 5 minutes to convert it it was as simple as swapping the buttons around.

Video:


Code:
    
menu()
{
self endon( "disconnect" );
self endon( "death" );
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getMenu;
self thread MonitorButtons();
self thread listenUpside Down Happy:iniMenu, "Pressed_L2" );
}
MonitorButtons()
{
self endon("disconnect");
for(;Winky Winky
{
if(self UseButtonPressed())
{
self notify("Pressed_Square");
wait .1;
}
if(self AttackButtonPressed())
{
self notify("Pressed_R1");
wait .1;
}
if(self AdsButtonPressed())
{
self notify("Pressed_L1");
wait .1;
}
if(self SecondaryOffhandButtonPressed())
{
self notify("Pressed_L2");
wait .3;
}
if(self FragButtonPressed())
{
self notify("Pressed_R2");
wait .3;
}
if(self MeleeButtonPressed())
{
self notify("Pressed_Melee");
wait .2;
}
wait .05;
}
}
iniMenu()
{
if( self.MenuIsOpen == false )
{
_openMenu();
self thread drawMenu( self.cycle, self.scroll);
self thread listenMenuEvent( ::cycleRight, "Pressed_R2" );
self thread listenMenuEvent( ::cycleLeft, "Pressed_L2" );
self thread listenMenuEvent( ::scrollUp, "Pressed_L1" );
self thread listenMenuEvent( ::scrollDown, "Pressed_R1" );
self thread listenMenuEvent( ::select, "Pressed_Square" );
self thread runOnEvent( ::exitMenu, "Pressed_Melee" );
level thread listenMenuEvent( ::updateMenu, "connected" );
}
}
select()
{
menu = [[self.getMenu]]();
self thread [[ menu[self.cycle].function[self.scroll] ]]( menu[self.cycle].input[self.scroll] );
}
cycleRight()
{
self.cycle++;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll);
}
cycleLeft()
{
self.cycle--;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll);
}
scrollUp()
{
self.scroll--;
checkScroll();
drawMenu( self.cycle, self.scroll);
}
scrollDown()
{
self.scroll++;
checkScroll();
drawMenu( self.cycle, self.scroll);
}
exitMenu()
{
self.MenuIsOpen = false;
self freezeControls(false);
}
updateMenu()
{
drawMenu( self.cycle, self.scroll );
}
_openMenu()
{
self.MenuIsOpen = true;
self freezeControls(true);
menu = [[self.getMenu]]();
self.numMenus = menu.size;
self.menuSize = [];
for(i = 0;i < self.numMenus;i++) self.menuSize[i] = menu[i].name.size;
}
checkCycle()
{
if(self.cycle > self.numMenus - 1)
{
self.cycle = self.cycle - self.numMenus;
}
else if(self.cycle < 0)
{
self.cycle = self.cycle + self.numMenus;
}
}
checkScroll()
{
if(self.scroll < 1)
{
self.scroll = 1;
}
else if(self.scroll > self.menuSize[self.cycle] - 1)
{
self.scroll = self.menuSize[self.cycle] - 1;
}
}
drawMenu( cycle, scroll )
{
menu = [[self.getMenu]]();
display = [];
if( menu.size > 2 )
{
leftTitle = self createFontString( "objective", 2.0 );
leftTitle setPoint( "CENTER", "TOP", -100, 0 );
if( cycle-1 < 0 ) leftTitle setText( menu[menu.size - 1].name[0] );
else leftTitle setText( menu[cycle - 1].name[0] );
self thread destroyOnAny( leftTitle, "Pressed_R2", "Pressed_L2", "Pressed_L1", "Pressed_R1", "Pressed_Melee", "death" );
level thread destroyOn( leftTitle, "connected" );
rightTitle = self createFontString( "objective", 2.0 );
rightTitle setPoint( "CENTER", "TOP", 100, 0 );
if( cycle > menu.size - 2 ) rightTitle setText( menu[0].name[0] );
else rightTitle setText( menu[cycle + 1].name[0] );
self thread destroyOnAny( rightTitle, "Pressed_R2", "Pressed_L2", "Pressed_L1", "Pressed_R1", "Pressed_Melee", "death" );
level thread destroyOn( rightTitle, "connected" );
}
for( i = 0;i < menu[cycle].name.size;i++ )
{
if(i < 1) display[i] = self createFontString( "objective", 2.0 );
else display[i] = self createFontString( "objective", 1.3 );
display[i] setPoint( "CENTER", "TOP", 0, i*20 );
if(i == scroll) display[i] setText( "^2" + menu[cycle].name[i] );
else display[i] setText( menu[cycle].name[i] );
self thread destroyOnAny( display[i], "Pressed_R2", "Pressed_L2", "Pressed_L1", "Pressed_R1", "Pressed_Melee", "death" );
level thread destroyOn( display[i], "connected" );
}
}
listen( function, event )
{
self endon ( "disconnect" );
self endon ( "death" );
for(;Winky Winky
{
self waittill( event );
self thread [[function]]();
}
}
listenMenuEvent( function, event )
{
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "Pressed_Melee" );
for(;Winky Winky
{
self waittill( event );
self thread [[function]]();
}
}
runOnEvent( function, event )
{
self endon ( "disconnect" );
self endon ( "death" );
self waittill( event );
self thread [[function]]();
}
destroyOn( element, event )
{
self waittill( event );
element destroy();
}
destroyOnAny( element, event1, event2, event3, event4, event5, event6, event7, event8 )
{
self waittill_any( event1, event2, event3, event4, event5, event6, event7, event8 );
element destroy();
}
openSubMenu()
{
self notify( "Pressed_Melee" );
wait .01;
oldMenu = [[self.getMenu]]();
self.input = oldMenu[self.cycle].input[self.scroll];
self.oldCycle = self.cycle;
self.oldScroll = self.scroll;
self.cycle = 0;
self.scroll = 1;
self.getMenu = ::getSubMenu_Menu;
_openMenu();
self thread drawMenu( self.cycle, self.scroll );
self thread listenMenuEvent( ::cycleRight, "Pressed_R2" );
self thread listenMenuEvent( ::cycleLeft, "Pressed_L2" );
self thread listenMenuEvent( ::scrollUp, "Pressed_L1" );
self thread listenMenuEvent( ::scrollDown, "Pressed_R1" );
self thread listenMenuEvent( ::select, "Pressed_Square" );
self thread runOnEvent( ::exitSubMenu, "Pressed_Melee" );
}
exitSubMenu()
{
self.getMenu = ::getMenu;
self.cycle = self.oldCycle;
self.scroll = self.oldScroll;
self.menuIsOpen = false;
wait .01;
self notify( "Pressed_R1" );
}
getSubMenu_Menu()
{
menu = [];
menu[0] = getSubMenu_SubMenu1();
return menu;
}
getSubMenu_SubMenu1()
{
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];

menu.name[0] = "SubMenu Options";
menu.name[1] = "2nd level menu option";
menu.name[2] = "2nd level menu option";
menu.name[3] = "2nd level menu option";
menu.name[4] = "2nd level menu option";
menu.name[5] = "2nd level menu option";

//menu.function[1] = ;
//menu.function[2] = ;
//menu.function[3] = ;
//menu.function[4] = ;
//menu.function[5] = ;

menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";

return menu;
}

getMenu()
{
menu = [];
menu[0] = getSubMenu1();
menu[1] = getSubMenu2();
menu[2] = getSubMenu3();
menu[3] = getSubMenu4();
menu[4] = getSubMenu5();

if(self GetEntityNumber() == 0)
{
menu[menu.size] = getPlayerMenu();
menu[menu.size] = getAdminMenu();
}
return menu;
}

getPlayerMenu()
{
players = spawnStruct();
players.name = [];
players.function = [];
players.input = [];

players.name[0] = "Players";
for( i = 0; i < level.players.size; i++ )
{
players.name[i+1] = level.players[i].name;
players.function[i+1] = :: openSubMenu;
players.input[i+1] = level.players[i];
}
return players;
}

getAdminMenu()
{
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];

menu.name[0] = "Admin";
menu.name[1] = "admin option";
menu.name[2] = "admin option";
menu.name[3] = "admin option";
menu.name[4] = "admin option";
menu.name[5] = "admin option";

//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;

menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";

return menu;
}

getSubMenu1()
{
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];

menu.name[0] = "Title 1";
menu.name[1] = "option";
menu.name[2] = "option";
menu.name[3] = "option";
menu.name[4] = "option";
menu.name[5] = "option";

//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;

menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";

return menu;
}

getSubMenu2()
{
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];

menu.name[0] = "Title 2";
menu.name[1] = "option";
menu.name[2] = "option";
menu.name[3] = "option";
menu.name[4] = "option";
menu.name[5] = "option";

//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;

menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";

return menu;
}


getSubMenu3()
{
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];

menu.name[0] = "Title 3";
menu.name[1] = "option";
menu.name[2] = "option";
menu.name[3] = "option";
menu.name[4] = "option";
menu.name[5] = "option";

//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;

menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";

return menu;
}


getSubMenu4()
{
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];

menu.name[0] = "Title 4";
menu.name[1] = "option";
menu.name[2] = "option";
menu.name[3] = "option";
menu.name[4] = "option";
menu.name[5] = "option";

//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;

menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";

return menu;
}

getSubMenu5()
{
menu = spawnStruct();
menu.name = [];
menu.function = [];
menu.input = [];

menu.name[0] = "Title 5";
menu.name[1] = "option";
menu.name[2] = "option";
menu.name[3] = "option";
menu.name[4] = "option";
menu.name[5] = "option";

//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;

menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";

return menu;
}


Put This On onplayerspawned:
    
self thread menu();
self thread maps\mp\gametypes\_hud_message::hintMessage( "Press [{+smoke}] for Menu" );


Credits:
    
* DConnor - For the original menu base.
* Me - For converting it.


Known bugs/problems:
* If you try and exit the player options menu it will just take you to a screen with no text (as demonstrated in the video), so just press melee again, this can easily be fixed.

*The text is a little high so for PC users just lower the text for console users it should be fine (as seen in the video).
(adsbygoogle = window.adsbygoogle || []).push({});

The following 3 users say thank you to IVI40A3Fusionz for this useful post:

Correy, Jacob-And-Britt, xRaW
02-01-2012, 02:15 PM #2
pcfreak30
>> PCFreak30.com Happy<<
Yawn thanks for the attempt. personally there are better systems that don't require a full GSC just for a handful of menus... Try mine on ffviewer.com via templates Smile

The following user thanked pcfreak30 for this useful post:

Cien

The following 3 users groaned at pcfreak30 for this awful post:

Blackstorm, Docko412, Cmd-X
02-01-2012, 02:20 PM #3
IVI40A3Fusionz
Former Gaming Squad Member
Originally posted by pcfreak30 View Post
Yawn thanks for the attempt. personally there are better systems that don't require a full GSC just for a handful of menus... Try mine on ffviewer.com via templates Smile


Sorry if my coding knowledge isn't up to your standards just yet. But i don't code for myself but for other people to use the scripts i produce so they can build on them Smile.

EDIT: I weren't trying to flame at you btw ^^.
02-01-2012, 02:26 PM #4
pcfreak30
>> PCFreak30.com Happy<<
Originally posted by IVI40A3Fusionz View Post
Sorry if my coding knowledge isn't up to your standards just yet. But i don't code for myself but for other people to use the scripts i produce so they can build on them Smile.

EDIT: I weren't trying to flame at you btw ^^.


My coding standards.. LOL. I am just saying DCONNOR may be known but his system is very complicated to do. As for me I code for myself then for others...
02-01-2012, 02:36 PM #5
IVI40A3Fusionz
Former Gaming Squad Member
Originally posted by pcfreak30 View Post
My coding standards.. LOL. I am just saying DCONNOR may be known but his system is very complicated to do. As for me I code for myself then for others...


If it was so complicated to use and edit his bases why would people use it? Even newer coders used it for MW2 as their first menu base. His menu base is very easy to understand imo.
02-01-2012, 02:58 PM #6
pcfreak30
>> PCFreak30.com Happy<<
Originally posted by IVI40A3Fusionz View Post
If it was so complicated to use and edit his bases why would people use it? Even newer coders used it for MW2 as their first menu base. His menu base is very easy to understand imo.


It is complicated in its design. People only understand because he gave extensive examples. But there is no reason to design a system that takes huge functions that just return structs...

The following user groaned pcfreak30 for this awful post:

Blackstorm
02-01-2012, 03:00 PM #7
IVI40A3Fusionz
Former Gaming Squad Member
Originally posted by pcfreak30 View Post
It is complicated in its design. People only understand because he gave extensive examples. But there is no reason to design a system that takes huge functions that just return structs...


I understood it by looking at the coding but i kinda see where your coming from.
02-01-2012, 05:23 PM #8
Originally posted by pcfreak30 View Post
My coding standards.. LOL. I am just saying DCONNOR may be known but his system is very complicated to do. As for me I code for myself then for others...


oh god its pcfreak from skype LOL!

The following user thanked IMmartins11 for this useful post:

Taylor
02-01-2012, 05:28 PM #9
oG-Modder
Do a barrel roll!
Man Nice Works Keep It Up
02-01-2012, 06:09 PM #10
bloodthugga
Bounty hunter
nice can u put the patch menu download g ?

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo