Raised This Month: $51 Target: $400
 12% 

New AMXX Menu System


Post New Thread Reply   
 
Thread Tools Display Modes
ScHrAnZ DiNgEnS
Senior Member
Join Date: Sep 2007
Old 07-22-2009 , 03:12   Re: New AMXX Menu System
Reply With Quote #111

Is there a limit for buttonnames? I see that all use lengt 63.
__________________
ScHrAnZ DiNgEnS is offline
Send a message via ICQ to ScHrAnZ DiNgEnS Send a message via AIM to ScHrAnZ DiNgEnS
LaineN
Veteran Member
Join Date: Mar 2008
Location: Sweden
Old 08-17-2009 , 09:18   Re: New AMXX Menu System
Reply With Quote #112

If I have many manus in the same plugin, how can I check if a player is viewing a specific menu?

Example:
PHP Code:
#include <amxmodx>

public plugin_init()
{
    
register_clcmd("say /menu""ShowMainMenu");
}

public 
ShowMainMenu(id)
{
    new 
menu menu_create("Main Menu""MainMenuHandle");
    
menu_additem(menu"Sub Menu 1""1");
    
menu_additem(menu"Sub Menu 2""2");
    
menu_additem(menu"Sub Menu 3""3");
    
menu_additem(menu"Sub Menu 4""4");
    
menu_additem(menu"Sub Menu 5""5");
    
    
menu_display(idmenu);
}

public 
MainMenuHandle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'ShowSubMenu1(id);
        case 
'2'ShowSubMenu2(id);
        case 
'3'ShowSubMenu3(id);
        case 
'4'ShowSubMenu4(id);
        case 
'5'ShowSubMenu5(id);
    }
}

public 
ShowSubMenu1(id)
{
    new 
menu menu_create("Sub Menu 1""SubMenu1Handle");
    
menu_additem(menu"1""1");
    
menu_additem(menu"2""2");
    
menu_additem(menu"3""3");
    
menu_additem(menu"4""4");
    
menu_additem(menu"5""5");
    
menu_additem(menu"6""6");
    
    
menu_display(idmenu);
}

public 
SubMenu1Handle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
ShowMainMenu(id);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'client_print(idprint_chat"You selected 1");
        case 
'2'client_print(idprint_chat"You selected 2");
        case 
'3'client_print(idprint_chat"You selected 3");
        case 
'4'client_print(idprint_chat"You selected 4");
        case 
'5'client_print(idprint_chat"You selected 5");
        case 
'6'client_print(idprint_chat"You selected 6");
    }
    
    
ShowSubMenu1(id);
}

public 
ShowSubMenu2(id)
{
    new 
menu menu_create("Sub Menu 2""SubMenu2Handle");
    
menu_additem(menu"1""1");
    
menu_additem(menu"2""2");
    
menu_additem(menu"3""3");
    
menu_additem(menu"4""4");
    
menu_additem(menu"5""5");
    
menu_additem(menu"6""6");
    
    
menu_display(idmenu);
}

public 
SubMenu2Handle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
ShowMainMenu(id);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'client_print(idprint_chat"You selected 1");
        case 
'2'client_print(idprint_chat"You selected 2");
        case 
'3'client_print(idprint_chat"You selected 3");
        case 
'4'client_print(idprint_chat"You selected 4");
        case 
'5'client_print(idprint_chat"You selected 5");
        case 
'6'client_print(idprint_chat"You selected 6");
    }
    
    
ShowSubMenu2(id);
}

public 
ShowSubMenu3(id)
{
    new 
menu menu_create("Sub Menu 3""SubMenu3Handle");
    
menu_additem(menu"1""1");
    
menu_additem(menu"2""2");
    
menu_additem(menu"3""3");
    
menu_additem(menu"4""4");
    
menu_additem(menu"5""5");
    
menu_additem(menu"6""6");
    
    
menu_display(idmenu);
}

public 
SubMenu3Handle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
ShowMainMenu(id);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'client_print(idprint_chat"You selected 1");
        case 
'2'client_print(idprint_chat"You selected 2");
        case 
'3'client_print(idprint_chat"You selected 3");
        case 
'4'client_print(idprint_chat"You selected 4");
        case 
'5'client_print(idprint_chat"You selected 5");
        case 
'6'client_print(idprint_chat"You selected 6");
    }
    
    
ShowSubMenu3(id);
}

public 
ShowSubMenu4(id)
{
    new 
menu menu_create("Sub Menu 4""SubMenu4Handle");
    
menu_additem(menu"1""1");
    
menu_additem(menu"2""2");
    
menu_additem(menu"3""3");
    
menu_additem(menu"4""4");
    
menu_additem(menu"5""5");
    
menu_additem(menu"6""6");
    
    
menu_display(idmenu);
}

public 
SubMenu4Handle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
ShowMainMenu(id);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'client_print(idprint_chat"You selected 1");
        case 
'2'client_print(idprint_chat"You selected 2");
        case 
'3'client_print(idprint_chat"You selected 3");
        case 
'4'client_print(idprint_chat"You selected 4");
        case 
'5'client_print(idprint_chat"You selected 5");
        case 
'6'client_print(idprint_chat"You selected 6");
    }
    
    
ShowSubMenu4(id);
}

public 
ShowSubMenu5(id)
{
    new 
menu menu_create("Sub Menu 5""SubMenu5Handle");
    
menu_additem(menu"1""1");
    
menu_additem(menu"2""2");
    
menu_additem(menu"3""3");
    
menu_additem(menu"4""4");
    
menu_additem(menu"5""5");
    
menu_additem(menu"6""6");
    
    
menu_display(idmenu);
}

public 
SubMenu5Handle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
ShowMainMenu(id);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'client_print(idprint_chat"You selected 1");
        case 
'2'client_print(idprint_chat"You selected 2");
        case 
'3'client_print(idprint_chat"You selected 3");
        case 
'4'client_print(idprint_chat"You selected 4");
        case 
'5'client_print(idprint_chat"You selected 5");
        case 
'6'client_print(idprint_chat"You selected 6");
    }
    
    
ShowSubMenu5(id);

How to get if the player is in the 'Main Menu', 'Sub Menu 1', 'Sub Menu 2', 'Sub Menu 3', 'Sub Menu 4', 'Sub Menu 5' or not in a menu at all?

I've tried with player_menu_info(), but I can't get it to work with more than one menu in the same plugin.
__________________
Bollnas Team - HideNSeek

See all of Bollnas Team's HideNSeek
servers at
http://bollnasteam.se/!


Last edited by LaineN; 08-17-2009 at 10:11.
LaineN is offline
xbatista
Veteran Member
Join Date: Mar 2008
Location: Lithuania
Old 08-17-2009 , 10:03   Re: New AMXX Menu System
Reply With Quote #113

Create a new bool, then where is the menu called do that bool 'true', when pressed button '0 or other button' do that bool 'false'
__________________
xbatista is offline
Send a message via Skype™ to xbatista
LaineN
Veteran Member
Join Date: Mar 2008
Location: Sweden
Old 08-17-2009 , 10:10   Re: New AMXX Menu System
Reply With Quote #114

Doesn't work, already tried.
I think there should be a way using player_menu_info() but I don't really know how to do.

Also if you use a boolean, it will still be true if you just open a new menu when you have the old open, instead of press 0 button.
__________________
Bollnas Team - HideNSeek

See all of Bollnas Team's HideNSeek
servers at
http://bollnasteam.se/!

LaineN is offline
xbatista
Veteran Member
Join Date: Mar 2008
Location: Lithuania
Old 08-17-2009 , 10:23   Re: New AMXX Menu System
Reply With Quote #115

Yea I know thats prob :/
But look at this there are example of it :
http://www.amxmodx.org/funcwiki.php?...menu&go=search
__________________

Last edited by xbatista; 08-17-2009 at 10:25.
xbatista is offline
Send a message via Skype™ to xbatista
LaineN
Veteran Member
Join Date: Mar 2008
Location: Sweden
Old 08-17-2009 , 12:19   Re: New AMXX Menu System
Reply With Quote #116

Quote:
Originally Posted by xbatista View Post
Yea I know thats prob :/
But look at this there are example of it :
http://www.amxmodx.org/funcwiki.php?...menu&go=search
I know how to use it if I only have one menu, read my post again.
__________________
Bollnas Team - HideNSeek

See all of Bollnas Team's HideNSeek
servers at
http://bollnasteam.se/!

