В теме 1 сообщение

Уже больше года существуют диалоговые процессоры, однако мало тем про них.

В общем, диалоговый процессор значительно упрощает работу с диалогами пользователям. Например, диалоги теперь можно создавать не только в стандартном OnDialogResponse, но и в любой части мода, как на DC_CMD. Также теперь вовсе необязательно придавать номер диалоговому окну. Можно ввести его название, например

ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_MSGBOX, "Название", "Текст", "Кнопка_1", "Кнопка_2");

И использовать:

DLG:DIALOG_REGISTER(playerid, response, listitem, inputtext[])
{ /*ваш код*/ }

(ранее для этого нужно было вручную дефайнить названия диалогов).

 

Тесты скорости:

'ShowPlayerDialog' productiveness Test result:
ShowPlayerDialog = 439ms
OnDialogResponse = 303ms
 
// И ещё раз
 
'ShowPlayerDialog' productiveness Test result:
ShowPlayerDialog = 416ms
OnDialogResponse = 311ms
 
//=================
 
eDialog include productiveness Test result:
ShowPlayerDialog = 533ms
OnDialogResponse = 74ms
 
// И ещё раз
 
eDialog include productiveness Test result:
ShowPlayerDialog = 573ms
OnDialogResponse = 65ms
Тест реализован на цикле в 100000 итераций, в которых сначала показывается диалог, а после вызывается OnDialogResponse. Для стандартного движка создано 200 простых диалогов в OnDialogResponse. Как видно из теста, eDialog слегка проигрывает стандартному ShowPlayerDialog при вызове диалога, но в выигрышном положении при обработке содержимого диалога.
 
Использовать можно тремя способами:
DLG:DIALOG_NAME(playerid, response, listitem, inputtext)
{
        return true;
}
DIALOG:DIALOG_NAME(playerid, response, listitem, inputtext)
{
        return true;
}
E_DLG:DIALOG_NAME()
{
        return true;
}

(вместо DIALOG_NAME могут быть как цифры, так и слова).

Include автора содержит еще функцию показа окна информации (диалоговое окно типа DIALOG_STYLE_MSGBOX, которое можно только закрыть, названия кнопок указывать не нужно):

ShowInfoDialog(playerid, "Название", "Текст");

Автор: Edwin.

 

Скачать

 

Отредактировано пользователем stibs

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Артём Профиков
      От Артём Профиков
      У меня есть система подсказок вот так она выглядет
      ShowNotification(playerid, тип, "текст", время, "команда через /", "текст кнопки");
      Только есть вопрос как сделать так чтоб она активировалась в определенном радиусе? Заранее спасибо