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, думаю почти все работают.
|
|
| |