LaineN is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 08-17-2009 , 13:55   Re: New AMXX Menu System
Reply With Quote #117

Quote:
Originally Posted by LaineN View Post
Doesn't work, already tried.
I think there should be a way using player_menu_info() but I don't really know how to do.

Also if you use a boolean, it will still be true if you just open a new menu when you have the old open, instead of press 0 button.
Using a bool will work if you do it correctly. For 5 submenus and one main menu you would need 6 bool:variable[33]'s. You could use only one if you did it bitwise in the single variable.

As for player_menu_info(), I can only imagine it working if you are using all globally stored menus.
__________________
fysiks is offline
LaineN
Veteran Member
Join Date: Mar 2008
Location: Sweden
Old 08-17-2009 , 14:14   Re: New AMXX Menu System
Reply With Quote #118

Quote:
Originally Posted by fysiks View Post
Using a bool will work if you do it correctly. For 5 submenus and one main menu you would need 6 bool:variable[33]'s. You could use only one if you did it bitwise in the single variable.

As for player_menu_info(), I can only imagine it working if you are using all globally stored menus.
Can you please show me how to make it bitwise? Use my example above.
__________________
Bollnas Team - HideNSeek

See all of Bollnas Team's HideNSeek
servers at
http://bollnasteam.se/!

LaineN is offline
Exolent[jNr]
Veteran Member
Join Date: Feb 2007
Location: Tennessee
Old 08-17-2009 , 14:35   Re: New AMXX Menu System
Reply With Quote #119

You don't need bitwise.

PHP Code:
#include <amxmodx>

enum
{
    
MENU_NONE 0,
    
    
MENU_MAIN,
    
MENU_SUB1,
    
MENU_SUB2,
    
MENU_SUB3,
    
MENU_SUB4,
    
MENU_SUB5
};

new 
g_iCurrentMenu33 ];

public 
plugin_init()
{
    
register_clcmd("say /menu""ShowMainMenu");
}

public 
client_disconnectclient )
{
    
g_iCurrentMenuclient ] = MENU_NONE;
}

public 
ShowMainMenu(id)
{
    
g_iCurrentMenuid ] = MENU_MAIN;
    
    new 
menu menu_create("Main Menu""MainMenuHandle");
    
menu_additem(menu"Sub Menu 1""1");
    
menu_additem(menu"Sub Menu 2""2");
    
menu_additem(menu"Sub Menu 3""3");
    
menu_additem(menu"Sub Menu 4""4");
    
menu_additem(menu"Sub Menu 5""5");
    
    
menu_display(idmenu);
}

public 
MainMenuHandle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
g_iCurrentMenuid ] = MENU_NONE;
        
menu_destroy(menu);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'ShowSubMenu1(id);
        case 
'2'ShowSubMenu2(id);
        case 
'3'ShowSubMenu3(id);
        case 
'4'ShowSubMenu4(id);
        case 
'5'ShowSubMenu5(id);
    }
}

public 
ShowSubMenu1(id)
{
    
g_iCurrentMenuid ] = MENU_SUB1;
    
    new 
menu menu_create("Sub Menu 1""SubMenu1Handle");
    
menu_additem(menu"1""1");
    
menu_additem(menu"2""2");
    
menu_additem(menu"3""3");
    
menu_additem(menu"4""4");
    
menu_additem(menu"5""5");
    
menu_additem(menu"6""6");
    
    
menu_display(idmenu);
}

public 
SubMenu1Handle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
ShowMainMenu(id);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'client_print(idprint_chat"You selected 1");
        case 
'2'client_print(idprint_chat"You selected 2");
        case 
'3'client_print(idprint_chat"You selected 3");
        case 
'4'client_print(idprint_chat"You selected 4");
        case 
'5'client_print(idprint_chat"You selected 5");
        case 
'6'client_print(idprint_chat"You selected 6");
    }
    
    
ShowSubMenu1(id);
}

public 
ShowSubMenu2(id)
{
    
g_iCurrentMenuid ] = MENU_SUB2;
    
    new 
menu menu_create("Sub Menu 2""SubMenu2Handle");
    
menu_additem(menu"1""1");
    
menu_additem(menu"2""2");
    
menu_additem(menu"3""3");
    
menu_additem(menu"4""4");
    
menu_additem(menu"5""5");
    
menu_additem(menu"6""6");
    
    
menu_display(idmenu);
}

public 
SubMenu2Handle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
ShowMainMenu(id);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'client_print(idprint_chat"You selected 1");
        case 
'2'client_print(idprint_chat"You selected 2");
        case 
'3'client_print(idprint_chat"You selected 3");
        case 
'4'client_print(idprint_chat"You selected 4");
        case 
'5'client_print(idprint_chat"You selected 5");
        case 
'6'client_print(idprint_chat"You selected 6");
    }
    
    
ShowSubMenu2(id);
}

public 
ShowSubMenu3(id)
{
    
g_iCurrentMenuid ] = MENU_SUB3;
    
    new 
menu menu_create("Sub Menu 3""SubMenu3Handle");
    
menu_additem(menu"1""1");
    
menu_additem(menu"2""2");
    
menu_additem(menu"3""3");
    
menu_additem(menu"4""4");
    
menu_additem(menu"5""5");
    
menu_additem(menu"6""6");
    
    
menu_display(idmenu);
}

public 
SubMenu3Handle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
ShowMainMenu(id);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'client_print(idprint_chat"You selected 1");
        case 
'2'client_print(idprint_chat"You selected 2");
        case 
'3'client_print(idprint_chat"You selected 3");
        case 
'4'client_print(idprint_chat"You selected 4");
        case 
'5'client_print(idprint_chat"You selected 5");
        case 
'6'client_print(idprint_chat"You selected 6");
    }
    
    
ShowSubMenu3(id);
}

public 
ShowSubMenu4(id)
{
    
g_iCurrentMenuid ] = MENU_SUB4;
    
    new 
menu menu_create("Sub Menu 4""SubMenu4Handle");
    
menu_additem(menu"1""1");
    
menu_additem(menu"2""2");
    
menu_additem(menu"3""3");
    
menu_additem(menu"4""4");
    
menu_additem(menu"5""5");
    
menu_additem(menu"6""6");
    
    
menu_display(idmenu);
}

public 
SubMenu4Handle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
ShowMainMenu(id);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'client_print(idprint_chat"You selected 1");
        case 
'2'client_print(idprint_chat"You selected 2");
        case 
'3'client_print(idprint_chat"You selected 3");
        case 
'4'client_print(idprint_chat"You selected 4");
        case 
'5'client_print(idprint_chat"You selected 5");
        case 
'6'client_print(idprint_chat"You selected 6");
    }
    
    
ShowSubMenu4(id);
}

public 
ShowSubMenu5(id)
{
    
g_iCurrentMenuid ] = MENU_SUB5;
    
    new 
menu menu_create("Sub Menu 5""SubMenu5Handle");
    
menu_additem(menu"1""1");
    
menu_additem(menu"2""2");
    
menu_additem(menu"3""3");
    
menu_additem(menu"4""4");
    
menu_additem(menu"5""5");
    
menu_additem(menu"6""6");
    
    
menu_display(idmenu);
}

public 
SubMenu5Handle(idmenuitem)
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        
ShowMainMenu(id);
        return;
    }
    
    static 
_accessinfo[3], callback;
    
menu_item_getinfo(menuitem_accessinfocharsmax(info), __callback);
    
menu_destroy(menu);
    
    switch ( 
info[0] )
    {
        case 
'1'client_print(idprint_chat"You selected 1");
        case 
'2'client_print(idprint_chat"You selected 2");
        case 
'3'client_print(idprint_chat"You selected 3");
        case 
'4'client_print(idprint_chat"You selected 4");
        case 
'5'client_print(idprint_chat"You selected 5");
        case 
'6'client_print(idprint_chat"You selected 6");
    }
    
    
ShowSubMenu5(id);

To find the menu, just do:
PHP Code:
switch( g_iCurrentMenuid ] )
{
    case 
MENU_MAIN:
    {
        
// code
    
}
    
// ...

__________________
No private work or selling mods.
Quote:
Originally Posted by xPaw View Post
I love you exolent!
Exolent[jNr] is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 08-17-2009 , 14:43   Re: New AMXX Menu System
Reply With Quote #120

Quote:
Originally Posted by Exolent[jNr] View Post
You don't need bitwise.
Yeah, your method is what I was thinking. It could be done either way but because the cases are mutually exclusive your method is better. .
__________________
fysiks is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 00:40.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode