Добрый день! Прошу подсказать как можно переделать меню сервера что-бы оно открывалось не через консольную команду "menu" а через чат say /menu :huh: Код: #include #include #define PLUGIN "Menu Servera" #define VERSION "1.0" #define AUTHOR "Ghost" #define MAXMAPS 500 new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0 new keys2 = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0 new const s_Maps_Array[MAXMAPS][101] public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_menu("Menu 1", keys, "func_menu") register_concmd("menu", "Server_Menu") register_menu("Menu 2", keys2, "func_menu2") register_concmd("", "Server_Menu2") new s_Map_Name[101] new i_Directory=open_dir("maps",s_Map_Name,100) if(i_Directory) { new d_Line new d_Len while(next_file(i_Directory,s_Map_Name,100)) { if((containi(s_Map_Name,".bsp")!=-1)&&(containi(s_Map_Name,".ztmp")==-1)) { d_Len=strlen(s_Map_Name) format(s_Map_Name,d_Len-4,"%s",s_Map_Name) s_Maps_Array[d_Line]=s_Map_Name d_Line++ } } } } public client_authorized(id) { client_cmd(id, "bind ^"F5^" ^"menu^"") } public Server_Menu(id) { static menu[650], iLen iLen = 0 iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\r*** \yИгровое меню \r***^n^n") iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \yПравила \wСервера^n") keys |= MENU_KEY_1 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \yПравила \wАдминистратора^n") keys |= MENU_KEY_2 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \yУзнать IP \wсервера^n") keys |= MENU_KEY_3 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wКупить \rАдминку^n") keys |= MENU_KEY_4 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wКупить \rVIP^n") keys |= MENU_KEY_5 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \wСистема \yдостижений^n") keys |= MENU_KEY_6 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \yНоминировать \wкарту^n") keys |= MENU_KEY_7 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \yГолосование за смену \wкарты^n") keys |= MENU_KEY_8 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n^n\r9. \wДалее^n") keys |= MENU_KEY_9 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход") keys |= MENU_KEY_0 show_menu(id, keys, menu, -1, "Menu 1") return PLUGIN_HANDLED } public func_menu(id, key) { switch(key) { case 0: { show_motd(id, "pravila.txt", "Pravila") } case 1: { show_motd(id, "adminpravila.txt", "Admin_pravila") } case 2: { Color_Print(id, "!yIP адрес сервера !g77.777.777.777:27015") } case 3: { client_cmd(id, "say /adminka") } case 4: { client_cmd(id, "say /vip") } case 5: { client_cmd(id, "say /ach") } case 6: { nominated_maps(id) } case 7: { client_cmd(id, "say /rtv") } case 8: { Server_Menu2(id) } } return PLUGIN_HANDLED } public Server_Menu2(id) { static menu[650], iLen iLen = 0 iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\r*** \yИгровое меню \r***^n^n") iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \yЗаткнуть \wигрока^n") keys2 |= MENU_KEY_1 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \yЗабанить \wигрока^n") keys2 |= MENU_KEY_2 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \yОбнулить \wсчет и деньги^n") keys2 |= MENU_KEY_3 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wУзнать свой \yранк^n") keys2 |= MENU_KEY_4 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \yСайт \wпроекта^n") keys2 |= MENU_KEY_5 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \wГруппа \y[В]Контакте^n") keys2 |= MENU_KEY_6 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \wГруппа в \ySteam^n") keys2 |= MENU_KEY_7 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \yКарты \wсервера") keys2 |= MENU_KEY_8 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n^n\r9. \wНазад^n") keys2 |= MENU_KEY_9 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход") keys2 |= MENU_KEY_0 show_menu(id, keys2, menu, -1, "Menu 2") return PLUGIN_HANDLED } public func_menu2(id, key) { switch(key) { case 0: { client_cmd(id, "say /mute") } case 1: { client_cmd(id, "say /voteban") } case 2: { client_cmd(id, "say /rs") } case 3: { client_cmd(id, "say /rank") } case 4: { Color_Print(id, "!yС Удовольствием ждем Вас на нашем сайте !gwww.site.Ru") } case 5: { Color_Print(id, "!gПосетите группу [В]Контакте !twww.vk.com/") } case 6: { Color_Print(id, "!tНаша группа в steam !ghttp://steamcommunity.com/") } case 7: { show_motd(id, "maplist.txt", "Maplist") } case 8: { Server_Menu(id) } } return PLUGIN_HANDLED } public nominated_maps(id) { new Nominated_Maps = menu_create("\r*** \yНоминация карт \r***","Nominated_Maps_Func") new s_Line[6] for(new i=0;i
Здравствуй. register_menu("Menu 1", keys, "func_menu") register_concmd("menu", "Server_Menu") register_menu("Menu 2", keys2, "func_menu2") register_concmd("", "Server_Menu2") Тут регистрация набора для открытия меню.
Ответ думаешь он допетрит, что надо с этим делать? Да и register_concmd - не совсем то, что надо для команды say Автор, добавь строчку ниже того, что написал Olejan4ik: Код: register_clcmd("say /menu", "Server_Menu");
Хороший код можешь menu2 добавить, второе меню будет работать register_concmd("say /menu2", "Server_Menu2") Код: #include #include #define PLUGIN "Menu Servera" #define VERSION "1.0" #define AUTHOR "Ghost" #define MAXMAPS 500 new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0 new keys2 = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0 new const s_Maps_Array[MAXMAPS][101] public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_menu("Menu 1", keys, "func_menu") register_concmd("say /menu", "Server_Menu") register_menu("Menu 2", keys2, "func_menu2") register_concmd("", "Server_Menu2") new s_Map_Name[101] new i_Directory=open_dir("maps",s_Map_Name,100) if(i_Directory) { new d_Line new d_Len while(next_file(i_Directory,s_Map_Name,100)) { if((containi(s_Map_Name,".bsp")!=-1)&&(containi(s_Map_Name,".ztmp")==-1)) { d_Len=strlen(s_Map_Name) format(s_Map_Name,d_Len-4,"%s",s_Map_Name) s_Maps_Array[d_Line]=s_Map_Name d_Line++ } } } } public client_authorized(id) { client_cmd(id, "bind ^"F5^" ^"say /menu^"") } public Server_Menu(id) { static menu[650], iLen iLen = 0 iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\r*** \yИгровое меню \r***^n^n") iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \yПравила \wСервера^n") keys |= MENU_KEY_1 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \yПравила \wАдминистратора^n") keys |= MENU_KEY_2 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \yУзнать IP \wсервера^n") keys |= MENU_KEY_3 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wКупить \rАдминку^n") keys |= MENU_KEY_4 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wКупить \rVIP^n") keys |= MENU_KEY_5 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \wСистема \yдостижений^n") keys |= MENU_KEY_6 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \yНоминировать \wкарту^n") keys |= MENU_KEY_7 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \yГолосование за смену \wкарты^n") keys |= MENU_KEY_8 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n^n\r9. \wДалее^n") keys |= MENU_KEY_9 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход") keys |= MENU_KEY_0 show_menu(id, keys, menu, -1, "Menu 1") return PLUGIN_HANDLED } public func_menu(id, key) { switch(key) { case 0: { show_motd(id, "pravila.txt", "Pravila") } case 1: { show_motd(id, "adminpravila.txt", "Admin_pravila") } case 2: { Color_Print(id, "!yIP адрес сервера !g77.777.777.777:27015") } case 3: { client_cmd(id, "say /adminka") } case 4: { client_cmd(id, "say /vip") } case 5: { client_cmd(id, "say /ach") } case 6: { nominated_maps(id) } case 7: { client_cmd(id, "say /rtv") } case 8: { Server_Menu2(id) } } return PLUGIN_HANDLED } public Server_Menu2(id) { static menu[650], iLen iLen = 0 iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\r*** \yИгровое меню \r***^n^n") iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \yЗаткнуть \wигрока^n") keys2 |= MENU_KEY_1 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \yЗабанить \wигрока^n") keys2 |= MENU_KEY_2 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \yОбнулить \wсчет и деньги^n") keys2 |= MENU_KEY_3 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wУзнать свой \yранк^n") keys2 |= MENU_KEY_4 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \yСайт \wпроекта^n") keys2 |= MENU_KEY_5 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \wГруппа \y[В]Контакте^n") keys2 |= MENU_KEY_6 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \wГруппа в \ySteam^n") keys2 |= MENU_KEY_7 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \yКарты \wсервера") keys2 |= MENU_KEY_8 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n^n\r9. \wНазад^n") keys2 |= MENU_KEY_9 iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход") keys2 |= MENU_KEY_0 show_menu(id, keys2, menu, -1, "Menu 2") return PLUGIN_HANDLED } public func_menu2(id, key) { switch(key) { case 0: { client_cmd(id, "say /mute") } case 1: { client_cmd(id, "say /voteban") } case 2: { client_cmd(id, "say /rs") } case 3: { client_cmd(id, "say /rank") } case 4: { Color_Print(id, "!yС Удовольствием ждем Вас на нашем сайте !gwww.site.Ru") } case 5: { Color_Print(id, "!gПосетите группу [В]Контакте !twww.vk.com/") } case 6: { Color_Print(id, "!tНаша группа в steam !ghttp://steamcommunity.com/") } case 7: { show_motd(id, "maplist.txt", "Maplist") } case 8: { Server_Menu(id) } } return PLUGIN_HANDLED } public nominated_maps(id) { new Nominated_Maps = menu_create("\r*** \yНоминация карт \r***","Nominated_Maps_Func") new s_Line[6] for(new i=0;i
Ответ А почему concmd? Ты думаешь, сервер тоже станет меню вызывать?) И зачем второе меню, если оно не является вторым, а только прододжает первое?