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

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

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

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

Странный баг с меню в Amx Mod X / ReHLDS / HLDS

Статус пользователя Inline
сообщение 7.7.2016, 7:35
Сообщение #1


Стаж: 10 лет

Сообщений: 139
Благодарностей: 80
Полезность: 447

Если сделать вот так
Код:

public plugin_init()
{
//......
register_message(get_user_msgid("ShowMenu"), "Message_ShowMenu");
}

public Message_ShowMenu(iMsgID, iDest, id)
{
static szMenuCode[34];
get_msg_arg_string(4, szMenuCode, charsmax(szMenuCode));

if (containi(szMenuCode, "Team_Select") != -1)
{
szMenuCode[11] = 0;
server_print("Msg ShowMenu %d | %d %d %d %s", id, get_msg_arg_int(1), get_msg_arg_int(2), get_msg_arg_int(3), szMenuCode);

ChooseTeamMenu(id);
return PLUGIN_HANDLED;
}
else if (equal(szMenuCode, "#Terrorist_Select") || equal(szMenuCode, "#CT_Select"))
return PLUGIN_HANDLED;

return PLUGIN_CONTINUE;
}

public ChooseTeamMenu(id)
{
server_print("Show_ChooseTeamMenu %d", id);

//... Тут код для показа кастомного меню
return show_menu(id, iKeys, szMenu, -1, "ChooseTeamMenu");
}



Иногда код начинает зацикливаться, очень редко, раз в 1 день, в логах выводится так.

Msg showMenu 19 | 51 -1 0 #Team_Selec
Show_ChooseTeamMenu 19
Msg showMenu 19 | 51 -1 0 #Team_Selec
Show_ChooseTeamMenu 19
Msg showMenu 19 | 51 -1 0 #Team_Selec
Show_ChooseTeamMenu 19
Msg showMenu 19 | 51 -1 0 #Team_Selec
Show_ChooseTeamMenu 19
Msg showMenu 19 | 51 -1 0 #Team_Selec
Show_ChooseTeamMenu 19

...................................
Много-много раз

Далее идёт сообщение Amx Mod X о stack error, а потом серер падает с ошибкой:
FATAL ERROR (shutting down): MESSAGE_END called, but message buffer from .dll had overflowed

Информация:
Код:
Currently loaded plugins:
description stat pend file vers src load unlod
[ 1] Reunion RUN - reunion_mm_i386. v0.1.67 ini Start Never
[ 2] Ultimate Unprec RUN - ultimate_unpreca v0.3 Alp ini ANY ANY
[ 3] ReLocalizeBug F RUN - relocalizebugfix v2.7 ini Chlvl ANY
[ 4] AMX Mod X RUN - amxmodx_mm_i386. v1.8.3-d ini Start ANY
[ 5] WHBlocker RUN - whblocker_mm_i38 v1.5.626 ini Chlvl ANY
[ 6] VoiceTranscoder RUN - VoiceTranscoder. v2.0RC1 ini ANY ANY
[ 7] ReAuthCheck RUN - reauthcheck_mm_i v0.1.2 ini Start Never
[ 8] Rechecker RUN - rechecker_mm_i38 v2.1 ini Chlvl ANY
[ 9] Fun RUN - fun_amxx_i386.so v1.8.3-d pl4 ANY ANY
[10] FakeMeta RUN - fakemeta_amxx_i3 v1.8.3-d pl4 ANY ANY
[11] MySQL RUN - mysql_amxx_i386. v1.8.3-d pl4 ANY ANY
[12] Engine RUN - engine_amxx_i386 v1.8.3-d pl4 ANY ANY
[13] Ham Sandwich RUN - hamsandwich_amxx v1.8.3-d pl4 ANY ANY
[14] GeoIP RUN - geoip_amxx_i386. v1.8.3-d pl4 ANY ANY
14 plugins, 14 running


Код:
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
Exe build: 14:54:31 Jun 20 2016 (800)
ReHLDS API version 2.13


Судя по всему отображается неверное меню. Но, неясно почему.

Отредактировал: Inline, - 7.7.2016, 7:38


Не читай
Не забывай нажимать кнопку "спасибо"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
voed
сообщение 7.7.2016, 12:43
Сообщение #2
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Потому что ты в одном месседже пытаешься создать еще один месседж такого же типа, так делать нельзя
ChooseTeamMenu в таск на 0.1 сек
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Inline
сообщение 7.7.2016, 17:27
Сообщение #3


Стаж: 10 лет

Сообщений: 139
Благодарностей: 80
Полезность: 447

Цитата(voed @ 7.7.2016, 13:43) *
Потому что ты в одном месседже пытаешься создать еще один месседж такого же типа, так делать нельзя
ChooseTeamMenu в таск на 0.1 сек

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

Отредактировал: Inline, - 7.7.2016, 17:34


Не читай
Не забывай нажимать кнопку "спасибо"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mistrick
сообщение 7.7.2016, 21:17
Сообщение #4


Стаж: 13 лет

Сообщений: 543
Благодарностей: 426
Полезность: 1034

Inline, В ReAPI есть хуки для работы с меню выбора тимы. Пробуйте их.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Inline
сообщение 12.7.2016, 9:34
Сообщение #5


Стаж: 10 лет

Сообщений: 139
Благодарностей: 80
Полезность: 447

Цитата(Mistrick @ 7.7.2016, 22:17) *
Inline, В ReAPI есть хуки для работы с меню выбора тимы. Пробуйте их.

Сделал немного корявый баг репорт: https://bugs.alliedmods.net/show_bug.cgi?id=6513


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