1 post in this topic

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

В общем, диалоговый процессор значительно упрощает работу с диалогами пользователям. Например, диалоги теперь можно создавать не только в стандартном 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.

 

Скачать

 

Edited by stibs

Share this post


Link to post
Share on other sites
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Dexter Nomad
      By Dexter Nomad
      При попытке компиляции кода возникает ошибка:
      error 076: syntax error in the expression, or invalid function call
      Не могу найти причину, буду благодарен, если не только укажете, где сама ошибка, но еще и исправите ее.
      Сам код:
          if(strcmp(cmd, "/carsharing", true) == 0)     {         if(IsPlayerConnected(playerid))         {             if(PlayerInfo[playerid][CarLic] == 0) return SCM(playerid, COLOR_RED, "У вас нет вод.прав! Вы можете получить их в автошколе!");         }     }  
    • Sanya_Greison
      By Sanya_Greison
      Куплю РП мод под сервер без бонуса. Бюджет до 150 $
      А также скриптера с Украины
      мой вк vk.com/i_am_sashko