Контакты/сообщить об ошибке Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » 2 цели в Меню
2 цели в Меню
BarD Дата: Вторник, 11.02.2014, 15:11:37 | Сообщение # 1
Сообщений: 942
Репутация: 132 [ +/- ]
Итак, у меня есть менюшка:
Код
ShowMyPanel(client)  
{
new Handle:panel = CreatePanel();
SetPanelTitle(panel, "Выбор:\n \n");  
DrawPanelItem(panel, "1 слот");  
DrawPanelItem(panel, "2 слот");  
SendPanelToClient(panel, client, Select_Panel, 0);
CloseHandle(panel);
}

public Select_Panel(Handle:panel, MenuAction:action, client, option)  
{
if (action == MenuAction_Select)
{
if (option == 2)
{
ShowPanelChoose(client);
}
if (option == 1)
{
   CloseHandle(panel);
}
}
}

ShowPanelChoose(client)
{
  new Handle:menu = CreateMenu(Select_Menu);  
       SetMenuTitle(menu, "Выберите игрока:\n \n");  
       decl String:userid[15], String:name[32];  
       for (new i = 1; i <= MaxClients; i++)  
       {  
           if (IsClientInGame(i))  
           {  
               IntToString(GetClientUserId(i), userid, 15);  
               GetClientName(i, name, 32);  
               AddMenuItem(menu, userid, name);  
           }  
       }  
       DisplayMenu(menu, client, 0);  
}

public Select_Menu(Handle:menu, MenuAction:action, client, option)  
{        
if (action == MenuAction_End)  
       {  
           CloseHandle(menu);  
           return;  
       }
if (action != MenuAction_Select) return;  
       decl String:userid[15];  
       GetMenuItem(menu, option, userid, 15);  
      new target = GetClientOfUserId(StringToInt(userid));  
       if (target > 0)  
       {
       new Handle:choosebet = CreatePanel();
       SetPanelTitle(choosebet, "Выбор 2:\n \n");
       DrawPanelItem(choosebet,"Слот 1");
       SendPanelToClient(choosebet, client, Menu, 0);
       }
}

public Menu(Handle:choosebet, MenuAction:action, target, option)
{
if (action == MenuAction_End)  
       {  
           CloseHandle(choosebet);  
           return;  
       }
if (action == MenuAction_Select)
     {
     PrintToChat(client,"ID цели: %s", target);
     }
}


Но компилятор выдает ошибку: неопределенный символ "client"
Строчка:
Код
PrintToChat(client,"ID цели: %s", target);


Собственно, вопрос: Как мне сохранить оба айдишника (client и target) в последующих менюшках? Т.е. у меня
Код
public Menu(Handle:choosebet, MenuAction:action, target, option)
в последней менюшке отправляется target'у. Из-за этого он теряет id "client". Как его не терять, при этом не теряя target? Помогите, кто знает! onet
 
Darkeneez Дата: Вторник, 11.02.2014, 15:25:32 | Сообщение # 2
Сообщений: 221
Репутация: 18 [ +/- ]
Ну, дружище, подумай хорошенько, тут же много вариантов. Хоть создать переменную для клиента, где будет его цель(target) запоминаться, хоть DataPack используй.
 
BarD Дата: Среда, 12.02.2014, 15:04:06 | Сообщение # 3
Сообщений: 942
Репутация: 132 [ +/- ]
Можешь наглядно на моем примерчике объяснить, а то я не понимаю)))
 
Darkeneez Дата: Среда, 12.02.2014, 18:33:57 | Сообщение # 4
Сообщений: 221
Репутация: 18 [ +/- ]
Твой код я разобрать не могу, там помоему вообще много ошибок, ибо public Menu(Handle:choosebet, MenuAction:action, target, option) не вижу откуда вытекает. А так, ты же где-то получаешь из меню target, верно? Так вот, когда получил, запиши в переменную игрока его ID, а дальше передавай только ID клиента пример:

Код
#include <sourcemod>  

new    iclient[MAXPLAYERS+1];

ShowMyMenu(client)  
{  
  new Handle:menu = CreateMenu(Select_Menu);  
  SetMenuTitle(menu, "Выберите Игрока:\n \n");  
  decl String:userid[15], String:name[32];  
  for (new i = 1; i <= MaxClients; i++)  
  {  
   if (IsClientInGame(i))  
   {  
    IntToString(GetClientUserId(i), userid, 15);  
    GetClientName(i, name, 32);  
    AddMenuItem(menu, userid, name);  
   }  
  }  
  DisplayMenu(menu, client, 0);  
}  

public Select_Menu(Handle:menu, MenuAction:action, client, option)  
{  
  if (action == MenuAction_End)  
  {  
   CloseHandle(menu);  
   return;  
  }  
   
  if (action != MenuAction_Select)  
   return;  
   
  decl String:userid[15];  
  GetMenuItem(menu, option, userid, 15);  
  //Вот мы получили ID цели
  new target = GetClientOfUserId(StringToInt(userid));  
  if (target > 0)  
  {  
   //Записываем в переменную клиента ID цели (Можно в переменную цели записать ID клиента)
   iclient[client] = target;
   //iclient[target] = client;
  }  
}


Объясняю я хреново, но надеюсь сейчас все понятно.
 
BarD Дата: Четверг, 13.02.2014, 13:02:20 | Сообщение # 5
Сообщений: 942
Репутация: 132 [ +/- ]
Норм) Спасибо! Сейчас буду тестить)
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » 2 цели в Меню
  • Страница 1 из 1
  • 1
Поиск: