2 цели в Меню
| |
BarD
|
Дата: Вторник, 11.02.2014, 15:11:37 | Сообщение # 1 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Итак, у меня есть менюшка: Код 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? Помогите, кто знает!
|
|
| |
Darkeneez
|
Дата: Вторник, 11.02.2014, 15:25:32 | Сообщение # 2 |
|
Сообщений: 221
Репутация: 18 [ +/- ]
|
|
Ну, дружище, подумай хорошенько, тут же много вариантов. Хоть создать переменную для клиента, где будет его цель(target) запоминаться, хоть DataPack используй.
|
|
| |
BarD
|
Дата: Среда, 12.02.2014, 15:04:06 | Сообщение # 3 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Можешь наглядно на моем примерчике объяснить, а то я не понимаю)))
|
|
| |
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 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Норм) Спасибо! Сейчас буду тестить)
|
|
| |
|