Создание Меню
Naykon
Дата: Суббота, 20.10.2012, 12:28:48 | Сообщение # 16
Сообщений: 439
Репутация: -4 [ +/- ]
ну да ну да))) спсДобавлено (20.10.2012, 12:28:48) --------------------------------------------- Как совершидь действие если пункт меню не был выбран?
scorpion2904
Дата: Вторник, 30.10.2012, 16:40:41 | Сообщение # 17
Сообщений: 68
Репутация: 5 [ +/- ]
Как сделать, чтобы опция в меню называлась значением переменной? Например, если s[client] = 12, то опция в меню у этого игрока тоже будет 12. Пробовал сделать так: Code
decl String:sp[3]; IntToString(s[client], sp, 3); AddMenuItem(menu, "", "%s", sp);
, но не получилось
Scarface_slv
Дата: Вторник, 30.10.2012, 22:28:45 | Сообщение # 18
Сообщений: 737
Репутация: 61 [ +/- ]
AddMenuItem(menu, sp, sp);
scorpion2904
Дата: Среда, 31.10.2012, 09:05:28 | Сообщение # 19
Сообщений: 68
Репутация: 5 [ +/- ]
А если после sp идет еще текст?
Scarface_slv
Дата: Среда, 31.10.2012, 09:26:49 | Сообщение # 20
Сообщений: 737
Репутация: 61 [ +/- ]
decl String:format[50]; Format(format, sizeof(format), "бла бла бла %d бла бла", s[client]); AddMenuItem(menu, format, format);
wISE
Дата: Четверг, 08.11.2012, 20:58:18 | Сообщение # 21
Сообщений: 1
Репутация: 0 [ +/- ]
Помогите создать такое меню: При команде "move" всех игроков перекидывает за наблюдателей. И появляется меню с выбором 1 игрока из всех наблюдателей за кт с названем меню "2 игрок", потом опять появляется меню с выбором 2 игрока за т с названем меню "2 игрок". Заранее благодарю, сегодня с обеда сижу и ничего не получается.
Сообщение отредактировал wISE - Четверг, 08.11.2012, 20:59:34
Scarface_slv
Дата: Суббота, 10.11.2012, 12:43:08 | Сообщение # 22
Сообщений: 737
Репутация: 61 [ +/- ]
А как те помочь? За тебя все написать? Может пример своей работы кинешь там где не получается там и помогут
Naykon
Дата: Четверг, 06.12.2012, 14:18:11 | Сообщение # 23
Сообщений: 439
Репутация: -4 [ +/- ]
Code
QuestionsRules(client) { new Handle:SkinMenu2 = CreateMenu(QuestionsRulesSelect); if (Question == 1) { SetMenuTitle(SkinMenu2, "Вопрос 1\n \n"); AddMenuItem(SkinMenu2, "1", "ответ1"); AddMenuItem(SkinMenu2, "2", "ответ1"); AddMenuItem(SkinMenu2, "3", "ответ1"); } if (Question == 2) { SetMenuTitle(SkinMenu2, "Вопрос 1\n \n"); AddMenuItem(SkinMenu2, "1", "ответ1"); AddMenuItem(SkinMenu2, "2", "ответ1"); AddMenuItem(SkinMenu2, "3", "ответ1"); } if (Question == 3) SetMenuTitle(SkinMenu2, "Вопрос 1\n \n"); AddMenuItem(SkinMenu2, "1", "ответ1"); AddMenuItem(SkinMenu2, "2", "ответ1"); } if (Question == 4) { SetMenuTitle(SkinMenu2, "Вопрос 1\n \n"); AddMenuItem(SkinMenu2, "1", "ответ1"); AddMenuItem(SkinMenu2, "2", "ответ1"); AddMenuItem(SkinMenu2, "3", "ответ1"); } SetMenuExitButton(SkinMenu2, false); DisplayMenu(SkinMenu2, client, 8); } public QuestionsRulesSelect(Handle:menu, MenuAction:action, client, i) { if (action == MenuAction_End) { PrintToChatAll("Убил менюху"); CloseHandle(menu); return; } if (action == MenuAction_Select) { decl String:Info[300]; decl String:Skin[300]; GetMenuItem(menu, i, Info, sizeof(Info), _, Skin, sizeof(Skin)); if (Question == 1) { if (StrEqual(Info, "2") || StrEqual(Info, "3")) { CS_SwitchTeam(client, 2); CS_RespawnPlayer(client); PrintToChatAll("%N валит", client); } else { PrintToChatAll("%N правильно.", client); ChTeam[client] = 1; } } if (Question == 2) { if (StrEqual(Info, "1") || StrEqual(Info, "3")) { CS_SwitchTeam(client, 2); CS_RespawnPlayer(client); PrintToChatAll("%N валит", client); } else { PrintToChatAll("%N правильно", client); ChTeam[client] = 1; } } if (Question == 3) { if (StrEqual(Info, "2")) { CS_SwitchTeam(client, 2); CS_RespawnPlayer(client); PrintToChatAll("%N валит.", client); } else { PrintToChatAll("%N правильно", client); ChTeam[client] = 1; } } if (Question == 4) { if (StrEqual(Info, "1") || StrEqual(Info, "3")) { CS_SwitchTeam(client, 2); CS_RespawnPlayer(client); PrintToChatAll("%N валит.", client); } else { PrintToChatAll("%N правильно", client); ChTeam[client] = 1; } } } else if (action == MenuAction_Cancel || i == MenuCancel_Timeout) { CS_SwitchTeam(client, 2); CS_RespawnPlayer(client); PrintToChatAll("Игрок %N выкинут", client); } }
В общем радмомом для каждого игрока СТ выбирается вопрос если он отвечает не правильно то переходит за другую команду... По началу раунда все работает вроде ок. Но потом когда отвечаешь правильно - защитывется как будто ты не праивльно ответил... я думаю это связано с тем что несколько игроков отвечают на вопросы а ответы ихние перемешиваются... но это предположение.. Почему так происходит?
volodya
Дата: Суббота, 06.04.2013, 19:10:20 | Сообщение # 24
Сообщений: 14
Репутация: 0 [ +/- ]
Как сделать чтобы при выборе опции ON или OFF текст переходил с [ ] на [X] ? Дайте пожалуйста не большой пример. Мой скелет меню:
Код
#pragma semicolon 1 #include <sourcemod> public OnPluginStart() { RegConsoleCmd ("menu",Command_menu); } public Action:Command_menu (client,args) { Menu (client); } public Menu (client) { new Handle:menu = CreateMenu (cmd_menu); SetMenuTitle (menu, "Setting menu \n \n"); AddMenuItem (menu, "", "Option"); DisplayMenu (menu, client, 0); } public cmd_menu (Handle:menu, MenuAction:action, client, option) { if (option == 0 ) Option (client); } public Option (client) { new Handle:menu = CreateMenu (cmd_menu1); SetMenuTitle (menu, "Setting option: \n \n"); AddMenuItem (menu, "", "ON"); AddMenuItem (menu, "", "OFF"); DisplayMenu (menu, client, 0); } public cmd_menu1 (Handle:menu, MenuAction:action, client, option) { if (action == MenuAction_Select) { if (option == 0 ) { } if (option == 1 ) { } } }
Сообщение отредактировал volodya - Пятница, 24.01.2014, 21:33:54
_wS_
Дата: Понедельник, 08.04.2013, 15:52:48 | Сообщение # 25
Цитата (volodya )
текст переходил с [ ] на [X]
Это непонятно (для меня), что ты имеешь в виду. И нужно не забывать делать if (action == MenuAction_End) CloseHandle(menu);
Darkeneez
Дата: Понедельник, 08.04.2013, 15:54:29 | Сообщение # 26
Сообщений: 221
Репутация: 18 [ +/- ]
Как я понял было в меню []привет, а должно после нажатия быть [X]привет.
_wS_
Дата: Понедельник, 08.04.2013, 16:26:54 | Сообщение # 27
Нельзя просто изменить текст, нужно использовать RemoveMenuItem и InsertMenuItem.
volodya
Дата: Понедельник, 08.04.2013, 18:35:54 | Сообщение # 28
Сообщений: 14
Репутация: 0 [ +/- ]
Цитата (Darkeneez )
Как я понял было в меню []привет, а должно после нажатия быть [X]привет.
да, так надо сделать. Цитата (_wS_ )
Нельзя просто изменить текст, нужно использовать RemoveMenuItem и InsertMenuItem.
Дайте пример, пожалуйста.
_wS_
Дата: Понедельник, 08.04.2013, 19:33:27 | Сообщение # 29
Цитата (volodya )
Дайте пример, пожалуйста.
В таких случаях нужно самому тестировать. Код
// item - позиция опции // Добавляем новую опцию, которая будет в этой же позиции InsertMenuItem(menu, item, "то, что тут было раньше", "новый текст"); // Прошлая сдвинулась вперед на 1 шаг, удаляем ее RemoveMenuItem(menu, item + 1);
Или лучше: Код
if (InsertMenuItem(menu, item, "то, что тут было раньше", "новый текст")) { RemoveMenuItem(menu, item + 1); }
volodya
Дата: Понедельник, 08.04.2013, 20:06:31 | Сообщение # 30
Сообщений: 14
Репутация: 0 [ +/- ]
Спасибо