|
发表于 2020-3-20 05:54:43
|
显示全部楼层
来自 中国–四川–成都
我说的是 newmenus.inc 这个
给你一段参考代码
- #include <amxmodx>
- #include <amxmisc>
- #include <fakemeta>
- new m_iMenu = 205;
- public DisplayPlayers(id)
- {
- new menu = menu_create("玩家列表", "players_menu_handler"); // 创建个菜单句柄,并且指定 回调函数
-
- new szName[32], sztargetId[10];
-
- for(new i = 1; i < get_maxplayers(); i++)
- {
- if (is_user_connected(i))
- {
- get_user_name(i, szName, charsmax(szName)); // 获取玩家名称
- num_to_str(i, sztargetId, charsmax(sztargetId)); // 将玩家Id转为字符串
- menu_additem(menu, szName, sztargetId); // 添加Item到菜单 (菜单句柄, 显示的内容, 数据)
- }
- }
- menu_setprop(menu, MPROP_BACKNAME, "上一页"); // 指定上一页字符串
- menu_setprop(menu, MPROP_NEXTNAME, "下一页"); // 指定下一页字符串
- menu_setprop(menu, MPROP_EXITNAME, "退出"); // 指定退出字符串
-
- set_pdata_int(id, m_iMenu, 0); // 用于修复 cs 菜单的bug
- menu_display(id, menu, 0); // 开始显示
- return PLUGIN_HANDLED;
- }
- public players_menu_handler(id, menu, item)
- {
- if(item == MENU_EXIT ) // 如果回调item为退出
- {
- menu_destroy(menu); //销毁菜单
- return;
- }
-
- new sztargetId[6], szItemName[64];
- new access, callback;
-
- menu_item_getinfo(menu, item, access, sztargetId, charsmax(sztargetId), szItemName, charsmax(szItemName), callback); //获取菜单数据
-
- new targetId = str_to_num(sztargetId);
-
- if (is_user_connected(targetId)
- {
- new szName[32];
- get_user_name(targetId, szName, charsmax(szName));
- client_print(id, print_chat, "你选择的玩家是 %s, %s", szName, szItemName);
- }
-
- menu_destroy(menu); // 销毁菜单
-
- }
复制代码
- amxmodx\scripting\testsuite\menutest.sma
复制代码
这个源码里面有详细的使用测试代码 |
|