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;
}
Копирование статьи разрешено только с личного разрешения автора.
Последнее редактирование:
