Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
  • Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.

Include Диалоговый обработчик

Troels_Segor

Новичок
Удобная работа с диалогами, путем создания диалоговых функций, размещаемых в любом удобном для вас месте.

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

последнюю версию.
проекта на GitHub.

Лог изменений:
Код:
1.0
[INDENT]- Создание первой версии.[/INDENT]
1.1
[INDENT]- Добавление функции IsPlayerUsingDialog().
- Добавление колбэка OnDialogHide().[/INDENT]
1.2
[INDENT]- Исправление макроса создания функций-обработчиков.[/INDENT]
1.3
[INDENT]- Удаление функции IsPlayerUsingDialog().
- Удаление колбэка OnDialogHider().
- Некоторая оптимизация памяти.[/INDENT]
1.4
[INDENT]- Удаление макроса DLG, как и его псевдонимы.
- Добавление нового синтаксиса создания диалогов - DialogResponse.
- Добавление DialogShowForPlayer (псевдоним ShowPlayerDialogEx())
- Некоторая оптимизация памяти.
- Исправление этого бага.[/INDENT]
1.5
[INDENT]- Добавление макроса IsDialog().
- Обновление синтаксиса создания функций.
- Обновил OnDialogReceived() (раньше он вообще был назван не правильно, логическая ошибка). Добавил два аргумента - response и listitem.
- Удалил DialogShowForPlayer(). Теперь только ShowPlayerDialogEx().
- Удалил макрос isnull().[/INDENT]
Пример использования:

PHP:
#include <a_samp> 
#include "u_dialogs" 

public OnPlayerConnect(playerid) 
{ 
    ShowPlayerDialogEx( 
        playerid, "test", DIALOG_STYLE_MSGBOX, 
        "Важное уведомление", 
        "Вы сегодня спали?", 
        "Да", "Нет" 
    ); 
    return 1; 
} 

/* 
  Решил сделать создание функций-обработчиков похожими  
  на создание обычных функций. Ведь, зачастую, нам не нужно  
  использовать все 4 аргумента, а достаточно только два. 
  
  Ненужные аргументы можно скрыть через 
  #pragma unused <arg> 
  
  Функция всегда должна возвращать любое значение. 
*/ 
DialogResponse:test(playerid, response, ...) 
{ 
    if (!response) 
    { 
        SendClientMessage(playerid, -1, "Как это вы не спали?!"); 
    } 
    else 
    { 
        SendClientMessage(playerid, -1, "Хорошо что вы спали. Сегодня много дел!"); 
    } 
    return 1; 
} 

/* 
  Этот колбэк вызывает перед обработкой диалога и, 
  в случает возвращение нуля, не обрабатывает диалог. 
  При любом другом значении - обрабатывает. 
*/ 
public OnDialogReceived(playerid, function[], response, listitem) 
{ 
    if (IsDialog(function, "test")) 
    { 
        SendClientMessage(playerid, -1, "Вам запрещено отвечать на этот вопрос!"); 
        return 0; 
    } 
    return 1; 
}
Копирование статьи разрешено только с личного разрешения автора.​
 
Последнее редактирование:
Сверху Снизу