Tutorial Menu Feeder (List thing)
#1
THIS IS ONLY FOR PEOPLE WHO UNDERSTAND MENUFILES AND KNOW HOW TO USE THEM.

I'm making this tutorial because this thing is really usefull and pretty gud looking

In the end it will look like this (little different maybe):
[Image: 4e9ed7a07eb34-feederlist.png]
The scrollbar is now next to the buttons instead of behind them

Here is the itemDef for in a menu
Code:
itemDef { name dynamic_menu_feeder type ITEM_TYPE_LISTBOX feeder FEEDER_DYNAMIC_MENU // you need this feeder otherwise it wont work origin 0 0 elementwidth (CHOICE_SIZE_X+10) elementheight CHOICE_SIZE_Y elementtype LISTBOX_TEXT textstyle CHOICE_TEXTSTYLE textfont CHOICE_TEXTFONT textscale CHOICE_TEXTSIZE textalignx CHOICE_TEXT_OFFSET_X forecolor CHOICE_TEXTCOLOR focusColor CHOICE_TEXTCOLOR disableColor COLOR_DISABLED selectBorder 0.8 0.95 1 0 modal noBlinkingHighlight visible 1 backgroundItemListbox "white" rect CHOICE_X_START CHOICE_Y_START CHOICE_SIZE_X 300 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN menuItemsDef { maxRows 50 menuColDef // Background { type MENU_ITEM_TYPE_IMAGE rect 0 1 (CHOICE_SIZE_X-18) CHOICE_SIZE_Y ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE maxChars 50 } menuColDef // Highlight { type MENU_ITEM_TYPE_IMAGE_ON_HOVER rect 0 1 (CHOICE_SIZE_X-18) CHOICE_SIZE_Y ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE maxChars 50 } menuColDef // Select { type MENU_ITEM_TYPE_IMAGE_ON_HOVER rect 1 1 (CHOICE_SIZE_Y-1) (CHOICE_SIZE_Y) ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE maxChars 50 } menuColDef // Text { type MENU_ITEM_TYPE_LOC_TEXT rect 0 0 CHOICE_SIZE_X CHOICE_SIZE_Y ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE maxChars 50 } } // Define events here /* onEvent EVENTNAME { close self; open blablabla; play whatever_sound_you_want; // etc } */ // example event onEvent Map_Array { scriptMenuResponse "vote_array"; setLocalVarString map "array"; close self; } // these events are nessesary onEvent Clear { execNow clearFeeder; } onEvent Populate { // in here you define the buttons // This is a default button // AddToFeeder EVENTNAME LOCALIZED_STRING_NAME; AddToFeeder Map_Array MPUI_ARRAY; // This is an extended button which makes the currently selected one gray instead of white // AddToFeederExtended EVENTMANE noop (CONDITION_UNDER_WHICH_THE_TEXT_IS_GRAY) LOCALIZED_STRING_NAME AddToFeederExtended Map_Array noop (localVarString( map ) == "array") MPUI_ARRAY; } onFocus { play CHOICE_FOCUS_SOUND; } onListboxSelectionChange { play CHOICE_FOCUS_SOUND; } doubleClick { play CHOICE_FOCUS_SOUND; execNow raiseFeederEvent; } }

You can add as much "AddToFeeder" / "AddToFeederExtended" 's as you want, same goes for the events.

Go to your menuDef and in "onOpen{}" you place the following:
Code:
execNow raiseFeederEvent Populate;
this will add the buttons when the menu is opened, you also have to destroy them when you close the menu so @ onClose{} we place this:
Code:
execNow raiseFeederEvent Clear;

Thats basicly it, here is an example with a mapvote menu I made .. its unfinished but i'll attach the whole thing incase someone wants to finish it.

Code:
#include "ui/menudef.h" #include "ui_mp/common_macro.inc" #include "ui_mp/menustyle.inc" #include "ui/choices_setup_common.menu" #include "ui/framestyle.inc" #include "ui/frame.inc" #include "ui_mp/item_listbox.inc" //#define ALLOW_MAP_VOTE( mapName ) ((GetCurrentMapName() != mapName) && dvarBool( mapName )) #define ALLOW_MAP_VOTE( mapName ) dvarBool( mapName ) > 0 #undef CHOICE_GROUP #define CHOICE_GROUP "mapvote" #undef DEFAULT_SLIDE_IN_SPEED #define DEFAULT_SLIDE_IN_SPEED 360 #undef DEFAULT_SLIDE_OUT_SPEED #define DEFAULT_SLIDE_OUT_SPEED 360 #undef CHOICE_TEXTSIZE #define CHOICE_TEXTSIZE TEXTSIZE_SMALL #undef CHOICE_TEXTFONT #define CHOICE_TEXTFONT UI_FONT_NORMAL #undef CHOICE_TEXTSTYLE #define CHOICE_TEXTSTYLE ITEM_TEXTSTYLE_NORMAL #define COLOR_GOUD (240/255) (196/255) (65/255) 1 #define COLOR_SILVER (173/255) (171/255) (163/255) 1 #define COLOR_BRONS (156/255) (96/255) (36/255) 1 #undef CHOICE_SIZE_Y #define CHOICE_SIZE_Y 19 #undef CHOICE_X_START #define CHOICE_X_START (FRAME_CHOICE_X_START-1) #undef CHOICE_Y_START #define CHOICE_Y_START (FRAME_CHOICE_Y_START-4) #define MAP_SELECT_DISPLAY( mapName, mapImage, visArg ) \ PREPROC_TEXT_DRAW_ALL( 20 (FRAME_CHOICE_Y_START-5) 224 30 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, mapName, TEXTSIZE_TITLE, \ 0, 0, ITEM_ALIGN_TOP_LEFT, 1 1 1 1, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, visArg, ; ) \ itemDef \ { \ style WINDOW_STYLE_SHADER_STREAMED \ type ITEM_TYPE_IMAGE \ rect 20 ((FRAME_CHOICE_Y_START-5) + 35) 224 151 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \ forecolor 1 1 1 1 \ exp material( mapImage ) \ visible visArg == true \ decoration \ } #define MAP_TOP_THREE \ PREPROC_TEXT_DRAW_ALL( 23 (FRAME_CHOICE_Y_START+226) 224 90 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, ( "1. " + dvarString( mv_first ) ), FONTSCALE_SUBBIG, 0, 0, ITEM_ALIGN_TOP_LEFT, COLOR_GOUD, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, 1, ; ) \ PREPROC_TEXT_DRAW_ALL( 23 (FRAME_CHOICE_Y_START+246) 224 90 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, ( "2. " + dvarString( mv_second ) ), FONTSCALE_SUBBIG, 0, 0, ITEM_ALIGN_TOP_LEFT, COLOR_SILVER, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, 1, ; ) \ PREPROC_TEXT_DRAW_ALL( 23 (FRAME_CHOICE_Y_START+266) 224 90 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER, 0 0, ( "3. " + dvarString( mv_third ) ), FONTSCALE_SUBBIG, 0, 0, ITEM_ALIGN_TOP_LEFT, COLOR_BRONS, UI_FONT_EXTRABIG, ITEM_TEXTSTYLE_NORMAL, 1, ; ) #define NEW_BOTTOM_BUTTON( textArg, visArg ) \ itemDef \ { \ type ITEM_TYPE_BUTTON \ rect -10 206 0 0 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER \ origin 0 0 \ exp text ( textArg ) \ textfont UI_FONT_NORMAL \ textscale TEXTSIZE_DEFAULT \ textalign ITEM_ALIGN_CENTER \ visible visArg \ mouseEnter { play CHOICE_FOCUS_SOUND; } \ action { play CHOICE_FOCUS_SOUND; scriptMenuResponse "vote_map"; } \ decoration \ } #undef ON_CLOSE #define ON_CLOSE \ execNow raiseFeederEvent Clear; \ play uin_navigation_menu_lg_close; #undef ON_OPEN #define ON_OPEN \ play uin_navigation_menu_lg_open; \ execNow raiseFeederEvent Populate; \ execNow set mv_first "Nuketown"; \ execNow set mv_second "Firing Range";\ execNow set mv_third "Grid"; menuDef { name mapvote rect 0 0 640 480 HORIZONTAL_ALIGN_FULLSCREEN VERTICAL_ALIGN_FULLSCREEN focuscolor COLOR_FOCUSED style WINDOW_STYLE_FILLED openSlideSpeed DEFAULT_SLIDE_IN_SPEED closeSlideSpeed DEFAULT_SLIDE_OUT_SPEED openSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM closeSlideDirection MENU_SLIDE_DIRECTION_TOP_TO_BOTTOM onOpen { ON_OPEN } onClose { ON_CLOSE } onESC { close self; } FRAME_DEFAULT FRAME_TITLE_DEFAULT( "MAP VOTING", 1 ) FRAME_SUBTITLE_DEFAULT( "Vote for the map you would like to play next!", 1 ) MAP_SELECT_DISPLAY( "@MPUI_" + dvarString( ui_chosen_map ) + "_CAPS", "menu_mp_" + dvarString( ui_chosen_map ) + "_map_select_final", when( toUpper( dvarString( ui_chosen_map ) ) != "RANDOM" ); ) MAP_SELECT_DISPLAY( "@MPUI_RANDOM_CAPS", "menu_mp_random_map_select_big", when( toUpper( dvarString( ui_chosen_map ) ) == "RANDOM" ); ) NEW_BOTTOM_BUTTON( "MPUI_VOTE", 1 ) //////////////////////////////////////////////////////////// // MOST VOTED BOX ///////////////////////////////////////// itemDef { type ITEM_TYPE_TEXT rect 20 (FRAME_CHOICE_Y_START+218) 224 90 HORIZONTAL_ALIGN_CENTER VERTICAL_ALIGN_CENTER forecolor 1 1 1 0.8 text "MOST VOTED MAPS" textfont UI_FONT_EXTRABIG textscale FONTSCALE_BIG textstyle ITEM_TEXTSTYLE_NORMAL textalign ITEM_ALIGN_LEFT visible 1 decoration } MAP_TOP_THREE // ///////////////////////////////////////////////////////// // MAP SELECTION BOX ////////////////////////////////////// itemDef { name dynamic_menu_feeder type ITEM_TYPE_LISTBOX feeder FEEDER_DYNAMIC_MENU origin 0 0 elementwidth (CHOICE_SIZE_X+10) elementheight CHOICE_SIZE_Y elementtype LISTBOX_TEXT textstyle CHOICE_TEXTSTYLE textfont CHOICE_TEXTFONT textscale CHOICE_TEXTSIZE textalignx CHOICE_TEXT_OFFSET_X forecolor CHOICE_TEXTCOLOR focusColor CHOICE_TEXTCOLOR disableColor COLOR_DISABLED selectBorder 0.8 0.95 1 0 modal noBlinkingHighlight visible 1 backgroundItemListbox "white" rect CHOICE_X_START CHOICE_Y_START CHOICE_SIZE_X 300 CHOICE_HORIZONTAL_ALIGN CHOICE_VERTICAL_ALIGN menuItemsDef { maxRows 50 menuColDef // Background { type MENU_ITEM_TYPE_IMAGE rect 0 1 (CHOICE_SIZE_X-18) CHOICE_SIZE_Y ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE maxChars 50 } menuColDef // Highlight { type MENU_ITEM_TYPE_IMAGE_ON_HOVER rect 0 1 (CHOICE_SIZE_X-18) CHOICE_SIZE_Y ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE maxChars 50 } menuColDef // Select { type MENU_ITEM_TYPE_IMAGE_ON_HOVER rect 1 1 (CHOICE_SIZE_Y-1) (CHOICE_SIZE_Y) ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE maxChars 50 } menuColDef // Text { type MENU_ITEM_TYPE_LOC_TEXT rect 0 0 CHOICE_SIZE_X CHOICE_SIZE_Y ITEM_ALIGN_LEFT ITEM_ALIGN_MIDDLE maxChars 50 } } //////////////////////////////////////////////////////////// // MAP ACTIONS //////////////////////////////////////////// onEvent Array { execNow "set ui_chosen_map ARRAY"; scriptMenuResponse "vote_mp_array"; } onEvent Nuketown { execNow "set ui_chosen_map NUKED"; scriptMenuResponse "vote_mp_nuked"; } onEvent Jungle { execNow "set ui_chosen_map HAVOC"; scriptMenuResponse "vote_mp_havoc"; } onEvent Summit { execNow "set ui_chosen_map MOUNTAIN"; scriptMenuResponse "vote_mp_mountain"; } onEvent Villa { execNow "set ui_chosen_map VILLA"; scriptMenuResponse "vote_mp_villa"; } onEvent Radiation { execNow "set ui_chosen_map RADIATION"; scriptMenuResponse "vote_mp_radiation"; } onEvent Havana { execNow "set ui_chosen_map CAIRO"; scriptMenuResponse "vote_mp_cairo"; } onEvent Hanoi { execNow "set ui_chosen_map HANOI"; scriptMenuResponse "vote_mp_hanoi"; } onEvent Firingrange { execNow "set ui_chosen_map FIRINGRANGE"; scriptMenuResponse "vote_mp_firingrange"; } onEvent Grid { execNow "set ui_chosen_map DUGA"; scriptMenuResponse "vote_mp_duga"; } onEvent Crisis { execNow "set ui_chosen_map CRISIS"; scriptMenuResponse "vote_mp_crisis"; } onEvent Cracked { execNow "set ui_chosen_map CRACKED"; scriptMenuResponse "vote_mp_cracked"; } onEvent WMD { execNow "set ui_chosen_map RUSSIANBASE"; scriptMenuResponse "vote_mp_russianbase"; } onEvent Launch { execNow "set ui_chosen_map COSMODROME"; scriptMenuResponse "vote_mp_cosmodrome"; } onEvent Kowloon { execNow "set ui_chosen_map KOWLOON"; scriptMenuResponse "vote_mp_kowloon"; } onEvent Zoo { execNow "set ui_chosen_map ZOO"; scriptMenuResponse "vote_mp_zoo"; } onEvent Discovery { execNow "set ui_chosen_map DISCOVERY"; scriptMenuResponse "vote_mp_discovery"; } onEvent Berlinwall { execNow "set ui_chosen_map BERLINWALL2"; scriptMenuResponse "vote_mp_berlinwall2"; } onEvent Hotel { execNow "set ui_chosen_map HOTEL"; scriptMenuResponse "vote_mp_hotel"; } onEvent Stadium { execNow "set ui_chosen_map STADIUM"; scriptMenuResponse "vote_mp_stadium"; } //////////////////////////////////////////////////////////// // CREATE AND RUN MENU ///////////////////////////////////// onEvent Random { scriptMenuResponse "vote_random"; execNow "set ui_chosen_map RANDOM"; } onEvent Clear { execNow clearFeeder; } onEvent Populate { execNow addToFeeder Random MPUI_RANDOM_CAPS; if( dvarBool( mp_array ) ) { execNow addToFeederExtended Array noop (dvarString( ui_chosen_map ) == "ARRAY") MPUI_ARRAY_CAPS; } if( dvarBool( mp_nuked ) ) { execNow addToFeederExtended Nuketown noop (dvarString( ui_chosen_map ) == "NUKED") MPUI_NUKED_CAPS; } if( dvarBool( mp_mountain ) ) { execNow addToFeederExtended Summit noop (dvarString( ui_chosen_map ) == "MOUNTAIN") MPUI_MOUNTAIN_CAPS; } if( dvarBool( mp_havoc ) ) { execNow addToFeederExtended Jungle noop (dvarString( ui_chosen_map ) == "HAVOC") MPUI_HAVOC_CAPS; } if( dvarBool( mp_villa ) ) { execNow addToFeederExtended Villa noop (dvarString( ui_chosen_map ) == "VILLA") MPUI_VILLA_CAPS; } if( dvarBool( mp_cairo ) ) { execNow addToFeederExtended Havana noop (dvarString( ui_chosen_map ) == "CAIRO") MPUI_CAIRO_CAPS; } if( dvarBool( mp_radiation ) ) { execNow addToFeederExtended Radiation noop (dvarString( ui_chosen_map ) == "RADIATION") MPUI_RADIATION_CAPS; } if( dvarBool( mp_duga ) ) { execNow addToFeederExtended Grid noop (dvarString( ui_chosen_map ) == "DUGA") MPUI_DUGA_CAPS; } if( dvarBool( mp_firingrange ) ){ execNow addToFeederExtended Firingrange noop (dvarString( ui_chosen_map ) == "FIRINGRANGE") MPUI_FIRINGRANGE_CAPS; } if( dvarBool( mp_cracked ) ) { execNow addToFeederExtended Cracked noop (dvarString( ui_chosen_map ) == "CRACKED") MPUI_CRACKED_CAPS; } if( dvarBool( mp_crisis ) ) { execNow addToFeederExtended Crisis noop (dvarString( ui_chosen_map ) == "CRISIS") MPUI_CRISIS_CAPS; } if( dvarBool( mp_russianbase ) ){ execNow addToFeederExtended WMD noop (dvarString( ui_chosen_map ) == "RUSSIANBASE") MPUI_RUSSIANBASE_CAPS; } if( dvarBool( mp_cosmodrome ) ) { execNow addToFeederExtended Launch noop (dvarString( ui_chosen_map ) == "COSMODROME") MPUI_COSMODROME_CAPS; } if( dvarBool( mp_hanoi ) ) { execNow addToFeederExtended Hanoi noop (dvarString( ui_chosen_map ) == "HANOI") MPUI_HANOI_CAPS; } if( dvarBool( mp_discovery ) ) { execNow addToFeederExtended Discovery noop (dvarString( ui_chosen_map ) == "DISCOVERY") MPUI_DISCOVERY_CAPS; } if( dvarBool( mp_berlinwall2 ) ){ execNow addToFeederExtended Berlinwall noop (dvarString( ui_chosen_map ) == "BERLINWALL2") MPUI_BERLINWALL2_CAPS; } if( dvarBool( mp_kowloon ) ) { execNow addToFeederExtended Kowloon noop (dvarString( ui_chosen_map ) == "KOWLOON") MPUI_KOWLOON_CAPS; } if( dvarBool( mp_zoo ) ) { execNow addToFeederExtended Zoo noop (dvarString( ui_chosen_map ) == "ZOO") MPUI_ZOO_CAPS; } if( dvarBool( mp_hotel ) ) { execNow addToFeederExtended Hotel noop (dvarString( ui_chosen_map ) == "HOTEL") MPUI_HOTEL_CAPS; } if( dvarBool( mp_stadium ) ) { execNow addToFeederExtended Stadium noop (dvarString( ui_chosen_map ) == "STADIUM") MPUI_STADIUM_CAPS; } } onFocus { play CHOICE_FOCUS_SOUND; } onListboxSelectionChange { play CHOICE_FOCUS_SOUND; } doubleClick { play CHOICE_FOCUS_SOUND; execNow raiseFeederEvent; } } }

endresult of the menu

[Image: 9A2992078B215AA8DF1CF60573C528301E5048B0]
Old screenshot, only the most voted maps thing changed


Attached Files
.rar   mp_mapvotetest.rar (Size: 8.01 KB / Downloads: 70)
(08-10-2011, 12:58)Pozzuh Wrote:
Se7en Wrote:Stealed, from cod4 mod ...
look who's talking

[Release] Old School Mod v2.2
[Release] Scroll menu

Reply

#2
Thanks Nyan Cat
C++/Obj-Cdeveloper. Neko engine wip
Steam: Click
Reply

#3
Really awesome iAegle.
[Image: MaEIQ.png]
Reply

#4
Nice iEagle
[Image: lQDUjba.jpg]
Reply

#5
repd nice feature
btw @Scripts18 already knew this before the game was released
Reply

#6
Good job Big Grin
Reply



Possibly Related Threads…
Thread Author Replies Views Last Post
Question Help Admin menu koren30 4 6,701 10-07-2013, 20:17
Last Post: Yamato
  [Tutorial] How-To, Mod menu picture-REVISED/no iwifix needed rotceh_dnih 52 42,205 09-28-2013, 02:08
Last Post: Monkey Arms
  Help How do I open the admin menu for GeKKos QS Mod? conorr 1 4,269 08-15-2013, 13:52
Last Post: Yamato
  The next big thing Pozzuh 7 5,768 07-21-2013, 13:56
Last Post: kokole
  Help Server not in list, but people join 99IRock 8 8,957 07-17-2013, 21:26
Last Post: clacki
  Trying to compile a modified menu DidUknowiPwn 7 8,090 07-05-2013, 21:55
Last Post: DidUknowiPwn
  List of models that can be spawned? (Looking for C4 model) akillj 5 6,725 06-27-2013, 13:35
Last Post: Yamato
  [Request] mw3 all map list ( aslo DLC) raminr63 5 17,640 06-18-2013, 19:50
Last Post: mn_acer1
Big Grin Killstreaks HUD list Puffiamo 9 12,578 06-18-2013, 18:42
Last Post: RaZ
  Where can I find a list of scripting commands that correspond to ingame buttons? akillj 2 4,740 06-03-2013, 10:38
Last Post: Yamato

Forum Jump:


Users browsing this thread:
1 Guest(s)

Forum Powered By MyBB, Theme by © 2002-2026 Melroy van den Berg.