Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Меню: пункты на другой странице

[РЕШЕНО]
Статус пользователя Fraig
сообщение 1.7.2015, 14:37
Сообщение #1
Стаж: 14 лет

Сообщений: 93
Благодарностей: 7
Полезность: < 0

Делаю меню для своего сервера по этому уроку Создание менюшек. Столкнулся с проблемой. Как сделать пункты на другой странице? В уроке показано, что для перехода нужно добавить menu_setprop( menu,MPROP_PERPAGE, число пунктов на одной странице), но а как выбирать те пункты? Объясните пожалуйста. Другими словами: в меню AdminMenu нужно добавить больше 9 пунктов. И еще, как сделать проверку сразу двух флагов?

Код
Код:
#include <amxmodx>

#define PLUGIN_NAME "AllMenu"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "Fraig"

new PlayerMenu
new VipMenu
new AdminMenu

public plugin_init()
{

register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
// - Меню Игрока
PlayerMenu = menu_create("Меню игрока", "player_menu"); // помещяем информацию

menu_additem(PlayerMenu, "Обнулить счет") // таким образом, можна добавить пункты
menu_additem(PlayerMenu, "Меню бонусов")
menu_additem(PlayerMenu, "Пожаловаться на игрока")
menu_addblank(PlayerMenu, -1) // Добавить ПРОПУСК после пункта меню (пустая строка)
menu_additem(PlayerMenu, "Контакты")

register_clcmd("say /menu", "show_PlayerMenu");

// - Меню VIP-игрока
VipMenu = menu_create("Меню VIP-игрока", "vip_menu");

menu_additem(VipMenu, "Меню оружия")
menu_additem(VipMenu, "Обнулить счет")
menu_additem(VipMenu, "Меню бонусов")
menu_additem(VipMenu, "Пожаловаться на игрока")
menu_additem(VipMenu, "Предупредить игрока")
menu_additem(VipMenu, "Голосовать за бан игрока")

register_clcmd("say /vmenu", "show_VipMenu");

// - Меню администратора
AdminMenu = menu_create("Меню администратора", "admin_menu");

menu_additem(AdminMenu, "Обнулить счет") //1
menu_additem(AdminMenu, "Меню бонусов") //2
menu_addblank(AdminMenu, -1)
menu_additem(AdminMenu, "Дать ответ пож. игроку") //3
menu_additem(AdminMenu, "Предупредить игрока") //4
menu_additem(AdminMenu, "Заткнуть игрока") //5
menu_additem(AdminMenu, "Кикнуть игрока") //6
menu_additem(AdminMenu, "Сделать скриншоты игроку") //7
menu_additem(AdminMenu, "Забанить игрока") //8
menu_additem(AdminMenu, "Сменить карту") //9

menu_setprop(AdminMenu, MPROP_PERPAGE, 9)
menu_setprop(AdminMenu, MPROP_NEXTNAME, "Дальше" )
menu_setprop(AdminMenu, MPROP_BACKNAME, "Назад" )
menu_setprop(AdminMenu, MPROP_EXITNAME, "Выход")

register_clcmd("say /amenu", "show_AdminMenu");
}

public player_menu(id, PlayerMenu, key) //функция меню всегда имеет ИД игрока(id) , инфо по меню(menu)
// и кнопку(key) которую вы нажали. (ВСЕГДА надо его туда писать если более про100)
{
key++

if(key==1) client_cmd(id,"say /rs") //если нажатая кнопка 1, то игрок обнулит счет
if(key==2) client_cmd(id,"say /anew") //если 2 - нужно будет написать жалобу на игрока
if(key==3) client_cmd(id,"say /support")
if(key==4) client_cmd(id,"say /admins") // 3 - игрок напишет в чат /admins
}

public vip_menu(id, VipMenu, key)
{
key++

if(key==1) client_cmd(id,"say /vm")
if(key==2) client_cmd(id,"say /rs")
if(key==3) client_cmd(id,"say /anew")
if(key==4) client_cmd(id,"say /support")
if(key==5) client_cmd(id,"say /warn")
if(key==6) client_cmd(id,"say /voteban")
}

public admin_menu(id, AdminMenu, key)
{
key++

if(key==1) client_cmd(id,"say /rs")
if(key==2) client_cmd(id,"say /anew")
if(key==3) client_cmd(id,"say /reply")
if(key==4) client_cmd(id,"say /warn")
if(key==5) client_cmd(id,"amx_mute2")
if(key==6) client_cmd(id,"amx_kickmenu")
if(key==7) client_cmd(id,"amx_ssmenu")
if(key==8) client_cmd(id,"fb_menu")
if(key==9) client_cmd(id,"amx_votemapmenu")
}

public show_PlayerMenu(id) // когда вызывается функция show_PlayerMenu, то
{
menu_display(id,PlayerMenu) //показываем меню просто указывая игрока и перемeнную менюхи

return PLUGIN_HANDLED
}

public show_VipMenu(id)
{
if (get_user_flags(id) & ADMIN_LEVEL_H)
{
menu_display(id, VipMenu)

return PLUGIN_HANDLED
}
else client_print(id,print_chat,"Данное меню доступно только для VIP-игроков.")
}

public show_AdminMenu(id)
{
if (get_user_flags(id) & ADMIN_BAN)
{
menu_display(id, AdminMenu)

return PLUGIN_HANDLED
}
else client_print(id,print_chat,"Данное меню доступно только для администраторов.")
}


Отредактировал: Fraig, - 1.7.2015, 14:38
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fintok
сообщение 1.7.2015, 15:11
Сообщение #2


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

Fraig,
Код:
public admin_menu(id, menu, item) 
{
if(item == MENU_EXIT)
return PLUGIN_HANDLED

new szData[6], szName[64], iAccess, iCallback
menu_item_getinfo(menu, item, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback)

new iKey = str_to_num(szData)

switch(iKey)
{
case 1: client_cmd(id,"say /rs")
case 2: client_cmd(id,"say /anew")
case 3: client_cmd(id,"say /reply")
case 4: client_cmd(id,"say /warn")
case 5: client_cmd(id,"amx_mute2")
case 6: client_cmd(id,"amx_kickmenu")
case 7: client_cmd(id,"amx_ssmenu")
case 8: client_cmd(id,"fb_menu")
case 9: client_cmd(id,"amx_votemapmenu")
}
return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fraig
сообщение 1.7.2015, 15:16
Сообщение #3
Стаж: 14 лет

Сообщений: 93
Благодарностей: 7
Полезность: < 0

А как сделать, чтобы еще одна страница была? Я хочу еще добавить несколько пунктов.

Отредактировал: Bloo, - 1.7.2015, 15:36
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 1.7.2015, 15:29
Сообщение #4


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

Fraig, дальше по порядку добавляй пункты и указывай их номера в функции, вторая страница добавиться автоматически.
з.ы. не нужно цитировать большие сообщения

Ах да забыл, нужно еще указывать номер пункта в menu_additem
Код:
menu_additem(AdminMenu, "Обнулить счет", 1)
menu_additem(AdminMenu, "Меню бонусов", 2)


Отредактировал: Fintok, - 1.7.2015, 15:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fraig
сообщение 1.7.2015, 15:32
Сообщение #5
Стаж: 14 лет

Сообщений: 93
Благодарностей: 7
Полезность: < 0

Fintok, т.е. case 10, case 11, case 12, case 13?
А вы случайно не знаете, как сделать проверку сразу на 2 флага?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 1.7.2015, 15:38
Сообщение #6


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

Fraig, да, именно так

Проверка на 2 флага:
Код:
if(get_user_flags(id) & (ADMIN_IMMUNITY | ADMIN_BAN))


Отредактировал: Fintok, - 1.7.2015, 15:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fraig
сообщение 1.7.2015, 15:41
Сообщение #7
Стаж: 14 лет

Сообщений: 93
Благодарностей: 7
Полезность: < 0

Fintok, большое спасибо, буду пробовать!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: