Форум Pawn.Wiki - Воплоти мечту в реальность!: Диалоговый обработчик - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Диалоговый обработчик Оценка: -----

#1
Пользователь офлайн   Макс 

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

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

Скачать:
- GitHub
- u_dialogs.inc [2,89К]

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


Пример использования:
#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; 
}


Автор: Troels_Segor
1

#2
Пользователь офлайн   xaker 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Между скриптами диалоги будут взамодействовать?
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика