Показано с 1 по 6 из 6

Тема: u_dlg.inc | Ответ на диалог по методу ZCMD

  1. #1
    Активный пользователь
    Регистрация
    06.10.2015
    Адрес
    Slobodskoy
    Возраст
    26
    Сообщений
    103
    Репутация: 93

    Звание: скоро придёт к известности

    u_dlg.inc | Ответ на диалог по методу ZCMD

    U_DIALOG.INC
    Использование диалогов не отличается от использования стандартным методом

    Описание:
    Этот сравнительно небольшой инклуд работает с OnDialogResponse() для обработки диалогов. Метод создания диалогов похож с zcmd. Вы можете показывать диалог в вашем игровой мода, а обрабатывать в фильтрскрипте.
    Я писал этот инклуд для упрощения работы с диалогами в больших скриптах (игровых модах).

    Возможности:
    1. Есть 4 варианта создания диалогов:
      PHP код:
      DIALOG/* id */ (playeridresponselistiteminputtext[]) 

          
      // что-то делаем


      DLG/* id */ (playeridresponselistiteminputtext[]) 

          
      // что-то делаем


      dialog/* id */ (playeridresponselistiteminputtext[]) 

          
      // что-то делаем


      dlg/* id */ (playeridresponselistiteminputtext[]) 

          
      // что-то делаем

    2. Вместо id диалога, можно использовать имя функции для вызова.
      PHP код:
      ShowPlayerDialogEx(playerid, function[], stylecaption[], info[], button1[], button2[]); 
      • параметр function[] принимает имя функции
      • остальные параемеры функции описаны здесь (клуц)


      Возвращаемые значения:
      • Функция не возвращает какого либо конкретного значения.


    Пример:
    PHP код:
    #include "u_dialog.inc"

    #define DLG_MESSAGE_SENDING (0)

    dialog:DLG_MESSAGE_SENDING(playeridresponselistiteminputtext[])
    {
        
    SendClientMessage(playerid, -1, (isnull(inputtext))?("Пустая строка !"):(inputtext));
    }

    public 
    OnPlayerSpawn(playerid)
    {
        
    ShowPlayerDialog(playeridDLG_MESSAGE_SENDINGDIALOG_STYLE_INPUT,
            
    "Тестовй диалог",
            
    "Введите текст:",
            
    "Ок"""
        
    );
        return 
    1;

    Скачать:
    Вы можете скачать инклуд от сюда (жми).

    Убрал лишние скудные функции, оптимизировал инклуд,
    а именно выделяемую память под массивы.
    Последний раз редактировалось Untonyst; 10.07.2016 в 21:24.
    Дудеть в трубу!
    ору

  2. 3 пользователей сказали cпасибо Untonyst за это полезное сообщение:

    Mexanizm (17.03.2016), spc. (19.03.2016), КабанчиК (17.03.2016)

  3. #2
    unknown2154
    Бродяга
    Не лучше для таких целей использовать метод вызова нужного кэллбэка из http://wiki.sa-mp.com/wiki/Dcmd#Define_line?

  4. #3
    Активный пользователь
    Регистрация
    06.10.2015
    Адрес
    Slobodskoy
    Возраст
    26
    Сообщений
    103
    Репутация: 93

    Звание: скоро придёт к известности
    Цитата Сообщение от Hidden125661 Посмотреть сообщение
    Не лучше для таких целей использовать метод вызова нужного кэллбэка из http://wiki.sa-mp.com/wiki/Dcmd#Define_line?
    Ну не знаю, надо сравнить скорость в обоих случаях. Но мне так лень что-то делать :(
    Дудеть в трубу!
    ору

  5. #4
    С++ & Pawn Programming Аватар для KrYpToDeN
    Регистрация
    30.03.2011
    Адрес
    Хабаровск
    Возраст
    28
    Сообщений
    1,988
    Репутация: 198

    Звание: - весьма и весьма положительная личность
    А зачем это?

    Добавить бы аргументы в диалог - круто было бы.

    А это, по моему мнению, бесполезло.

  6. #5
    Активный пользователь
    Регистрация
    06.10.2015
    Адрес
    Slobodskoy
    Возраст
    26
    Сообщений
    103
    Репутация: 93

    Звание: скоро придёт к известности
    Цитата Сообщение от KrYpToDeN Посмотреть сообщение
    А зачем это?

    Добавить бы аргументы в диалог - круто было бы.

    А это, по моему мнению, бесполезло.
    О каких аргументах идет речь? Ну там есть один вид диалогов, с немного другим аргументов, тебя это не радует? :(

    Суть этого инклуда в том, чтобы можно было реализовать недалеко от места показа диалога функцию-ответ, чтобы не листать все время в низ скрипта или вообще не перехватывать все колбэк -> можно создать отдельный файл, например, "gm_reg.inc" и туда просто взять и перенести код без его модифицирования без прочего порно.
    Дудеть в трубу!
    ору

  7. #6
    Активный пользователь
    Регистрация
    06.10.2015
    Адрес
    Slobodskoy
    Возраст
    26
    Сообщений
    103
    Репутация: 93

    Звание: скоро придёт к известности
    Обновил инклуд до третьей версии:
    - Добавлена функция IsPlayerUsingDialog;
    - Добавлена защита для вызова диалогов, при вызове несоответствующего значению в массиве с id вызванного диалога будет вызван колбэк OnPlayerUseDialogHider. Что-то много вызовов тут ... И это был вызов!))0);
    - Добавил еще макрос для быстрого создания функций ответов на диалог - UDLG. Суть в том, что в нем не надо указывать параметры, они подразумеваются под словом "PARAMS", хотя, пользоваться им не эстетично.

    Подробности в шапке топика, там же и примеры использования.
    Дудеть в трубу!
    ору

Ваши права

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