Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 9 из 9
  1. #1
    Аватар для Elrmrnt-Kritik
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.11.2017
    Сообщений
    136
    Репутация:
    10 ±

    Оформление функции с большим диалогом

    Всем привет. Уже, наверное, больше половины года пользуюсь диалоговыми процессорами (большую часть времени - mdialog). И не так давно столкнулся с такой проблемой, что код одного из диалогов не хочет вызываться. Пробовал уже и по-разному данные диалога забивать (убирал цвета из названия, текста), переименовывал название диалога. Никак не вызывается в общем... Подскажите пожалуйста, в чем может быть проблема.

    Код:
    ShowPlayerDialog(playerid, DLG_VEH_MENU_DEFAULT, DIALOG_STYLE_TABLIST_HEADERS, "{0080BB}Меню транспортного средства", string, "Выбрать", "Закрыть");
    Код:
    DLG:DLG_VEH_MENU_DEFAULT_HP(playerid, response, listitem, inputtext[])
    {
    	/**/print("DEBUG DLG_VEH_MENU_DEFAULT_HP");
    	if(!response)
    		return ShowPlayerVehicleMenu(playerid, gPlayer[playerid][pVehicleMenu]);
    	new health, vehicleid = gPlayer[playerid][pVehicleMenu];
    	if(sscanf(inputtext, "f", health))
    		return ShowPlayerVehicleMenu(playerid, vehicleid);
    	else if(!IsValidVehicleHealth(health))
    		return ShowPlayerVehicleMenu(playerid, vehicleid);
    	SetVehicleHealthEx(vehicleid, health);
    
    
    	if(gVehicle[vehicleid][vID] > 0)
    	{
    		new string[41+(-2+MAX_LENGTH_VEHICLE_ID)+(-2+MAX_LENGTH_FLOAT)+1];
    		format(string, sizeof string, "изменение здоровья транспорта %d на %.2f", gVehicle[vehicleid][vID], health);
    		CreateAdminLog(playerid, string);
    	}
    
    
    	ShowPlayerVehicleMenu(playerid, vehicleid);
    	return 1;
    }

    (DEBUG DLG_VEH_MENU_DEFAULT_HP не пишется в логах).

    - - - Добавлено - - -

    Ой. Почему-то название не то... Поправьте пожалуйста.

    Также присутствуют:
    Код HTML:
    #define ShowPlayerDialog(%0,%1,%2,%3,%4,%5,%6) Dialog_Open(%0,Dialog:%1,%2,%3,%4,%5,%6)
    #define DLG DialogResponse
    Последний раз редактировалось Elrmrnt-Kritik; 04.07.2018 в 22:13. Причина: дополнение.

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Логируй данные, которые приходят в OnDialogResponse (имя диалога и то, какая строка попадает в CallRemoteFunction) и сверяй их с теми именем, что получается у тебя
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    Elrmrnt-Kritik (07.07.2018)
  4. #3
    Аватар для Elrmrnt-Kritik
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.11.2017
    Сообщений
    136
    Репутация:
    10 ±
    Прошу прощения за задержку. Почему-то всегда одно и то же название передается в CallRemoteFunction. Там в gDialogFunction записывается текст в формате "dre_НАЗВАНИЕ_ДИАЛОГА_ИЗ_КОТОРОГО_Я_ПОПАЛ_В_ЭТОТ".

  5. #4
    Аватар для X!X
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2018
    Сообщений
    58
    Репутация:
    1 ±
    В mdialog не showplayerdialog, а - Dialog_Open(playerid, function[], style, caption[], info[], button1[], button2[]);
    http://pro-pawn.ru/showthread.php?14...hlight=mdialog - почитай тему

  6. Пользователь сказал cпасибо:
    Elrmrnt-Kritik (12.07.2018)
  7. #5
    Аватар для Elrmrnt-Kritik
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.11.2017
    Сообщений
    136
    Репутация:
    10 ±
    Не-не, у меня свои макросы :)

    1. #define ShowPlayerDialog(%0,%1,%2,%3,%4,%5,%6) Dialog_Open(%0,Dialog:%1,%2,%3,%4,%5,%6)
    2. #define HidePlayerDialog Dialog_Close
    3. #define DLG DialogResponse

  8. #6
    Аватар для X!X
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2018
    Сообщений
    58
    Репутация:
    1 ±
    Не знаю, может в этом дело? Ты вызываешь диалог с ID - DLG_VEH_MENU_DEFAULT, а в DialogResponse указан - DLG_VEH_MENU_DEFAULT_HP

  9. #7
    Аватар для Elrmrnt-Kritik
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.11.2017
    Сообщений
    136
    Репутация:
    10 ±
    Там еще есть диалог DLG_VEH_MENU_DEFAULT, в котором идет switch(listitem). В нем уже идет последующий вызов диалога DLG_VEH_MENU_DEFAULT_HP:
    Код HTML:
    case 3: // ремонт
    {
    ShowPlayerDialog(playerid, DLG_VEH_MENU_DEFAULT_HP, DIALOG_STYLE_INPUT, "{0080BB}Меню транспортного средства",    "{FFFFFF}Введите новое количество здоровья для этого транспорта.", "Готово", "Назад");
    return 1;
    }

  10. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
     Раскрашивая текст, не забывайте про пользователей с тёмным стилем форума :)


    Так покажи какой текст выдаётся.
    А лучше сделай new.pwn и в нём сделай пример нескольких диалогов, а после скинь сюда этот new.pwn и свой инклуд с обработчиком для диалогов, дабы можно было самостоятельно тест сделать
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  11. Пользователь сказал cпасибо:
    Elrmrnt-Kritik (12.07.2018)
  12. #9
    Аватар для Elrmrnt-Kritik
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.11.2017
    Сообщений
    136
    Репутация:
    10 ±
    Было время сегодня еще поковыряться. В общем, все-таки проблемы были в макросе. Не знаю почему, но если вызывать напрямую Dialog_Open, все работает хорошо. В .lst вместо Dialog_Open так и был ShowPlayerDialog. Почему-то макрос не обрабатывался, хоть и стоял в самом начале.

    Пришлось заменить свой макрос:
    1. #define ShowPlayerDialog(%0,%1,%2,%3,%4,%5,%6) Dialog_Open(%0,%1,#%2,%3,%4,%5,%6)


    Этим:
    1. #define ShowPlayerDialog Dialog_Open


    И использую:
    1. ShowPlayerDialog(playerid, #DLG_NULL, DIALOG_STYLE_MSGBOX, "Благодарность", "Спасибо всем участникам данной темы", "Хорошо", "Закрыть");


    Спасибо, закройте пожалуйста

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •