搜索
查看: 2642|回复: 3

求助:菜单一页不能全部显示问题

[复制链接]
发表于 2020-3-18 13:47:33 | 显示全部楼层 |阅读模式 来自 河北石家庄
public MENU_ChangeRace( id, iRaceXP[MAX_RACES] )
{
       
        new szRaceName[MAX_RACES+1][64], i, pos, iKeys = 0, szMenu[512], szXP[16], num;

        // Get our race names
        for ( i = 0; i < get_pcvar_num( CVAR_wc3_races ) ); i++ )
        {
                lang_GetRaceName( i + 1, id, szRaceName[i], 63 );
        }

        pos += formatex( szMenu[pos], 512-pos, "%L", id, "MENU_SELECT_RACE" );

如何让菜单一页显示8个选项
1:xxx
2:xxx
3:xxx
4:xxx
5:xxx
6:xxx
7:xxx
8:xxx

然后显示
9:next
0:exit

下一页显示
1:xxx
2:xxx
3:xxx


9:back
0:exit
发表于 2020-3-19 02:07:18 | 显示全部楼层 来自 四川成都
话说不是有 menu 的现成封装吗。比这个方便多了呀
回复

使用道具 举报

 楼主| 发表于 2020-3-19 22:21:27 | 显示全部楼层 来自 河北石家庄
k1nader 发表于 2020-3-19 02:07
话说不是有 menu 的现成封装吗。比这个方便多了呀

nwb13创作的那个吧,那是单独插件,这个是别的文件里的一段,所以不能单独做个插件,帮助我一下,自己试着弄了几个小时总是出错,要不就是显示的位置不对,反正不能翻页显示,没办法了
回复

使用道具 举报

发表于 2020-3-20 05:54:43 | 显示全部楼层 来自 四川成都
dongtianbao 发表于 2020-3-19 22:21
nwb13创作的那个吧,那是单独插件,这个是别的文件里的一段,所以不能单独做个插件,帮助我一下,自己试 ...


我说的是 newmenus.inc 这个
给你一段参考代码

  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>

  4. new m_iMenu = 205;

  5. public DisplayPlayers(id)
  6. {
  7.         new menu = menu_create("玩家列表", "players_menu_handler"); // 创建个菜单句柄,并且指定 回调函数
  8.        
  9.         new szName[32], sztargetId[10];
  10.        
  11.         for(new i = 1; i < get_maxplayers(); i++)
  12.         {
  13.                 if (is_user_connected(i))
  14.                 {
  15.                         get_user_name(i, szName, charsmax(szName)); // 获取玩家名称
  16.                         num_to_str(i, sztargetId, charsmax(sztargetId)); // 将玩家Id转为字符串
  17.                         menu_additem(menu, szName, sztargetId); // 添加Item到菜单 (菜单句柄, 显示的内容, 数据)
  18.                 }
  19.         }
  20.         menu_setprop(menu, MPROP_BACKNAME, "上一页"); // 指定上一页字符串
  21.         menu_setprop(menu, MPROP_NEXTNAME, "下一页"); // 指定下一页字符串
  22.         menu_setprop(menu, MPROP_EXITNAME, "退出"); // 指定退出字符串
  23.        
  24.         set_pdata_int(id, m_iMenu, 0); // 用于修复 cs 菜单的bug
  25.         menu_display(id, menu, 0); // 开始显示
  26.         return PLUGIN_HANDLED;
  27. }

  28. public players_menu_handler(id, menu, item)
  29. {
  30.         if(item == MENU_EXIT ) // 如果回调item为退出
  31.         {
  32.                 menu_destroy(menu); //销毁菜单
  33.                 return;
  34.         }
  35.        
  36.         new sztargetId[6], szItemName[64];
  37.         new access, callback;
  38.        
  39.         menu_item_getinfo(menu, item, access, sztargetId, charsmax(sztargetId), szItemName, charsmax(szItemName), callback); //获取菜单数据
  40.        
  41.         new targetId = str_to_num(sztargetId);
  42.        
  43.         if (is_user_connected(targetId)
  44.         {
  45.                 new szName[32];
  46.                 get_user_name(targetId, szName, charsmax(szName));
  47.                 client_print(id, print_chat, "你选择的玩家是 %s, %s", szName, szItemName);
  48.         }
  49.        
  50.         menu_destroy(menu); // 销毁菜单
  51.        
  52. }
复制代码

  1. amxmodx\scripting\testsuite\menutest.sma
复制代码

这个源码里面有详细的使用测试代码
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表