|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
обратная связь между несколькими меню
|
|
FreeKILL | Дата: Суббота, 02.01.2010, 14:46:36 | Сообщение # 1 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| никак не получается сделать связь между двумя меню(их будет больше, но щас хотябы 2 нужно сделать) вот код Code /* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <amxmisc> #include <hamsandwich>
#define PLUGIN "Admin Control" #define VERSION "3.6" //2 day #define AUTHOR "~Free*.*KILL~" new invisibly[33][2] new g_HmenuPosition[33] new g_RevmenuPosition[33] new g_SmenuPosition[33] new g_GrmenuPosition[33] new g_WmenuPosition[33] new g_GomenuPosition[33] new g_ImenuPosition[33] new g_ResmenuPosition[33] new g_menuPlayers[33][32] new g_menuPlayersNum[33] new menuBody[512] new g_coloredMenus new bool:g_menuREVOption[33] = false
#define keysmenu (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_dictionary("admin_control.txt") register_clcmd("admin_control", "showadmincontrol", ADMIN_IMMUNITY, "") register_menucmd(register_menuid("admincontrol"), keysmenu, "switchmenu") register_menucmd(register_menuid("Revive Menu2"), 1023, "actionReviveMenu") register_menucmd(register_menuid("HP Menu"), 1023, "actionHPMenu") register_menucmd(register_menuid("Speed Menu"), 1023, "actionSpeedMenu") register_menucmd(register_menuid("Gravity Menu"), 1023, "actionGravityMenu") register_menucmd(register_menuid("Weapons Menu"), 1023, "actionWeaponsMenu") register_menucmd(register_menuid("Godmode Menu"), 1023, "actionGodmodeMenu") register_menucmd(register_menuid("Invisibility Menu"), 1023, "actionInvisibilityMenu") register_menucmd(register_menuid("Restoration Menu"), 1023, "actionRestorationMenu") } public client_putinserver(id) { //if(is_user_bot(id)) //return PLUGIN_HANDLED //invisibly[id][0] } public showadmincontrol(id,level,cid) { if(!cmd_access(id,level,cid,1)) { client_print(id, print_chat, "%L", LANG_SERVER, "NO_ACCESS") return PLUGIN_HANDLED } g_menuREVOption[id] = false show_menu(id, keysmenu, "Admin Control^n^n1: Give Revive^n2: Give HP^n3: Give Speed^n4: Give Gravity^n5: Give Weapons^n6: Give GodMod^n7: Give Invisibility^n8: Give Restoration^n^n0: Exit", -1, "admincontrol") return PLUGIN_HANDLED } public switchmenu(id,key) { switch(key) { case 0: displayMRevive(id, g_RevmenuPosition[id] == 0) //1 case 1: displayMHp(id, g_HmenuPosition[id] == 0) //2 case 2: displayMSpeed(id, g_SmenuPosition[id] == 0) //3 case 3: displayMGravity(id, g_GrmenuPosition[id] == 0)//4 case 4: displayMWeapons(id, g_WmenuPosition[id] == 0)//5 case 5: displayMGodmode(id, g_GomenuPosition[id] == 0)//6 case 6: displayMInvisibility(id, g_ImenuPosition[id] == 0)//7 case 7: displayMRestoration(id, g_ResmenuPosition[id] == 0)//8 case 8: client_cmd(id, "admin_control")//9 case 9: { menu_destroy(register_menuid("admincontrol")) return PLUGIN_HANDLED //0 } } return PLUGIN_HANDLED } displayMRevive(id, pos) { if (pos<0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id], "b") new b = 0 new i new name[32] new start = pos * 7 if (start>=g_menuPlayersNum[id]) start = pos = g_RevmenuPosition[id] = 0 new len = format(menuBody,511, g_coloredMenus ? "\r%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id , "REVIVE_MENU2", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) new end = start + 7 new keys = MENU_KEY_0|MENU_KEY_8 if(end>g_menuPlayersNum[id]) end=g_menuPlayersNum[id] for (new a = start; a< end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i !=id)) { ++b if(g_coloredMenus) len+=format(menuBody[len], 511-len, "\d%d. %s^n\w", b , name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) if (is_user_admin(i)) len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name) else len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } if(g_menuREVOption[id] == false) len += format(menuBody[len], 511-len, "^n8. \g%L^n", id, "REVIVE_ONE") if(g_menuREVOption[id] == true) len += format(menuBody[len], 511-len, "^n8. \g%L^n", id, "REVIVE_ALL") if(end!=g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE2", id, pos ? "BACK2" : "EXIT2") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK2" : "EXIT2") show_menu(id,keys,menuBody,-1,"Revive Menu2") } public actionReviveMenu(id, key) { switch(key) { case 7: { if(g_menuREVOption[id]== true) { g_menuREVOption[id] = false displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } else { g_menuREVOption[id] = true displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } return PLUGIN_HANDLED } case 8: displayMRevive(id, ++g_RevmenuPosition[id]) case 9: { displayMRevive(id, --g_RevmenuPosition[id]) } default: { new player = g_menuPlayers[id][g_RevmenuPosition[id] * 7 +key] if(g_menuREVOption[id] == false) { if(!is_user_alive(player)) { ///new name[32], name2[32], authid[32], authid2[32] ///get_user_name(player, name2, 31) ///get_user_authid(id, authid, 31) ///get_user_authid(player, authid2,31) ///get_user_name(id,name,31) ExecuteHamB( Ham_CS_RoundRespawn, player) displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } else { displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } } if(g_menuREVOption[id] == true) { //new maxpl = get_maxplayers() new in, playerCount, player1 new players1[32] get_players(players1, playerCount, "b") for (in=0; in< playerCount; in++) { player1 = players1[in] ExecuteHamB( Ham_CS_RoundRespawn, player1) client_print(0, print_center, "%L", LANG_SERVER, "REVIVE_ALL2") displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } } } return PLUGIN_HANDLED } displayMHp(id, pos) { } public actionHPMenu(id, key) { } displayMSpeed(id, pos) { } public actionSpeedMenu(id, key) { } displayMGravity(id, pos) { } public actionGravityMenu(id, key) { } displayMWeapons(id, pos) { } public actionWeaponsMenu(id, key) { } displayMGodmode(id, pos) { } public actionGodmodeMenu(id, key) { } displayMInvisibility(id, pos) { } public actionInvisibilityMenu(id, key) { } displayMRestoration(id, pos) { } public actionRestorationMenu(id, key) { } никак не получается сделать чтобы из меню register_menuid("Revive Menu2") когда нажимаешь эксит чтобы выходило на меню изначальное register_menuid("admincontrol") кто что знает помогите)
|
|
| |
Extasy | Дата: Суббота, 02.01.2010, 15:36:54 | Сообщение # 2 |
Лейтенант
Группа: Пользователи
Сообщений: 61
Статус: Не в сети
| Code case 9: // кнопка exit { client_cmd(id, "admin_control") }
|
|
| |
FreeKILL | Дата: Суббота, 02.01.2010, 20:51:20 | Сообщение # 3 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| ^^)))) это я в первую очередь проверил)) если так сделать, получится что если у меня две страницы игроков(в меню register_menuid("Revive Menu2")) то когда я перейду на вторую, у меня не будет кнопки BACK а только кнопка exit для перехода в меню admincontrol если говорить по простому, то если сделать так как ты предлагаешь у меня не будет функции BACK (для перехода назад по страницам меню) . а без этой функции сам понимаешь получится не очень корректно.Добавлено (02.01.2010, 20:37:20) --------------------------------------------- самое главное для меня это найти при каком g_RevmenuPosition[id] будет включаться кнопка exit, а не back. чтобы настроить как нить... я сам сделал меню, а все равно не понимаю) Добавлено (02.01.2010, 20:51:20) --------------------------------------------- чтобы было проще искать сказу говорю, главное это displayMRevive(id, pos) функция, там всё это. только немогу найти где именно)
|
|
| |
PomanoB | Дата: Суббота, 02.01.2010, 22:18:22 | Сообщение # 4 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Code public actionReviveMenu(id, key) { switch(key) { case 7: { if(g_menuREVOption[id]== true) { g_menuREVOption[id] = false displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } else { g_menuREVOption[id] = true displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } return PLUGIN_HANDLED } case 8: displayMRevive(id, ++g_RevmenuPosition[id]) case 9: { --g_RevmenuPosition[id] if (g_RevmenuPosition[id]) displayMRevive(id, --g_RevmenuPosition[id]) else client_cmd(id, "admin_control") } default: { new player = g_menuPlayers[id][g_RevmenuPosition[id] * 7 +key] if(g_menuREVOption[id] == false) { if(!is_user_alive(player)) { ///new name[32], name2[32], authid[32], authid2[32] ///get_user_name(player, name2, 31) ///get_user_authid(id, authid, 31) ///get_user_authid(player, authid2,31) ///get_user_name(id,name,31) ExecuteHamB( Ham_CS_RoundRespawn, player) displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } else { displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } } if(g_menuREVOption[id] == true) { //new maxpl = get_maxplayers() new in, playerCount, player1 new players1[32] get_players(players1, playerCount, "b") for (in=0; in< playerCount; in++) { player1 = players1[in] ExecuteHamB( Ham_CS_RoundRespawn, player1) client_print(0, print_center, "%L", LANG_SERVER, "REVIVE_ALL2") displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } displayMRevive(id, g_RevmenuPosition[id]) return PLUGIN_HANDLED } } } return PLUGIN_HANDLED } Так попробуй
http://romanov4400.mybrute.com
|
|
| |
FreeKILL | Дата: Воскресенье, 03.01.2010, 10:27:24 | Сообщение # 5 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| если я неошибаюсь, то по твоему коду g_RevmenuPosition[id] два раза уменьшается а потом уже и меню показывается. Добавлено (03.01.2010, 10:16:20) --------------------------------------------- да, я проверил. теперь действительно непоявляется список игрков) но у меня два способа в рукаве) Добавлено (03.01.2010, 10:21:57) ---------------------------------------------
Code case 9: { --g_RevmenuPosition[id] if (g_RevmenuPosition[id]) displayMRevive(id, --g_RevmenuPosition[id]) else client_cmd(id, "admin_control") } Code case 9: { --g_RevmenuPosition[id] if (g_RevmenuPosition[id]) displayMRevive(id, g_RevmenuPosition[id]) else client_cmd(id, "admin_control") } эти два способа не прокатили, ща попробую так Code displayMRevive(id, pos) { if (pos < 0) //при какой позиции страницы будет запускаться меню client_cmd(id, "admin_control") Добавлено (03.01.2010, 10:27:24) --------------------------------------------- во, теперь все работает)) наконец-то))
|
|
| |
PomanoB | Дата: Воскресенье, 03.01.2010, 10:54:42 | Сообщение # 6 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Quote (FreeKILL) если я неошибаюсь, то по твоему коду g_RevmenuPosition[id] два раза уменьшается а потом уже и меню показывается. Случайно, забыл убрать)) Вот так надо было Code case 9: { --g_RevmenuPosition[id] if (g_RevmenuPosition[id] >= 0 ) displayMRevive(id, g_RevmenuPosition[id]) else client_cmd(id, "admin_control") } По сути тоже самое, но чуточку оптимальнее, не вызывается лишний раз displayMRevive
http://romanov4400.mybrute.com
|
|
| |
| AMX Mod X Russian Community © 2006-2025 | |
|
| |