Так как в Новой системе меню еще больше различных функций, то рабочие примеры меню, пойдут чуть позже, дабы не вводить вас в заблуждение.
А пока что давайте начнем с изучения функции которая создает меню - menu_create
Инфо из newmenu.inc:
/**
* @brief Creates a new menu object.
*
* The handler function should be prototyped as:
*
* public <function>(menu, id, item)
* menu - Menu resource identifier.
* id - Client the menu is being acted upon.
* item - Item the client selected. If less than 0, the menu was
* cancelled and the item is a status code. menu_display
* should never be called immediately if the item is a status
* code, for re-entrancy reasons.
*
* The handler function should always return PLUGIN_HANDLED to block
* any old menu handlers from potentially feeding on the menu, unless
* that is the desired functionality.
*
* @param title Title the menu should use.
* @param handler Name of the handler function. The function will be invoked
* once and only once to every menu_display() call.
* @param ml Unused (should be 0).
* @return Menu resource identifier which must be destroyed via
* menu_destroy(). All menus are destroyed when the plugin
* unloads.
* @error Function name not found.
*/
native menu_create(const title[], const handler[], ml=0);
Синтаксис:
menu_create ( title[], handler[], ml=0 )
- title[] - Заголовок меню
- handler[] - Функция обработчик ( какая функция будет вызвана при выборе какого то пункта меню.)
- ml=0 - Должно быть ноль. (скудная информация с офф сайта)
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "[newmenu.inc] menu_create"
#define VERSION "1.0"
#define AUTHOR "Admin"
new mTEST // Menu
public plugin_init() {
mTEST = menu_create("TEST", "mh_TEST")
register_plugin(PLUGIN, VERSION, AUTHOR)
}
Описание:
Обратите внимание, что данная функция создает меню, а не показывает его игроку.
То есть меню надо сначала создать, внести туда все необходимые данные и только потом его показывать игроку.
Если меню не будет изменяться динамически, лучше его создавать в plugin_init, что немного оптимизирует плагин.
Если же у вас будет меню со списком игроков ( что в течении карты многократно изменяется) то создавать меню придется каждый раз при вызове функции и заново добавлять в него пункты ( список игроков) меню.
Так же функция возвращает идентификатор меню, по которому в дальнейшем это меню можно уничтожить.