|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
проблема с меню
|
|
FreeKILL | Дата: Вторник, 29.12.2009, 21:53:19 | Сообщение # 1 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| помогите, как сделать чтобы при вызове меню, когда нажимаеш на итем(функцию) меню не пропадала вот скрипт: Code /* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <amxmisc> #include <hamsandwich>
#define PLUGIN "menu_revive" #define VERSION "0.2" #define AUTHOR "~Free*.*KILL~"
new players[32],name[32],info[10],choice,menu,num,i
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /slap","func_slap",ADMIN_KICK,"") }
public func_slap(id,level,cid) { if(!cmd_access(id,level,cid,0)) return PLUGIN_HANDLED menu=menu_create("SlapPlayer","menu_handler") get_players(players,num,"b") for(i=0;i<num;i++) { get_user_name(players[i],name,31) num_to_str(players[i],info,9) menu_additem(menu,name,info) } menu_display(id,menu,0) return PLUGIN_HANDLED } public menu_handler(id,menu,item) { if(item==MENU_EXIT) return PLUGIN_HANDLED new data[32], iName[64],access, callback menu_item_getinfo(menu, item, access, data,31, iName, 63, callback) choice = str_to_num(data) ExecuteHamB( Ham_CS_RoundRespawn, choice) return 1 } заранее спс
|
|
| |
PomanoB | Дата: Вторник, 29.12.2009, 22:55:11 | Сообщение # 2 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Перед return 1 поставь menu_display(id,menu,0)
http://romanov4400.mybrute.com
|
|
| |
FreeKILL | Дата: Среда, 30.12.2009, 11:46:59 | Сообщение # 3 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| а как сделать чтобы кнопка MENU_BACK появлялась всегда, даже когда в списке меню только одна страница? Code #include <amxmodx> #include <amxmisc> #include <hamsandwich>
#define PLUGIN "menu_revive" #define VERSION "0.6" #define AUTHOR "~Free*.*KILL~"
new players[32],name[32],info[10],choice,menu,num,i
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /r","func_slap",ADMIN_KICK,"") }
public func_slap(id,level,cid) { if(!cmd_access(id,level,cid,0)) return PLUGIN_HANDLED menu=menu_create("SlapPlayer","menu_handler") get_players(players,num,"b") for(i=0;i<num;i++) { get_user_name(players[i],name,31) num_to_str(players[i],info,9) menu_additem(menu,name,info) menu_addblank(menu, -2) } menu_display(id,menu,0) return PLUGIN_HANDLED } public menu_handler(id,menu,item) { if(item==MENU_EXIT) return PLUGIN_HANDLED if(item==MENU_BACK) { menu_display(id,menu,0) } menu_item_setname(menu, MENU_BACK, O6HOBUTb) new data[32], iName[64],access, callback menu_item_getinfo(menu, item, access, data,31, iName, 63, callback) choice = str_to_num(data) ExecuteHamB( Ham_CS_RoundRespawn, choice) menu_display(id,menu,0) return 1 } хочется, чтобы выводилось меню, и была кнопка обновить(вместо MENU_BACK) которая будет показывать меню заново и называться "O6HOBUTb" . тоесть надо чтобы эта кнопка появлялась не только когда перешел на вторую страницу, а и когда есть только одна страница.
|
|
| |
PomanoB | Дата: Среда, 30.12.2009, 17:12:30 | Сообщение # 4 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Это нельзя сделать, если это так необходимо, надо использовать старую систему меню
http://romanov4400.mybrute.com
|
|
| |
FreeKILL | Дата: Среда, 30.12.2009, 17:31:52 | Сообщение # 5 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| жаль( а есть какой нибудь пример плагина со старой системой меню, где вывешен список игроков. Просто я не имею ни малейшего понятия как это можно сделать.
|
|
| |
PomanoB | Дата: Четверг, 31.12.2009, 00:42:20 | Сообщение # 6 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Посмотри в стандартных плагинах, кика, бана, admincmd.sma, plmenu.sma
http://romanov4400.mybrute.com
|
|
| |
FreeKILL | Дата: Четверг, 31.12.2009, 10:30:28 | Сообщение # 7 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| посмотрел, сделал, но тут теперь другая проблема))) список игроков вроде норм ещё поднастрою. а вот у меня никак не получается сделать кнопку "обновить" вроде все сделал верно, а где написать её имя и т д не понимаю( и еще почему-то когда нажимаю на игрока(в списке меню) возраждаются и я и тот игрок(а может быть даже и все, я просто проверял вдвоем на серве) вот код: Code #include <amxmodx> #include <amxmisc> #include <cstrike> #include <hamsandwich>
#define PLUGIN "ReviveMenu" #define VERSION "1.8" #define AUTHOR "~Free*.*KILL~" new g_menuPosition[33] new g_menuPlayers[33][32] new g_menuPlayersNum[33] new g_coloredMenus new keys = MENU_KEY_0|MENU_KEY_8 new menuBody[512]
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("amx_revive", "cmdReviveMenu", ADMIN_BAN, "") register_menucmd(register_menuid("Revive Menu"), 1023, "actionReviveMenu") }
public actionReviveMenu(id, key) { switch(key) { case 7: displayReviveMenu(id, g_menuPosition[id]) case 8: displayReviveMenu(id, ++g_menuPosition[id]) case 9: displayReviveMenu(id, --g_menuPosition[id]) default: { ///new player = g_menuPlayers[id][g_menuPosition[id] * 7 +key] ///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) new maxpl = get_maxplayers() for(new i=1;1<=maxpl;i++) { ExecuteHamB( Ham_CS_RoundRespawn, i) } displayReviveMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED }
displayReviveMenu(id, pos) { if (pos<0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new b = 0 new i new name[32] new start = pos * 7 if (start>=g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody,511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id , "REVIVE_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) new end = start + 7 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(end!=g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") show_menu(id,keys,menuBody,-1,"Revive Menu") } public cmdReviveMenu(id, level, cid) { if(!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED displayReviveMenu(id, g_menuPosition[id] = 0) return PLUGIN_HANDLED }
|
|
| |
PomanoB | Дата: Четверг, 31.12.2009, 11:00:45 | Сообщение # 8 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Quote (FreeKILL) for(new i=1;1<=maxpl;i++) { ExecuteHamB( Ham_CS_RoundRespawn, i) } Ты делаешь цикл по всем игрокам, потому и возрождаются все Надо просто ///new player = g_menuPlayers[id][g_menuPosition[id] * 7 +key] - раскомментировать new player = g_menuPlayers[id][g_menuPosition[id] * 7 +key] ExecuteHamB( Ham_CS_RoundRespawn, player )
http://romanov4400.mybrute.com
|
|
| |
FreeKILL | Дата: Четверг, 31.12.2009, 20:34:29 | Сообщение # 9 |
Подполковник
Группа: Пользователи
Сообщений: 143
Статус: Не в сети
| все, спс PomanoB! я все сделал, вроде хорошо работает) вот делюсь своими разработками, вдруг кому надо)Добавлено (31.12.2009, 20:34:29) --------------------------------------------- PS всех с новым годом)
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |