Вечер добрый, написал значи-ца системку, а были проблемы с диалогом, пока я их не залогировал и получилось что параметр listitem = 4339556
Откуда может получиться такое мифическое число?
Вид для печати
Вечер добрый, написал значи-ца системку, а были проблемы с диалогом, пока я их не залогировал и получилось что параметр listitem = 4339556
Откуда может получиться такое мифическое число?
Как минимум, стоит скинуть код, который приводит к появлению такого значения.
Вероятнее всего это либо ошибка в самом коде, либо в mdialog.
DialogCreate:DIALOG_JOB_AIR_CONTRACT(playerid){ Dialog_Open ( playerid, #DIALOG_JOB_AIR_CONTRACT, DIALOG_STYLE_MSGBOX, "{FF9900}Договор", "Компания предлагает Вам устроится на работу!\n\n"\ "По началу будет предложена низкооплачиваемая работа, но со временем вы сможете повышать уровень квалификации:\n\n\t\t\t"\ "Вариант 1[0 EXP]\n \t\t\t"\ "Вариант 2[400 EXP]\n \t\t\t"\ "Вариант 3[3600 EXP]\n \t\t\t"\ "Вариант 4[7500 EXP]\n \t\t\t"\ "Вариант 5[13000 EXP]\n\n"\ "С момента подписания договора будет фиксироваться Ваш стаж и опыт.\n"\ "Именно благодаря этому Вы и сможете приступать к новым видам работ в будущем.\n\n "\ "Вы согласны с условиями и готовы подписать договор?", "Подпись", "Нет" ); } DialogResponse:DIALOG_JOB_AIR_CONTRACT(playerid, dialogid, response, listitem, inputtext[]) { if(!response) return false; return Dialog_Show(playerid, #DIALOG_JOB_AIR); } DialogCreate:DIALOG_JOB_AIR(playerid) { new string[512]; ( string, sizeof string, "Вариант 1[%d EXP]\n \t\t\t"\ "Вариант 2[%d EXP]\n \t\t\t"\ "Вариант 3[%d EXP]\n \t\t\t"\ "Вариант 4[%d EXP]\n \t\t\t"\ "Вариант 5[%d EXP]\n\n"\ EXP_1_JOB, EXP_2_JOB, EXP_3_JOB, EXP_4_JOB, EXP_5_JOB ); Dialog_Open ( playerid, #DIALOG_JOB_AIR, DIALOG_STYLE_LIST, "{FF9900}Вакансии", string, "Выбрать", "" ); } DialogResponse:DIALOG_JOB_AIR(playerid, dialogid, response, listitem, inputtext[]) { if(!response) Dialog_Show(playerid, #DIALOG_JOB_AIR_CARD); new bool:error_job = false; if(GetPlayerLevel(playerid) < 2 ) { SendClientMessage(playerid, -1, "Компания не может принять Вас в связи с минимальным временем проживания Вами в городе."); SendClientMessage(playerid, -1, "Для устройства в аэропорт необходимо иметь не ниже 2-ого уровня."); } if(listitem == 1 && GetPlayerAirEXP(playerid) < EXP_1_JOB ) error_job = true; if(listitem == 2 && GetPlayerAirEXP(playerid) < EXP_2_JOB ) error_job = true; if(listitem == 3 && GetPlayerAirEXP(playerid) < EXP_3_JOB ) error_job = true; if(listitem == 4 && GetPlayerAirEXP(playerid) < EXP_4_JOB ) error_job = true; if(error_job == true) { Dialog_Show(playerid, #DIALOG_JOB_AIR); SendClientMessage(playerid, -1, "Вынуждены отказать, поскольку Ваш стаж и опыт слишком мал, чтобы доверить Вам данный вид деятельности."); } if(GetPlayerJob(playerid) == listitem + 1 ) { Dialog_Show(playerid, #DIALOG_JOB_AIR_CARD); } if(GetPlayerJob(playerid) > 5 || GetPlayerJob(playerid) < 1) { SendClientMessage(playerid, -1, "Поздравляем! Вы успешно приняты нашей компанией. Можете приступать к работе."); } GetPlayerJob(playerid) = listitem + 1; MySQL_SaveInt(playerid, "job", GetPlayerJob(playerid)); static job_str[22 +1], string[MAX_CHATBUBBLE_LENGTH +1]; job_str[0] = EOS; string[0] = EOS; switch(GetPlayerJob(playerid)) { case 1: job_str = "вариант 1"; case 2: job_str = "вариант 2"; case 3: job_str = "вариант 3"; case 4: job_str = "вариант 4"; case 5: job_str = "вариант 5"; default: job_str = "вариант 1"; } format(string, sizeof string, "Компания допускает Вас к данному виду деятельности. Можете приступать к работе {FFFF00}%s", job_str); Dialog_Show(playerid, #DIALOG_JOB_AIR_CARD); } DialogCreate:DIALOG_JOB_AIR_CARD(playerid) { new job_info[22], string[256 +1]; switch(GetPlayerJob(playerid)) { case 1: job_info = "вариант 1"; case 2: job_info = "вариант 2"; case 3: job_info = "вариант 3"; case 4: job_info = "вариант 4"; case 5: job_info = "вариант 5"; default: job_info = "вариант 1"; } ( string, sizeof string, "{FFFFFF}Опыт и стаж работы: {FFFF00}%d EXP\n"\ "Вид деятельности: {FF9900}%s\n"\ "{FFFFFF}- {74C2FF}Взять транспорт\n "\ "{FFFFFF}- {CB2D2D}Изменить вид деятельности\n "\ "{FFFFFF}- {74C2FF}Помощь", GetPlayerAirEXP(playerid), job_info ); Dialog_Open(playerid, #DIALOG_JOB_AIR_CARD, DIALOG_STYLE_LIST, "{FF9900}Трудовая карточка", string, "Выбрать", "Закрыть"); } DialogResponse:DIALOG_JOB_AIR_CARD(playerid, dialogid, response, listitem, inputtext[]) { if(!response) return 1; if( listitem == 0 || listitem == 1 ) return Dialog_Show(playerid, #DIALOG_JOB_AIR_CARD); switch(listitem) { case 2: { if(GetPlayerJob(playerid) == 1) { if(airport_wash == 20) { Dialog_Show(playerid, #DIALOG_JOB_AIR_CARD); SendClientMessage(playerid, -1, "К сожалению весь служебный транспорт на данный момент занят. Ожидайте, пока освободится."); } airport_wash++; } if(GetPlayerJob(playerid) == 2) { if(airport_baggage == 10) { Dialog_Show(playerid, #DIALOG_JOB_AIR_CARD); SendClientMessage(playerid, -1, "К сожалению весь служебный транспорт на данный момент занят. Ожидайте, пока освободится."); } airport_baggage++; } if( GetPlayerJob(playerid) == 5 ) { new bool:result = false; for(new i; i != sizeof( airport_plane ); i++) { if( airport_plane_s[ i ] == 1 ) { continue; } else { result = true; airport_plane_s[ i ] = 1; break; } } if( result == false ) { Dialog_Show(playerid, #DIALOG_JOB_AIR_CARD); SendClientMessage(playerid, -1, "К сожалению весь служебный транспорт на данный момент занят. Ожидайте, пока освободится."); } new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx( GetPVarInt( playerid, "airport_plane" ), engine,lights,alarm,doors,bonnet,boot,objective ); SetVehicleParamsEx( GetPVarInt( playerid, "airport_plane" ), VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective ), g_vehicle_params[GetPVarInt( playerid, "airport_plane" )][V_ENGINE] = VEHICLE_PARAMS_ON; AirportTextDraw( playerid, true ); } SendClientMessage(playerid, -1, "Мы приготовили для Вас рабочий транспорт. Можете его использовать." ); } case 3: Dialog_Show(playerid, #DIALOG_JOB_AIR); case 4: { switch(GetPlayerJob(playerid)) { case 1: Dialog_Open(playerid, #DIALOG_JOB_AIR_INFO, DIALOG_STYLE_MSGBOX, "{FF9900}Информация", HELP_1, "Назад", "" ); case 2: Dialog_Open(playerid, #DIALOG_JOB_AIR_INFO, DIALOG_STYLE_MSGBOX, "{FF9900}Информация", HELP_2, "Назад", "" ); case 3: Dialog_Open(playerid, #DIALOG_JOB_AIR_INFO, DIALOG_STYLE_MSGBOX, "{FF9900}Информация", HELP_3, "Назад", "" ); case 4: Dialog_Open(playerid, #DIALOG_JOB_AIR_INFO, DIALOG_STYLE_MSGBOX, "{FF9900}Информация", HELP_4, "Назад", "" ); case 5: Dialog_Open(playerid, #DIALOG_JOB_AIR_INFO, DIALOG_STYLE_MSGBOX, "{FF9900}Информация", HELP_5, "Назад", "" ); default: Dialog_Open(playerid, #DIALOG_JOB_AIR_INFO, DIALOG_STYLE_MSGBOX, "{FF9900}Информация", HELP_1, "Назад", "" ); } } } return 1; }
Сделай в самом mdialog логирование listitem и посмотри: такое значение туда приходит изначально или нет.
http://prntscr.com/pvb0t5 - сам диалог предоставленный выше
http://prntscr.com/pvb22o - рега и авторизация
Очень странное дерьмо, он всегда показывает 32700?
Так а где информация из mdialog для диалога DIALOG_JOB_AIR?
Скинь нормально код логирования mdialog + полный лог сессии.
- - - Добавлено - - -PHP код:
[13:19:16] dialogid: 32700 | response: 1 | listitem: -1
[13:19:19] dialogid: 32700 | response: 1 | listitem: 0
[13:19:19] DIALOG_JOB_AIR | dialogid: 1 | response: 0 | listitem: 5030368
[13:19:19] тест 1
[13:19:19] тест 2
[13:19:19] тест 3
[13:19:19] тест 4
[13:19:19] тест 5
[13:19:19] тест 6
[13:19:19] тест 7
[13:19:19] тест 8
[13:19:19] тест 9
[13:19:19] тест 10
[13:19:19] тест 11
[13:19:21] dialogid: 32700 | response: 1 | listitem: 2
[13:19:21] DIALOG_JOB_AIR_CARD | dialogid: 1 | response: 2 | listitem: 5030376
crashdetect если что - подключен, но от него нет никаких сообщений. Компилирую как и нужно с ключем -d3
Лол, конструкция DialogResponse неверная :D
Необходимо (playerid, response, listitem, inputtext[])
А я видимо по глупости скопировал с OnDialogResponse аргументы, ибо dialogid не должен там быть. Сейчас протестирую, в очередной раз убеждаюсь, что нужно больше спать и есть чернику, которая нормальному зрению способствует.
Благодарочка f0Re3t за подсказку.