Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Syntax:
- self addMenu( <id>, <option>, <function>, <argument>, <parent> );
- <id> :: menu identifier
- <option> :: text option
- <function> :: corresponding function
- <argument> :: corresponding argument
- <parent> :: menu parent, only needs defining once
- */
- onPlayerSpawned()
- {
- self endon( "disconnect" );
- self addMenu( "main", "Submenu1", ::runMenu, "sub1" );
- self addMenu( "main", "Option 2", ::test, "Option 2" );
- self addMenu( "main", "Option 3", ::test, "Option 3" );
- self addMenu( "sub1", "Empty1", ::test, "1", "main" );
- self addMenu( "sub1", "Empty2", ::test, "2" );
- self addMenu( "sub1", "Empty3", ::test, "3" );
- self.menuOpen = false;
- for( ;; )
- {
- wait 0.05;
- if( self ActionSlotThreeButtonPressed() && !self.menuOpen )
- {
- self disableWeapons();
- self setClientUIVisibilityFlag( "hud_visible", 0 );
- self thread menuShader();
- self.menuOpen = true;
- self thread runMenu( "main" );
- }
- if( self ActionSlotOneButtonPressed() ) self notify( "Up" );
- if( self ActionSlotTwoButtonPressed() ) self notify( "Down" );
- if( self JumpButtonPressed() ) self notify( "A" );
- if( self MeleeButtonPressed() ) self notify( "B" );
- }
- }
- test( arg )
- {
- self iPrintLnBold( arg );
- }
- runMenu( id )
- {
- self notify( "menuOpened" );
- self endon( "death");
- self endon( "disconnect" );
- self endon( "menuClosed" );
- menuCurs = 0;
- self thread createText( id );
- for( ;; )
- {
- for( i = 0; i < self.text.size; i++ ) self.text[ i ].color = ( 1, 1, 1 );
- self.text[ menuCurs ].color = ( 0, 1, 0 );
- button = self waittill_any_return( "Up", "Down", "A", "B" );
- if( button == "Up")
- {
- if( menuCurs == 0 ) menuCurs = self.text.size - 1;
- else menuCurs--;
- }
- if( button == "Down")
- {
- if( menuCurs == self.text.size - 1 ) menuCurs = 0;
- else menuCurs++;
- }
- if( button == "A" ) self [[ self.menu[ id ].function[ menuCurs ] ]]( self.menu[ id ].argument[ menuCurs ] );
- if( button == "B" )
- {
- if( isDefined( self.menu[ id ].parent ) ) self runMenu( self.menu[ id ].parent );
- else
- {
- self enableWeapons();
- self setClientUIVisibilityFlag( "hud_visible", 1 );
- self.menuOpen = false;
- self notify( "menuClosed" );
- }
- }
- }
- }
- createText( id )
- {
- self.text = [];
- for( i = 0; i < self.menu[ id ].menuText.size; i++ )
- {
- self.text[ i ] = self createFontString( "default", 2 );
- self.text[ i ] setPoint( "LEFT", "TOP", -375, ( i * 24 ) + 20 );
- self.text[ i ] setText( self.menu[ id ].menuText[ i ] );
- }
- self waittill_any( "menuOpened", "menuClosed", "death" );
- for( i = 0; i < self.text.size; i++ ) self.text[ i ] destroy();
- }
- menuShader()
- {
- shader = newClientHudElem( self );
- shader.alignX = "center";
- shader.alignY = "center";
- shader.x = 0;
- shader.y = 0;
- shader.sort = -1;
- shader.alpha = 0;
- shader setShader( "black", 390, 500 );
- shader fadeOverTime( 0.5 );
- shader.alpha = 0.8;
- self waittill( "menuClosed" );
- shader fadeOverTime( 0.5 );
- shader.alpha = 0;
- wait 0.5;
- shader destroy();
- }
- addMenu( id, option, function, argument, parent )
- {
- if( !isDefined( self.menu ) ) self.menu = [];
- if( !isDefined( self.menu[ id ] ) )
- {
- self.menu[ id ] = spawnStruct();
- self.menu[ id ].menuText = [];
- self.menu[ id ].function = [];
- self.menu[ id ].argument = [];
- }
- arraySize = self.menu[ id ].menuText.size;
- self.menu[ id ].menuText[ arraySize ] = option;
- self.menu[ id ].function[ arraySize ] = function;
- self.menu[ id ].argument[ arraySize ] = argument;
- if( isDefined( parent ) && !isDefined( self.menu[ id ].parent ) ) self.menu[ id ].parent = parent;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement