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

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

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

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

Проблема в старой системе меню

Статус пользователя DumoH4uk
сообщение 18.12.2014, 19:29
Сообщение #1


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Здравствуйте! Давно столкнулся с проблемой в старой системе меню.

Регистрирую меню:

Код:
register_menu("gkm_maps", -1, "gkm_maps_hand")
register_menu("gkm_mapsvote", -1, "gkm_mapsvote_hand")


В handl'e gkm_mapsvote читает hadl gkm_maps, что за приколы?

Код:
show_menu(id, i_Keys, Gkm_mapsvote, -1, "gkm_mapsvote")


Все правильно подставил, ничего не попутал. Уже встречаюсь не первый раз, был какой-то косяк когда я зарегистрировал меню manger и manager_money, в handl'e manager_money читался manager =\
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 18.12.2014, 20:31
Сообщение #2


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Пример для теста.

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

#define PLUGIN "Neizvesten"
#define VERSION "1.0"
#define AUTHOR "ReznyaProject"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_menu("manager", -1, "manager_hand")
register_menu("manager_test", -1, "manager_test_hand")

register_clcmd("say /test", "manager_test_main")
}

public manager_main(id)
{
new MANAGER[512], i_keys = MENU_KEY_0

new Len = formatex(MANAGER, charsmax(MANAGER), "\yTest Menu 1^n^n")

i_keys |= MENU_KEY_1
Len += formatex(MANAGER[Len], charsmax(MANAGER) - Len, "\r1. \wTest 1^n")

i_keys |= MENU_KEY_2
Len += formatex(MANAGER[Len], charsmax(MANAGER) - Len, "\r2. \wTest 2^n")

Len += formatex(MANAGER[Len], charsmax(MANAGER) - Len, "\r0. \wExit^n")

show_menu(id, i_keys, MANAGER, -1, "manager")
}

public manager_hand(id, i_key)
{
switch(i_key)
{
case 9: return PLUGIN_HANDLED;
default: client_print(id, print_chat, "Test menu 1")
}
return PLUGIN_HANDLED;
}

public manager_test_main(id)
{
new MANAGER_TEST[512], i_keys = MENU_KEY_0

new Len = formatex(MANAGER_TEST, charsmax(MANAGER_TEST), "\yTest Menu 2^n^n")

i_keys |= MENU_KEY_1
Len += formatex(MANAGER_TEST[Len], charsmax(MANAGER_TEST) - Len, "\r1. \wTest 1^n")

i_keys |= MENU_KEY_2
Len += formatex(MANAGER_TEST[Len], charsmax(MANAGER_TEST) - Len, "\r2. \wTest 2^n")

Len += formatex(MANAGER_TEST[Len], charsmax(MANAGER_TEST) - Len, "\r0. \wExit^n")

show_menu(id, i_keys, MANAGER_TEST, -1, "manager_test")
}

public manager_test_hand(id, i_key)
{
switch(i_key)
{
case 9: return PLUGIN_HANDLED;
default: client_print(id, print_chat, "Test menu 2")
}
return PLUGIN_HANDLED;
}


Через команду "/test" вызываем меню "manager_money", нажимаю на любую из кнопок (кроме выхода) и видим в чате сообщения из хандледа который относится к меню "manager".

Если не юзать Код:
return PLUGIN_HANDLED
, то вызываются вообще 2 ханда из первого и второго меню. Почему?!

Отредактировал: DumoH4uk, - 18.12.2014, 20:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 18.12.2014, 20:43
Сообщение #3
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Попробуй так

Код:
#define KEYS (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)

register_menu("gkm_mapsvote", KEYS, "gkm_mapsvote_hand", 0)


Отредактировал: proff_q, - 18.12.2014, 20:44
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 18.12.2014, 20:49
Сообщение #4


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Цитата(proff_q @ 18.12.2014, 20:39) *
Попробуй так

Код:
#define KEYS (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)

register_menu("gkm_mapsvote", KEYS, "gkm_mapsvote_hand", 0)


Без изменений pardon.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 18.12.2014, 21:04
Сообщение #5
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Сейчас протестировал, нашел в чем дело. Попробуй названия меню сделать разными, чтобы одно название не содержало другое =)
Код:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Neizvesten"
#define VERSION "1.0"
#define AUTHOR "ReznyaProject"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_menu("fd", -1, "manager_hand")
register_menu("gh", -1, "manager_test_hand")

register_clcmd("say /1", "azaza")
register_clcmd("say /2", "azaza2")
}

public azaza(id) {
new message[512]
new i_keys = MENU_KEY_0

new len = formatex(message, charsmax(message), "ONE^n^n")

i_keys |= MENU_KEY_1
len += formatex(message[len], charsmax(message) - len, "1 FAPTIME^n^n")

i_keys |= MENU_KEY_2
len += formatex(message[len], charsmax(message) - len, "2 CSGOTIME^n^n")

show_menu(id, i_keys, message, -1, "fd")
}

public manager_hand(id, keys) {
switch(keys) {
case 0: client_print(id, print_chat, "FAPTIME")
case 1: client_print(id, print_chat, "CSGOTIME")
default: azaza(id)
}
}

public azaza2(id) {
new message[512]
new i_keys = MENU_KEY_0

new len = formatex(message, charsmax(message), "TWO^n^n")

i_keys |= MENU_KEY_1
len += formatex(message[len], charsmax(message) - len, "1 EATTIME^n^n")

i_keys |= MENU_KEY_2
len += formatex(message[len], charsmax(message) - len, "2 DOTATIME^n^n")

show_menu(id, i_keys, message, -1, "gh")
}

public manager_test_hand(id, keys) {
switch(keys) {
case 0: client_print(id, print_chat, "EATTIME")
case 1: client_print(id, print_chat, "DOTATIME")
default: azaza(id)
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя DumoH4uk
сообщение 18.12.2014, 21:25
Сообщение #6


Стаж: 14 лет

Сообщений: 188
Благодарностей: 81
Полезность: 122

Цитата(proff_q @ 18.12.2014, 21:00) *
Сейчас протестировал, нашел в чем дело. Попробуй названия меню сделать разными, чтобы одно название не содержало другое =)
Код:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Neizvesten"
#define VERSION "1.0"
#define AUTHOR "ReznyaProject"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_menu("fd", -1, "manager_hand")
register_menu("gh", -1, "manager_test_hand")

register_clcmd("say /1", "azaza")
register_clcmd("say /2", "azaza2")
}

public azaza(id) {
new message[512]
new i_keys = MENU_KEY_0

new len = formatex(message, charsmax(message), "ONE^n^n")

i_keys |= MENU_KEY_1
len += formatex(message[len], charsmax(message) - len, "1 FAPTIME^n^n")

i_keys |= MENU_KEY_2
len += formatex(message[len], charsmax(message) - len, "2 CSGOTIME^n^n")

show_menu(id, i_keys, message, -1, "fd")
}

public manager_hand(id, keys) {
switch(keys) {
case 0: client_print(id, print_chat, "FAPTIME")
case 1: client_print(id, print_chat, "CSGOTIME")
default: azaza(id)
}
}

public azaza2(id) {
new message[512]
new i_keys = MENU_KEY_0

new len = formatex(message, charsmax(message), "TWO^n^n")

i_keys |= MENU_KEY_1
len += formatex(message[len], charsmax(message) - len, "1 EATTIME^n^n")

i_keys |= MENU_KEY_2
len += formatex(message[len], charsmax(message) - len, "2 DOTATIME^n^n")

show_menu(id, i_keys, message, -1, "gh")
}

public manager_test_hand(id, keys) {
switch(keys) {
case 0: client_print(id, print_chat, "EATTIME")
case 1: client_print(id, print_chat, "DOTATIME")
default: azaza(id)
}
}


Та я знал psych.gif

Но все же! Почему название зарегистрированных меню разное, а сервер show_menu как будто читает только первую половину названия?

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