[Include] Easy Dialogs
#1

Easy Dialogs v. 1.1 by White_116

Здравствуйте, уважаемые пользователи форума. Хочу представить вам результат моей проделанной работы.
За основу бралась следующая работа: easydialog.inc by Emmet_

Описание:
Данный инклуд предназначен для того чтобы упростить создание диалогов.
Смысл заключается в том, что используя данный инклуд вам не придётся указывать ид диалога, запоминать его и создовать огромные конструкции в OnDialogResponse, вы должны будите писать всего лишь название диалога. Используя инклуд вы полностью забудите об OnDialogResponse, и о громадном скоплениее if(dialogid == ****).Для каждого диалога вы должны создать собственный callback, если он вам нужен, иначе можно и не создавать. Ещё одно достоинство является конструкция вызова callback-а, так как оно очень схоже с zcmd, порядка 90% . Тесты скорости я не проводил, если ваша душа не угомона и требует циферки, то делайте замеры сами.

Старый код:
PHP Code:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if (
dialogid == 1)
    {
        if (
response)
        {
            
SendClientMessageToAll(-1inputtext);
        }
        else 
SendClientMessage(playerid, -1"Вы закрыли диалог");
    }
    return 
1;
}
ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"Проверка""Напишите любой текст""Отправить""Закрыть"); 
Новый код:
PHP Code:
Dialog:Test()
{
    if (
response)
    {
        
SendClientMessageToAll(-1inputtext);
    }
    else 
SendClientMessage(playerid, -1"Вы закрыли диалог");
    return 
1;
}
ShowDialog(playeridD:TestDIALOG_STYLE_INPUT"Проверка""Напишите любой текст""Отправить""Закрыть"); 
Как вы заметили, удобство ощутимо. Так же PVar-ы дают преимущество выраженная в совместимости мода и различных подключаемых ФС, подключаемые даже во время работы.
Были добавлены две новые функции:
PHP Code:
native HideDialog(playerid);-Скрыть диалог
native ShowDialog
(playeriddialog[], stylecaption[], info[], button1[], button2[]);-Показать диалог 
Так же сохранено использование старых диалогов.Примечание: dialogid должен быть больше 256!

Установка:
-Закинуть EasyDialogs.inc в папку include котороя расположена pawno/include/.
-Подключить инклуд в начале мода и ФС после строки #include <a_samp>
Пример установки для шибко умных:
PHP Code:
#include <a_samp>
#include <EasyDialogs> 
Скачать v. 1.1:
Ссылка №1: PASTEBIN
Ссылка №2: SolidFiles

Версия 1.0
Ссылка №1: PASTEBIN
Ссылка №2: SolidFiles


Изменения:
v. 1.1
- Устранено падение сервера когда первым вызывался стандартный диалог.
- Вызывается подменённый OnDialogResponse
- Теперь действительно работает отовсюду
Reply
#2

Норм, но предпочитаю define и #define Sa-Mp 9000
case Sa-Mp+2: // Мне так кажеться удобней, ну для меня
Reply
#3

это уже какой по счёту диалоговый процессор? 5-й?
Reply
#4

Quote:
Originally Posted by Den_Bellik
View Post
Норм, но предпочитаю define и #define Sa-Mp 9000
case Sa-Mp+2: // Мне так кажеться удобней, ну для меня
Ты не понял суть этой темы, по-видимому..
Reply
#5

не думаю что это быстрей перебора (switch), а так отличная работа!
Reply
#6

а смысл этой конструкции?
Reply
#7

Quote:
Originally Posted by Jon_De
View Post
а смысл этой конструкции?
Облегчить работу с диалогами.
Reply
#8

Quote:
Originally Posted by Richard_Gere
View Post
Облегчить работу с диалогами.
и в чем она легче стала?
Reply
#9

Quote:
Originally Posted by Jon_De
View Post
и в чем она легче стала?
Кому-то удобно выводить функции каждого диалога в отдельный паблик, а кому-то просто в OnDialogResponse.

У Y-Less'a в библиотеке YSI есть инклюд y_dialog, так там будет более удобно, но мало кто его разработками пользуется.

P.S: Сам я не Easy Dialogs, не y_dialog не пользуюсь
Reply
#10

Quote:
Originally Posted by Richard_Gere
View Post
У Y-Less'a в библиотеке YSI есть инклюд y_dialog, так там будет более удобно, но мало кто его разработками пользуется.
Мало кто? На его библиотеках построены практически все зарубежные игровые моды.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)