Half-Life и Adrenaline Gamer форум
http://aghl.ru/forum/

HLSDK - Select players in a menu
http://aghl.ru/forum/viewtopic.php?f=20&t=2699
Страница 1 из 1

Автор:  Gennaro-HL [ 28 июн 2017, 14:26 ]
Заголовок сообщения:  HLSDK - Select players in a menu

How can I get the index of the player when I select their name in the menu idea?
What I can do
This is what I did
Код:
if (FStrEq(CMD_ARGV(0), "menu.test"))
{
   pPlayer->m_iMenu = 1;
   char m_szMenu[2048];
   int m_iLen;
   m_iNumbers = 0;
   m_iLen = _snprintf(m_szMenu, 2047, "Menu       1/%i\n\n", (m_iPlayerCounter / MENU_PLAYERS + ((m_iPlayerCounter % MENU_PLAYERS) ? 1 : 0)));
   for (int i = 1; i <= gpGlobals->maxClients; i++)
   {
      CBasePlayer* pPlayerLoop = AgPlayerByIndex(i);
      if (pPlayerLoop)
      {
         m_iNumbers++;
         m_iLen += _snprintf(m_szMenu + m_iLen, 2045 - m_iLen, "%i. %s | Slot number: %d\n", m_iNumbers, pPlayerLoop->GetName(), pPlayerLoop->entindex());
      }
      if (m_iNumbers == MENU_PLAYERS)
         break;
   }
   if (m_iPlayerCounter >= 9)
   {
      m_iLen += _snprintf(m_szMenu + m_iLen, sizeof m_szMenu - 1 - m_iLen, "\n9. Mas");
   }
   m_iLen += _snprintf(m_szMenu + m_iLen, sizeof m_szMenu - 1 - m_iLen, "\n0. Salir");
   AgMenu(pPlayer, MENU_KEYS, -1, AgSprintf("%s", m_szMenu), m_iLen);
   return true;
}
else if (FStrEq(CMD_ARGV(0), "menuselect"))
{
   if (CMD_ARGC() < 2)
      return true;
   int m_iSlot = atoi(CMD_ARGV(1));
   CBasePlayer* pPlayer1 = AgPlayerByIndex(m_iSlot);//This does not work just for demonstration
   switch (pPlayer->m_iMenu)
   {
   case 1:
      switch (m_iSlot)
      {
      case 0:
         pPlayer->m_iMenu = 0;
         break;
      default:
         if (pPlayer1)
         {
            AgSay(AgSprintf("Select player %s", pPlayer1->GetName()), pPlayer);
         }
         else
         {
            AgSay("The player does not exist", pPlayer);
         }
         break;
      }
      break;
   }
   return true;
}

 

Автор:  Lev [ 03 июл 2017, 19:21 ]
Заголовок сообщения:  Re: HLSDK - Select players in a menu

You can list all 32 players, implement paging.
Store menu typeand slot values on the server when you send menu to the client (store pre client).

Автор:  Gennaro-HL [ 05 июл 2017, 21:16 ]
Заголовок сообщения:  Re: HLSDK - Select players in a menu

So it would be
Код:
for (int i = 1; i <= gpGlobals->maxClients; i++)
   {
      CBasePlayer* pPlayerLoop = AgPlayerByIndex(i);
      if (pPlayerLoop)
      {
         m_iNumbers++;
         m_iLen += _snprintf(m_szMenu + m_iLen, 2045 - m_iLen, "%i. %s | Slot number: %d\n", m_iNumbers, pPlayerLoop->GetName(), pPlayerLoop->entindex());
pPlayer->Test[i] = pPlayerLoop ->entindex();//I keep the Player Slot
      }
      if (m_iNumbers == MENU_PLAYERS)
         break;
   }

Автор:  Lev [ 05 июл 2017, 23:40 ]
Заголовок сообщения:  Re: HLSDK - Select players in a menu

Код:
pPlayer->Test[m_iNumbers] = i;

Автор:  Gennaro-HL [ 06 июл 2017, 07:48 ]
Заголовок сообщения:  Re: HLSDK - Select players in a menu

Thank you :))

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/