Difference between revisions of "Using New Menu System"

From AlliedModders Wiki
Jump to: navigation, search
(Menu Tutorial)
(Menu Tutorial)
Line 37: Line 37:
  
 
Lets break this down.  
 
Lets break this down.  
*<tt>register_plugin("Vote Menu","1.0","Freecode");</tt> - Registers our plugin
+
<pawn>register_plugin("Vote Menu","1.0","Freecode");</pawn>
*<tt>g_Menu = menu_create("Change Level?","menu_handle");</tt>
+
*Registers our plugin
 +
<pawn>g_Menu = menu_create("Change Level?","menu_handle");</pawn>
 +
*g_Menu - Our menu handle. It will be set after menu_create gets called.
 
**Syntax:
 
**Syntax:
<pawn>
+
<pawn>menu_create ( title[], handler[], ml=0 )
    menu_create ( title[], handler[], ml=0 )
 
 
</pawn>
 
</pawn>
**g_Menu - Our menu handle. It will be set after menu_create gets called.
+
* title[] - Menu title
 +
* handler[] - This is a function which will get called once someone presses a key on your menu.
  
 +
<pawn>register_clcmd("amx_startvote","startvote",ADMIN_CFG,"Gaben");
 +
</pawn>
 +
* We made this client command so we can start our vote.
 +
 +
<pawn>build_menu();</pawn>
 +
* This is a function call. build_menu() function will construct our vote menu.
 +
 +
=== Constructing Menu ===
 +
Constructing the menu is just adding needed items to your menu. Before we go ahead with adding items we must look at menu_additem native.
 +
<pawn>menu_additem ( menu, const name[], const command[], paccess=0, callback=-1 )</pawn>
 +
* menu - menu handle. This tells menu_additem the menu to which we are adding our item.
 +
* const name[] - the item name. This is what gets displayed into the menu.
 +
* const command[] - item info.
 +
 +
Now lets get into constructing our menu. As said, this is a simple vote for a Change of Level. So we will only need 2 items. A "Yes" and a "No".
 +
<pawn>build_menu()
 +
{
 +
menu_additem(g_Menu, "Yes", "1");
 +
menu_additem(g_Menu, "No", "2");
 +
 +
menu_setprop(g_Menu, MPROP_PERPAGE, 0);
 +
}</pawn>
 +
*<tt>Notes</tt>
 +
** As you can see i set the const command[] to numbers. This is for us to identify the menu easier.
 +
** I have also added menu_setprop. This sets our menu to have no pages. For additional properties look int amxconst.inc
  
 +
=== Displaying the Vote Menu ===
 
public startvote(id)
 
public startvote(id)
 
{
 
{
Line 59: Line 87:
 
}
 
}
  
build_menu()
+
 
{
 
menu_additem(g_Menu, "Yes", "1");
 
menu_additem(g_Menu, "No", "2");
 
 
menu_setprop(g_Menu, MPROP_PERPAGE, 0);
 
}
 
  
 
public menu_handle(id, menu, item)
 
public menu_handle(id, menu, item)

Revision as of 09:48, 2 April 2006

Introduction

Write some intro here

Menu Tutorial

Now lets discuss how to use the new menu system. We will go through the basics in this tutorial and make a simple Change Level vote.

Includes

As always we will start out by adding the required includes

#include <amxmodx>

Global Variables

new g_Menu;	// Main Menu handler
new g_Votes[3];	// Store Yes votes at 1, No at 2

In here we created 2 global var's. One to hold our menu handle, and the other to store our menu votes. The 'Yes' votes will be stored in g_Votes[1] and the 'No' votes will be stored in g_Votes[2].

Registering Plugin and Menu

public plugin_init()
{
	// Register Our Plugin
	register_plugin("Vote Menu","1.0","Freecode");
 
	// Register our Change Level vote menu
	g_Menu = menu_create("Change Level?","menu_handle");
 
	register_clcmd("amx_startvote","startvote",ADMIN_CFG,"Gaben");
 
	// Now we need to build our menu
	build_menu();
}

Lets break this down.

register_plugin("Vote Menu","1.0","Freecode");
  • Registers our plugin
g_Menu = menu_create("Change Level?","menu_handle");
  • g_Menu - Our menu handle. It will be set after menu_create gets called.
    • Syntax:
menu_create ( title[], handler[], ml=0 )
  • title[] - Menu title
  • handler[] - This is a function which will get called once someone presses a key on your menu.
register_clcmd("amx_startvote","startvote",ADMIN_CFG,"Gaben");
  • We made this client command so we can start our vote.
build_menu();
  • This is a function call. build_menu() function will construct our vote menu.

Constructing Menu

Constructing the menu is just adding needed items to your menu. Before we go ahead with adding items we must look at menu_additem native.

menu_additem ( menu, const name[], const command[], paccess=0, callback=-1 )
  • menu - menu handle. This tells menu_additem the menu to which we are adding our item.
  • const name[] - the item name. This is what gets displayed into the menu.
  • const command[] - item info.

Now lets get into constructing our menu. As said, this is a simple vote for a Change of Level. So we will only need 2 items. A "Yes" and a "No".

build_menu()
{
	menu_additem(g_Menu, "Yes", "1");
	menu_additem(g_Menu, "No", "2");
 
	menu_setprop(g_Menu, MPROP_PERPAGE, 0);
}
  • Notes
    • As you can see i set the const command[] to numbers. This is for us to identify the menu easier.
    • I have also added menu_setprop. This sets our menu to have no pages. For additional properties look int amxconst.inc

Displaying the Vote Menu

public startvote(id) { for(new i = 0; i < 33; i++) { if( is_user_alive(i) ) { menu_display(i, g_Menu, 0); } }

return PLUGIN_HANDLED; }


public menu_handle(id, menu, item) { if( item < 0 ) return PLUGIN_CONTINUE;

// Get item info new cmd[6], iName[64]; new access, callback;

menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback);

new iChoice = str_to_num(cmd);

g_Votes[iChoice]++;

return PLUGIN_HANDLED; } </pawn>