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

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

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

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

Как сделать в меню подменю

, "Подменю" для меню
Статус пользователя makc745ht
сообщение 28.3.2011, 23:31
Сообщение #1
Стаж: 15 лет

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

Прошу помочь с написанием скрипта :

Хочу сделать в меню подменю , если кто не понял то - например вот меню
CODE
#include <amxmodx>
new menu

public plugin_init()
{
register_plugin("Menu","1.0","crazzy");
menu = menu_create("\yБыстрый набор","func_menu");
menu_additem( menu,"\rОживить")
menu_additem( menu,"\wОтправить ЛС")
menu_additem( menu,"\wКупить Парашют")
menu_additem( menu,"\wМой FPS")
menu_additem( menu,"\wFPS Сервера")
menu_additem( menu,"\yРежим камеры")
register_clcmd("player_menu","go_menu");
}

public client_authorized(id)
{
client_cmd(id, "bind ^"F3^" ^"player_menu^"")
}

public func_menu(id, menu, key)
{
key++

if(key==1) client_cmd(id,"say /revtm")
if(key==2) client_cmd(id,"say /pm")
if(key==3) client_cmd(id,"say buy_parachute")
if(key==4) client_cmd(id,"say /hpshop")
if(key==5) client_cmd(id,"say /clientfps")
if(key==6) client_cmd(id,"say /serverfps")
}

public go_menu(id)
{
menu_display(id,menu)

return PLUGIN_HANDLED
}



Как объединить 5 и 6-ой пункты ?

Чтобы при нажатии к примеру цифры 5 => открылось подменю

Меню
1....
2.....
3......
4......
5 FPS

|
|
|
V

1 Мой FPS
2 FPS Сервера



вот что-то похожее =)







Как сделать в меню Подменю ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя scurra
сообщение 29.3.2011, 0:06
Сообщение #2


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

может так?
Код
#include <amxmodx>
new menupublic
plugin_init()
{
    register_plugin("Menu","1.0","crazzy");
    menu = menu_create("\yБыстрый набор","func_menu");
    menu_additem( menu,"\rОживить")
    menu_additem( menu,"\wОтправить ЛС")
    menu_additem( menu,"\wКупить Парашют")
    menu_additem( menu,"\wМой FPS")
    menu_additem( menu,"\wFPS Сервера")
    menu_additem( menu,"\yРежим камеры")
    register_clcmd("player_menu","go_menu");
}
public client_authorized(id)
{
    client_cmd(id, "bind ^"F3^" ^"player_menu^"")
}
public func_menu(id, menu, key)
{
    key++
    if(key==1) client_cmd(id,"say /revtm")
    if(key==2) client_cmd(id,"say /pm")
    if(key==3) client_cmd(id,"say buy_parachute")
    if(key==4) client_cmd(id,"say /hpshop")
    if(key==5) submenu(id)
}
public submenu(id)
{
    menu = menu_create("\yFPS","func_submenu");
    menu_additem( menu,"\wМой FPS")
    menu_additem( menu,"\wFPS Сервера")
}
public func_submenu(id, menu, key)
{
    key++
    if(key==1) client_cmd(id,"say /clientfps")
    if(key==2) client_cmd(id,"say /serverfps")
}
public go_menu(id)
{
    menu_display(id,menu)
    return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя deagledag
сообщение 29.3.2011, 13:50
Сообщение #3
Стаж: 15 лет

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

scurra, твой вариант не катит: зашел в меню, потом зашел FPS, и там два выбора (1, 2), выбрал один из двух, все ОК. Но потом когда обратно вызываешь меню, это же подменю выходит...

А если например два подменю хочу сделать?
Как быть?

Отредактировал: deagledag, - 29.3.2011, 13:59
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Krevedko
сообщение 29.3.2011, 14:48
Сообщение #4


Стаж: 17 лет

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

Хм, ну если сделать несколько разных меню, выглядеть это будет так, как ты хочешь. Смотри.


Первое меню
Код
1....
2.....
3......
4......
5 FPS


Второе меню

Код
Меню
1....
2.....
3......
4......
5 FPS

|
|
|
V

1 Мой FPS
2 FPS Сервера


То есть при открытии ФПС, у тебя открывается НОВОЕ меню, но с элементами первого...

Единственный минус в том, что при увеличении вложенности подменю, количество менюшек будет расти в геометрической прогресии...

Отредактировал: Krevedko, - 29.3.2011, 14:49
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя makc745ht
сообщение 29.3.2011, 15:25
Сообщение #5
Стаж: 15 лет

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

scurra

КОМПЛИМИРУЮ , ПИШЕТ Ошибку


Цитата(scurra @ 29.3.2011, 0:06) *
Код
#include <amxmodx>
new menupublic
plugin_init()
{
    register_plugin("Menu","1.0","crazzy");
    menu = menu_create("\yБыстрый набор","func_menu");
    menu_additem( menu,"\rОживить")
    menu_additem( menu,"\wОтправить ЛС")
    menu_additem( menu,"\wКупить Парашют")
    menu_additem( menu,"\wМой FPS")
    menu_additem( menu,"\wFPS Сервера")
    menu_additem( menu,"\yРежим камеры")
    register_clcmd("player_menu","go_menu");
}
public client_authorized(id)
{
    client_cmd(id, "bind ^"F3^" ^"player_menu^"")
}
public func_menu(id, menu, key)
{
    key++
    if(key==1) client_cmd(id,"say /revtm")
    if(key==2) client_cmd(id,"say /pm")
    if(key==3) client_cmd(id,"say buy_parachute")
    if(key==4) client_cmd(id,"say /hpshop")
    if(key==5) submenu(id)
}
public submenu(id)
{
    menu = menu_create("\yFPS","func_submenu");   --------------------------------------------  Вот здесь      
    menu_additem( menu,"\wМой FPS")                                  Ошибки : Error: Undefined symbol "menu" on line 30
    menu_additem( menu,"\wFPS Сервера")                                       Error: Undefined symbol "menu" on line 31
}                                                                             Warning: Expression has no effect on line 31
public func_submenu(id, menu, key)                                            Error: Expected token: ";", but found ")" on line 31
{                                                                             Error: Invalid expression, assumed zero on line 31
    key++                                                                     Error: Too many error messages on one line on line 31
    if(key==1) client_cmd(id,"say /clientfps")
    if(key==2) client_cmd(id,"say /serverfps")
}
public go_menu(id)
{
    menu_display(id,menu)
    return PLUGIN_HANDLED
}


Цитата(Krevedko @ 29.3.2011, 14:48) *
Хм, ну если сделать несколько разных меню, выглядеть это будет так, как ты хочешь. Смотри.


Первое меню
Код
1....
2.....
3......
4......
5 FPS


Второе меню

Код
Меню
1....
2.....
3......
4......
5 FPS

|
|
|
V

1 Мой FPS
2 FPS Сервера


То есть при открытии ФПС, у тебя открывается НОВОЕ меню, но с элементами первого...

Единственный минус в том, что при увеличении вложенности подменю, количество менюшек будет расти в геометрической прогресии...



Ну хотя бы так , код скинеш ?

Отредактировал: makc745ht, - 29.3.2011, 15:28
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 29.3.2011, 15:42
Сообщение #6


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

поправил
Код
#include <amxmodx>
new menu
new submenu
public plugin_init()
{
    register_plugin("Menu","1.0","crazzy");
    menu = menu_create("\yБыстрый набор","func_menu");
    menu_additem( menu,"\rОживить")
    menu_additem( menu,"\wОтправить ЛС")
    menu_additem( menu,"\wКупить Парашют")
    menu_additem( menu,"\wFPS")
    register_clcmd("player_menu","go_menu");
    submenu = menu_create("\yFPS","func_submenu");
    menu_additem( submenu,"\wМой FPS")
    menu_additem( submenu,"\wFPS Сервера")

}
public client_authorized(id)
{
    client_cmd(id, "bind ^"F3^" ^"player_menu^"")
}
public func_menu(id, menu, key)
{
    key++
    if(key==1) client_cmd(id,"say /revtm")
    if(key==2) client_cmd(id,"say /pm")
    if(key==3) client_cmd(id,"say buy_parachute")
    if(key==4) client_cmd(id,"say /hpshop")
    if(key==5) go_submenu(id)
}
public func_submenu(id, submenu, key)
{
    key++
    if(key==1) client_cmd(id,"say /clientfps")
    if(key==2) client_cmd(id,"say /serverfps")
}

public go_submenu(id)
{
    menu_display(id,submenu)
    return PLUGIN_HANDLED
}
public go_menu(id)
{
    menu_display(id,menu)
    return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя deagledag
сообщение 29.3.2011, 16:12
Сообщение #7
Стаж: 15 лет

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

Цитата(scurra @ 29.3.2011, 15:42) *
поправил
Код
Код....


Спасибо, теперь все нормально.
Вот допустим я хочу еще одну подменюшку сделать, что тогда?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя makc745ht
сообщение 29.3.2011, 16:33
Сообщение #8
Стаж: 15 лет

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

scurra

Не пашет , жму на F3 не работает


Плагин компилируется , но присутствует Warning , без объяснения где и почему

Отредактировал: makc745ht, - 29.3.2011, 17:17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 29.3.2011, 17:28
Сообщение #9


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

Цитата(makc745ht @ 29.3.2011, 17:33) *
scurra
Плагин компилируется , но присутствует Warning , без объяснения где и почему

ещё раз поправил
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя deagledag
сообщение 29.3.2011, 17:29
Сообщение #10
Стаж: 15 лет

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

Мое меню (.sma)

Код
#include <amxmodx>
new menu
new submenu

public plugin_init()
{
register_plugin("Menu","1.0","Internetwork");
menu = menu_create("\yБыстрый набор","func_menu");
menu_additem( menu,"\wСмена карты / rtv")
menu_additem( menu,"\wОсталось времени / timeleft")
menu_additem( menu,"\wНастоящее время / thetime")
menu_additem( menu,"\wУмереть / kill")
menu_additem( menu,"\rВыйти из сервера / disconnect")
menu_additem( menu,"\rВыйти из игры / quit")

submenu = menu_create("\rВы уверены?","func_submenu");
menu_additem( submenu,"\wДа")
menu_additem( submenu,"\wНет")

menu_setprop( menu,MPROP_PERPAGE, 5)

register_clcmd("player_menu","go_menu");
}

public client_authorized(id)
{
client_cmd(id, "bind ^"F11^" ^"player_menu^"")
}

public func_menu(id, menu, key)
{
key++

if(key==1) client_cmd(id,"say rtv")
if(key==2) client_cmd(id,"say timeleft")
if(key==3) client_cmd(id,"say thetime")
if(key==4) client_cmd(id,"kill")
if(key==5) client_cmd(id,"disconnect")
if(key==6) go_submenu(id)
}

public func_submenu(id, submenu, key)
{
    key++
    if(key==1) client_cmd(id,"quit")
    if(key==2) client_cmd(id,"ok")
}
public go_submenu(id)
{
    menu_display(id,submenu)
    return PLUGIN_HANDLED
}


public go_menu(id)
{
menu_display(id,menu)

return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя scurra
сообщение 29.3.2011, 17:41
Сообщение #11


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

Цитата(deagledag @ 29.3.2011, 17:12) *
Спасибо, теперь все нормально.
Вот допустим я хочу еще одну подменюшку сделать, что тогда?

Код
#include <amxmodx>
new menu          //основное меню
new submenu    //добавляем новые переменные для новых подменюшек submenu1, submenu2 etc
public plugin_init()
{
    register_plugin("Menu","1.0","crazzy");
    menu = menu_create("\yБыстрый набор","func_menu");
    menu_additem( menu,"\rОживить")
    menu_additem( menu,"\wОтправить ЛС")
    menu_additem( menu,"\wКупить Парашют")
    menu_additem( menu,"\wFPS")    //добавляем новое подменю в основное меню  menu_additem( menu,"\wNewitem")
    register_clcmd("player_menu","go_menu");
    submenu = menu_create("\yFPS","func_submenu");  // регистрируем новое подменю  submenu1 = menu_create("\yNewsub","func_submenu1");
    menu_additem( submenu,"\wМой FPS")    //добавляем в подменю menu_additem( submenu1,"\wNew item1")
    menu_additem( submenu,"\wFPS Сервера")    // новые пункты menu_additem(submenu1,"\wNewitem2")

}
public client_authorized(id)
{
    client_cmd(id, "bind ^"F3^" ^"player_menu^"")
}
public func_menu(id, menu, key)
{
    key++
    if(key==1) client_cmd(id,"say /revtm")
    if(key==2) client_cmd(id,"say /pm")
    if(key==3) client_cmd(id,"say buy_parachute")
    if(key==4) client_cmd(id,"say /hpshop")
    if(key==5) go_submenu(id)                 //добавляем вызов нового подменю if(key==6) go_submenu1(id)
}
public func_submenu(id, submenu, key)// создаем функцию обработки нового подменю public go_submenu1(id)
{
    key++
    if(key==1) client_cmd(id,"say /clientfps")
    if(key==2) client_cmd(id,"say /serverfps")
}

public go_submenu(id)// вызываем подменю
{
    menu_display(id,submenu)                
    return PLUGIN_HANDLED        
}                    
public go_menu(id)
{
    menu_display(id,menu)
    return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя makc745ht
сообщение 29.3.2011, 17:41
Сообщение #12
Стаж: 15 лет

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

я понял )))

Спасибо пацаны !!! thank_you2.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя deagledag
сообщение 30.3.2011, 6:23
Сообщение #13
Стаж: 15 лет

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

Все, понятно. Спасибо большое
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя deagledag
сообщение 30.3.2011, 8:06
Сообщение #14
Стаж: 15 лет

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

Такая проблема...


Объясняю:
Поле Exit должно быть под цифрой 0., а в данном случае 9.
Что не так?:

Код
#include <amxmodx>
new menu
new submenu

public plugin_init()
{
register_plugin("Menu","1.0","Internetwork");
menu = menu_create("\yБыстрый набор","func_menu");
menu_additem( menu,"\wСмена карты / rtv")
menu_additem( menu,"\wОсталось времени / timeleft")
menu_additem( menu,"\wНастоящее время / thetime")
menu_additem( menu,"\wУмереть / kill")
menu_additem( menu,"\rВыйти из сервера / disconnect")
menu_additem( menu,"\rВыйти из игры / quit")

submenu = menu_create("\rВы уверены?","func_submenu");
menu_additem( submenu,"\wДа")
menu_additem( submenu,"\wНет")

menu_setprop( menu,MPROP_PERPAGE, 5)

register_clcmd("player_menu","go_menu");
}

public client_authorized(id)
{
client_cmd(id, "bind ^"F11^" ^"player_menu^"")
}

public func_menu(id, menu, key)
{
key++

if(key==1) client_cmd(id,"say rtv")
if(key==2) client_cmd(id,"say timeleft")
if(key==3) client_cmd(id,"say thetime")
if(key==4) client_cmd(id,"kill")
if(key==5) client_cmd(id,"disconnect")
if(key==6) go_submenu(id)
}

public func_submenu(id, submenu, key)
{
    key++
    if(key==1) client_cmd(id,"quit")
    if(key==2) client_cmd(id,"ok")
}
public go_submenu(id)
{
    menu_display(id,submenu)
    return PLUGIN_HANDLED
}


public go_menu(id)
{
    menu_display(id,menu)
    return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 30.3.2011, 10:08
Сообщение #15


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

попробуй так menu_setprop( menu,MPROP_PERPAGE, 7)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Shoterko
сообщение 30.3.2011, 23:03
Сообщение #16
Стаж: 15 лет

Сообщений: 114
Благодарностей: 143
Полезность: 1227

Цитата(scurra @ 30.3.2011, 11:08) *
попробуй так menu_setprop( menu,MPROP_PERPAGE, 7)

Вообще убрать.


!
Аккаунт пользователя заблокирован до: 25.4.29390, 13:03
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя deagledag
сообщение 31.3.2011, 0:49
Сообщение #17
Стаж: 15 лет

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

Если удалить, она сама на страницы делиться будет?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SG123
сообщение 10.4.2011, 22:30
Сообщение #18
Стаж: 15 лет

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

можно сам СМа хотя бы?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: