01-21-2011, 20:50
PHP Code:
// I monitor each button separate because it responds faster!
onPlayerSpawned()
{
self endon( "disconnect" );
self thread monitorButn_A();
self thread monitorDpad_1();
self thread monitorDpad_2();
self thread monitorDpad_3();
for(;;)
{
self waittill( "spawned_player" );
self thread openMenu();
}
}
openMenu()
{
self endon( "death" );
self endon( "disconnect" );
self.menuOpen = 0;
while( self.menuOpen == 0 )
{
self waittill( "Left" );
self runMenu( "Menu Title", "Option 1|Option 2|Option 3|Option 4|Add Option|Add Option" );
}
}
runMenu( title, options )
{
self endon( "death" );
self endon( "exit_menu" );
self endon( "disconnect" );
cursPos = 0;
self.menuOpen = 1;
menuText = strTok( options, "|" );
self DisableWeapons();
self setClientUIVisibilityFlag( "hud_visible", 0 );
titleDisp = self createFontString( "objective", 2.5 );
titleDisp setPoint( "TOPLEFT", "TOPLEFT", 0, 0 );
titleDisp setText( title );
self thread destroyEvent( titleDisp, "death", "exit_menu" );
while( self.menuOpen )
{
string = "";
for( i=0; i<menuText.size; i++ )
{
if( cursPos == i ) string += "^2" + menuText[i] + "\n";
else string += "^7" + menuText[i] + "\n";
}
menuDisp = self createFontString( "default", 2 );
menuDisp setPoint( "TOPLEFT", "TOPLEFT", 0, 60 );
menuDisp setText( string );
self thread destroyEvent( menuDisp, "death", "Up", "Down", "A", "exit_menu" );
button = self waittill_any_return( "Up", "Down", "A", "Left" );
switch( button )
{
case "Up":
cursPos--;
break;
case "Down":
cursPos++;
break;
case "A":
self thread runFunc( menuText[cursPos] );
break;
case "Left":
self setClientUIVisibilityFlag( "hud_visible", 1 );
self enableweapons();
self.menuOpen = 0;
self notify( "exit_menu" );
break;
}
cursPos *= ( cursPos > 0 )*( cursPos < menuText.size );
}
}
runFunc( input )
{
switch( input )
{
case "Option 1":
break;
case "Option 2":
break;
case "Option 3":
break;
case "Option 4":
break;
}
}
destroyEvent( input, e1, e2, e3, e4, e5 )
{
self waittill_any_return( e1, e2, e3, e4, e5 );
input destroy();
}
monitorDpad_1()
{
self endon("disconnect");
for(;;)
{
if(self ActionSlotOneButtonPressed()) self notify("Up");
wait 0.0001;
}
}
monitorDpad_2()
{
self endon("disconnect");
for(;;)
{
if(self ActionSlotTwoButtonPressed()) self notify("Down");
wait 0.0001;
}
}
monitorDpad_3()
{
self endon("disconnect");
for(;;)
{
if(self ActionSlotThreeButtonPressed()) self notify("Left");
wait 0.0001;
}
}
monitorButn_A()
{
self endon("disconnect");
for(;;)
{
if(self JumpButtonPressed()) self notify("A");
wait 0.0001;
}
}
Simple Submenu:
PHP Code:
openMenu()
{
self endon( "death" );
self endon( "disconnect" );
self.menuOpen = 0;
while( self.menuOpen == 0 )
{
self waittill( "Left" );
self changeMenu( 1, "Main Menu", "SubMenu 1|SubMenu 2|SubMenu 3|SubMenu 4" );
}
}
runMenu( title, options )
{
self endon( "death" );
self endon( "exit_menu" );
self endon( "disconnect" );
cursPos = 0;
menuText = strTok( options, "|" );
self DisableWeapons();
self setClientUIVisibilityFlag( "hud_visible", 0 );
titleDisp = self createFontString( "objective", 2.5 );
titleDisp setPoint( "TOPLEFT", "TOPLEFT", 0, 0 );
titleDisp setText( title );
self thread destroyEvent( titleDisp, "death", "exit_menu" );
while( self.menuOpen )
{
string = "";
for( i=0; i<menuText.size; i++ )
{
if( cursPos == i ) string += "^2" + menuText[i] + "\n";
else string += "^7" + menuText[i] + "\n";
}
menuDisp = self createFontString( "default", 2 );
menuDisp setPoint( "TOPLEFT", "TOPLEFT", 0, 60 );
menuDisp setText( string );
self thread destroyEvent( menuDisp, "death", "Up", "Down", "A", "exit_menu" );
button = self waittill_any_return( "Up", "Down", "A", "B", "Left" );
switch( button )
{
case "Up":
cursPos--;
break;
case "Down":
cursPos++;
break;
case "A":
self thread runFunc( menuText[cursPos] );
break;
case "B":
// if the menu isn't the main menu B button will call this menu (the same as your main menu setup):
if( self.menuOpen != 1 ) self changeMenu( 1, "Main Menu", "SubMenu 1|SubMenu 2|SubMenu 3|SubMenu 4" );
else self iPrintlnBold( "Cannot Go Back!" );
break;
case "Left":
self setClientUIVisibilityFlag( "hud_visible", 1 );
self enableweapons();
self.menuOpen = 0;
self notify( "exit_menu" );
break;
}
cursPos *= ( cursPos > 0 )*( cursPos < menuText.size );
}
}
runFunc( input )
{
switch( input )
{
case "SubMenu 1":
self changeMenu( 2, "SubMenu 1", "option 1|option 2|option 3|option 4" );
break;
case "SubMenu 2":
self changeMenu( 3, "SubMenu 2", "option 1|option 2|option 3|option 4" );
break;
case "SubMenu 3":
self changeMenu( 4, "SubMenu 3", "option 1|option 2|option 3|option 4" );
break;
case "SubMenu 4":
self changeMenu( 5, "SubMenu 4", "option 1|option 2|option 3|option 4" );
break;
}
}
changeMenu( menu, title, options )
{
self.menuOpen = 0;
self notify( "exit_menu" );
self.menuOpen = menu;
self runMenu( title, options );
}
You need to convert the Xbox Button names into the PC named ones
Credits:
XG R4PiDzZ - Menu
Zy0n - Menu system idea & return on elems.
Clean - Video