Using New Menu System

From AlliedModders Wiki
Revision as of 09:33, 2 April 2006 by Freecode (talk | contribs) (Menu Tutorial)
Jump to: navigation, search

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");
    • Syntax:
     menu_create ( title[], handler[], ml=0 )
    • g_Menu - Our menu handle. It will be set after menu_create gets called.


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

return PLUGIN_HANDLED; }

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) { 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>