На мой взгляд эта функция уже имеет огромное преимущество перед старой системой меню.
например своей возможностью использовать предварительный вызов и обработку пунктов меню (callback)
То есть можно выполнить проверку пункта и сделать его не активным. Но ботом в другой раз.
Инфо из newmenu.inc:
/**
* Adds an menu to a menu.
*
* @param menu Menu resource identifier.
* @param name Item text to display.
* @param info Item info string for internal information.
* @param paccess Access required by the player viewing the menu.
* @param callback If set to a valid ID from menu_makecallback(), the
* callback will be invoked before drawing the item.
* @noreturn
* @error Invalid menu resource.
*/
native menu_additem(menu, const name[], const info[]="", paccess=0, callback=-1);
Синтаксис:
menu_additem ( menu, const name[], const info[]="", paccess=0, callback=-1 )
- menu - Идентификатор меню ( в какое меню добавляем пункт)
- const name[] - Имя пункта меню ( что будет видеть игрок)
- const info[]="" - Передача информации от пункта меню к функции обработчику
- paccess=0 - Флаг доступа к данному пункту меню
- callback=-1 - Если используется callback, то указывается его глобальный идентификатор или -1 если нет.
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "[newmenu.inc] menu_additem"
#define VERSION "1.0"
#define AUTHOR "Admin"
new mTEST // Menu
new mcbTEST // Menu Callback
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
mTEST = menu_create("TEST", "mh_TEST")
mcbTEST = menu_makecallback("mcb_TEST")
menu_additem(mTEST, "123 test", "ma_TEST", ADMIN_ALL, mcbTEST)
Описание:
Обратите внимание, что идентификаторы меню и callback функции глобальны.
И в функции добавления пункта меню, указаны эти идентификаторы.
Вроде бы возможно в старой системе меню, но описания не нашел.