Инфо из newmenu.inc:
/**
* Given a page on a menu and a keypress on that page, returns the item id selected.
* If the item is less than 0, a special option was chosen (such as MENU_EXIT).
*
* @param menu Menu resource identifier.
* @param page Page on the menu.
* @param key Key pressed (from 1 to 10).
* @return Item identifier, or <0 for a special selection code.
* @error Invalid menu resource.
*/
native menu_find_id(menu, page, key);
Синтаксис:
menu_find_id(menu, page, key)
- menu - id меню
- page - Страница на которой находится нужный итем
- key - Номер нужного итема
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "[newmenu.inc] menu_items"
#define VERSION "1.0"
#define AUTHOR "Admin"
new mTEST // Menu
new mcbTEST // Menu Callback
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /menu","func_menu")
mTEST = menu_create("TEST", "mh_TEST")
mcbTEST = menu_makecallback("mcb_TEST")
new szItem[64]
for (new i=1; i < 25; i++){
format(szItem,63,"Item %i",i)
menu_additem(mTEST,szItem, "ma_TEST", ADMIN_ALL, mcbTEST)
}
menu_setprop(mTEST,MPROP_EXIT, 1)
new iItems
iItems = menu_items(mTEST)
server_print("[NewMenus] Number items:%d",iItems)
}
public func_menu(id){
new menu_item_id = menu_find_id(mTEST,1,2)
menu_item_setname(mTEST,menu_item_id,"New Menu Item Name")
menu_display(id, mTEST, 0)
}
public mh_TEST(id, menu, item) {
item++
client_print(id,print_chat,"You select %d",item)
}
public mcb_TEST(id, menu, item){
//callback
}
Описание:
Для наглядности работы функции, мы получим айди итема и изменим его название.
Использовать ее можно где угодно и когда угодно, тут же она используется перед открытием меню, для наглядности.
Вы допустим можете после первого открытия меню, изменить пункт меню на другой.
Например если у вас есть АВП, то пункт меню изменится на АК и на оброт. Тут уже все зависит от вашей задачи.
Вернемся к нашим баранам...
А так у нас есть меню состоящее из более чем двадцати пунктов, а нам допустим необходимо изменить пункт 2 на второй же странице.
Для этого получаем его айди:
new menu_item_id = menu_find_id(mTEST,1,2)
Обратите внимание, нумерация страниц начинается с нуля, асамих итемов с 1.
Дальше дело техники и функции menu_item_setname для изменения названия на первую же пришедшую в голову белиберду.