Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

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

  • Страница 1 из 1
  • 1
MenuAction проблемка.
Yeti Дата: Понедельник, 04.06.2012, 19:28:36 | Сообщение # 1
Сообщений: 14
Репутация: 0 [ +/- ]
Доброго времени суток)
У меня небольшая проблема возникла, мне надо переместить игрока в команду, когда у игрока закрылось меню по таймауту, вот что я сдел, но это не работает:
Code
public MenuHandler(Handle:menu, MenuAction:action, client, option)  
{  
  if (action == MenuCancel_Timeout){
   PrintToChatAll("Timeout");
   new target = GetRandomInt(1,GetPlayerCount());
   while (true){
    if (target != TCap && target != CTCap && GetClientTeam(target) < 2) break;
    target = GetRandomInt(1,GetPlayerCount());
   }
   ChangeTeam(target, GetClientTeam(client),true);   
  }
     if (action == MenuAction_End)  
     {
         CloseHandle(menu);  
         return;  
     }  
     if (action == MenuAction_Select)
  {  
     decl String:userid[15];  
     GetMenuItem(menu, option, userid, 15);  
     new target = GetClientOfUserId(StringToInt(userid));  
     if (target > 0)  
     {  
   PlayersChose++;
   ChangeTeam(target, GetClientTeam(client),true);
   PrintToChatAll("Players %d",PlayersChose);
   PrintToChatAll("Players_all %d",GetClientCount(false)-2);
   if (PlayersChose == GetClientCount(false)-2)
   {
    PrintToChatAll("%t", "Mix Ready", GREEN, DEFAULT);
    ServerCommand("forcestart");
    CloseHandle(menu);
    return;
   }
     }  
  if (GetClientTeam(client) == 2) ChosePlayer(3);
  if (GetClientTeam(client) == 3) ChosePlayer(2);
  CloseHandle(menu);
  }
}
 
_wS_ Дата: Понедельник, 04.06.2012, 19:52:17 | Сообщение # 2
Code
public MenuHandler(Handle:menu, MenuAction:action, client, reason)   
{   
     if (action == MenuAction_Cancel && reason == MenuCancel_Timeout)
     {
         PrintToChatAll("MenuCancel_Timeout");
         ChangeClientTeam(client, 1);
     }

     // Если это CreateMenu и оно не глобальное, не забывай убивать его (только внутри MenuAction_End)
     else if (action == MenuAction_End) CloseHandle(menu);
}

new target = GetRandomInt(1,GetPlayerCount()); - это глупо, потому что возвращает всего лишь количество игроков на сервере и индекс игрока может быть больше этого числа.

// Это тоже глупо, смотри эту тему

Code
if (GetClientTeam(client) == 2) ChosePlayer(3);  
if (GetClientTeam(client) == 3) ChosePlayer(2);
 
Yeti Дата: Понедельник, 04.06.2012, 20:01:56 | Сообщение # 3
Сообщений: 14
Репутация: 0 [ +/- ]
Спасибо, а как тогда получить случайного игрока?
А еще вопрос, если меню отправляется боту, то действует таймаут?


Сообщение отредактировал Yeti - Понедельник, 04.06.2012, 20:09:30
 
_wS_ Дата: Понедельник, 04.06.2012, 21:04:18 | Сообщение # 4
Quote (Yeti)
Спасибо, а как тогда получить случайного игрока?

урок

Quote (Yeti)
А еще вопрос, если меню отправляется боту, то действует таймаут?

Думаю да, но отправлять меню боту.. В этом почти всегда нет смысла.
 
Yeti Дата: Вторник, 05.06.2012, 13:34:11 | Сообщение # 5
Сообщений: 14
Репутация: 0 [ +/- ]
Согласен, но в моем случае это нужно

Добавлено (05.06.2012, 13:34:11)
---------------------------------------------
Возник еще такой вопрос: а можно как-нибудь узнать какие функции см работают на 34 версии, а какие нет?

 
_wS_ Дата: Вторник, 05.06.2012, 16:46:14 | Сообщение # 6
Зависит от версии SM, думаю почти все работают.
 
  • Страница 1 из 1
  • 1
Поиск: