ЙОДА
|
Дата: Пятница, 06.07.2012, 01:32:37 | Сообщение # 1 |
|
Сообщений: 41
Репутация: 0 [ +/- ]
|
|
Code public menu1(i,String:player_steamid[25]) {
new Handle:p = CreateMenu(Handler_menu1); decl String:text[350];
Format(text,sizeof(text),"ololotitle"); SetMenuTitle(p, text); AddMenuItem(p,player_steamid, "ololo1"); AddMenuItem(p,player_steamid, "ololo2"); AddMenuItem(p,player_steamid, "ololo3"); AddMenuItem(p,player_steamid, "ololo4"); AddMenuItem(p,player_steamid, "ololo5"); AddMenuItem(p,player_steamid, "ololo6");
SetMenuExitBackButton(p, true); SetMenuExitButton(p, true); DisplayMenu(p, i, 0); }
public Handler_menu1(Handle:menu, MenuAction:action, i, z) { if (action == MenuAction_End) { CloseHandle(menu); return; } if (action == MenuAction_Cancel) { if (z == MenuCancel_ExitBack) { decl String:player_steamid[25]; GetMenuItem(menu, z, player_steamid, 25); к_какому_то_бобру(i, player_steamid); } } if (action == MenuAction_Select) { decl String:player_steamid[25]; GetMenuItem(menu, z, player_steamid, 25);
menu2(i,player_steamid) } }
public menu2(i,String:player_steamid[25]) {
new Handle:p = CreateMenu(Handler_menu2); decl String:text[350];
Format(text,sizeof(text),"trololotitle"); SetMenuTitle(p, text); AddMenuItem(p,player_steamid, "trololo1"); AddMenuItem(p,player_steamid, "trololo2"); AddMenuItem(p,player_steamid, "trololo3"); AddMenuItem(p,player_steamid, "trololo4"); AddMenuItem(p,player_steamid, "trololo5"); AddMenuItem(p,player_steamid, "trololo6");
SetMenuExitBackButton(p, true); SetMenuExitButton(p, true); DisplayMenu(p, i, 0);
}
public Handler_menu2(Handle:menu, MenuAction:action, i, z) { if (action == MenuAction_End) { CloseHandle(menu); return; } if (action == MenuAction_Cancel) { if (z == MenuCancel_ExitBack) { decl String:player_steamid[25]; GetMenuItem(menu, z, player_steamid, 25); menu1(i, player_steamid); } } if (action == MenuAction_Select) { decl String:player_steamid[25]; GetMenuItem(menu, z, player_steamid, 25);
menu2(i,player_steamid) } }
Объясняю порядок действий и саму проблему:
Какая-то процедура вызывает menu1(i,String:player_steamid[25]). menu1 помещает player_steamid в каждый пункт себя, после чего его хэндлер вызывает menu2. menu2 получает все тот же самый player_steamid. При выборе любого пунка в menu2, оно закрывается и открывается вновь, и опять же player_steamid есть и известен при каждом вызове.
При нажатии кнопки Назад, происходит вызов menu1 с тем же параметром player_steamid, но дело в том, что в данном случае, строка player_stemid теряется и menu1 загружается с параметрами (i,"рандомные_символы").
Очень не нравится эта проблема, мешающая построению красивых многоуровневых меню.
Сообщение отредактировал ЙОДА - Пятница, 06.07.2012, 20:57:57 |
|
| |
Scarface_slv
|
Дата: Пятница, 06.07.2012, 16:16:56 | Сообщение # 2 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
а сохранять его в глобальной переменной не пробывал?
|
|
| |
ЙОДА
|
Дата: Пятница, 06.07.2012, 17:14:36 | Сообщение # 3 |
|
Сообщений: 41
Репутация: 0 [ +/- ]
|
|
Попробовать то можно, но глупо ради одного меню, в котором сидит злой бобёр, создавать лишний массив строк.Добавлено (06.07.2012, 16:36:34) --------------------------------------------- Ведь ошибки в коде я не вижу, а значит есть какая-то бяка, про которую знает только вэсэшечка, который сидит и смеется надо мной) Добавлено (06.07.2012, 17:14:36) --------------------------------------------- Глупый бобёр крадет мою хорошенькую переменную и забивает её каким-то калом
|
|
| |
_wS_
|
Дата: Пятница, 06.07.2012, 21:36:13 | Сообщение # 4 |
|
Ничего никто не крадет (в след раз, если столько кода, прикрепляй файл, неприятно поправлять отступы)
Гости не могут скачивать файлы
|
|
|
| |
ЙОДА
|
Дата: Пятница, 06.07.2012, 22:06:49 | Сообщение # 5 |
|
Сообщений: 41
Репутация: 0 [ +/- ]
|
|
хм, а что такое #pragma semicolon 1 ?
|
|
| |
_wS_
|
Дата: Пятница, 06.07.2012, 22:19:14 | Сообщение # 6 |
|
|
|
| |
ЙОДА
|
Дата: Пятница, 06.07.2012, 22:33:10 | Сообщение # 7 |
|
Сообщений: 41
Репутация: 0 [ +/- ]
|
|
Окей ;)
|
|
| |