[Урок] Диалоги - Форум Cheat-Master.ru
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
[Урок] Диалоги
[CM]iNiko Дата: Пятница, 12.02.2016, 17:27 | Сообщение # 1
Бывалый
Сообщений: 397
Статус: Offline
Всем привет,надеюсь такого урока не было ещё тут,сейчас я вам расскажу о типах диалогов,и что с ними можно делать. И так,есть такие виды диалогов:
Код
DIALOG_STYLE_LIST
DIALOG_STYLE_INPUT
DIALOG_STYLE_MXGBOX
DIALOG_STYLE_PASSWORD

Сейчас пройдёмся по каждому подробно:
DIALOG_STYLE_LIST - диалог для вывода списка нужных функций или команд.
Ко всем командам:
Для DC_CMD:
Код

CMD:dialog(playerid)
{
ShowPlayerDialog(playerid,555,DIALOG_STYLE_LIST,"Пример диалога","Содержимое списка 1\nСодержимое списка 2\nСодержимое списка 3","Кнопка 1","Кнопка 2");
return 1;
}

Стандартный командный процессор:
Код
if(strcmp(cmd, "/test", true) == 0)
{
        ShowPlayerDialog(playerid, 8007, DIALOG_STYLE_LIST, "Пример диалога","Содержимое списка 1\nСодержимое списка 2\nСодержимое списка 3","Кнопка 1","Кнопка 2");
        return 1;
}

Информация: У вас в моде паблик отвечающий за диалоги может называться по другому
И в
Код
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
вставляем следующий код:
Информация: Измените id диалога,что бы он не совпадал уже с существующими
Код
{
if(dialogid == 555)
{
if(response)
{
if(listitem == 0) return SendClientMessage(playerid,0x88AA88AA,"Вы нажали на кнопку 'Содержимое списка 1'");
if(listitem == 1) return SendClientMessage(playerid,0x88AA88AA,"Вы нажали на кнопку 'Содержимое списка 2'");
if(listitem == 2) return SendClientMessage(playerid,0x88AA88AA,"Вы нажали на кнопку 'Содержимое списка 3'");

}
else
{
SendClientMessage(playerid,0x88AA88AA,"Вы нажали на 'Кнопка 2' либо Esc");
return 1;
}
}
return 1;
}

Выглядит данный диалог таким образом:

Идём дальше. DIALOG_STYLE_MSGBOX - данный диалог используется для красивого вывода информации,дабы не создавать лишний флуд в чат игроку.
Ко всем командам:
Для DC_CMD:
Код
CMD:dialog1(playerid)
{
        ShowPlayerDialog(playerid,556,DIALOG_STYLE_MSGBOX,"Пример диалога","Содержимое(текст)","Кнопка 1","Кнопка 2");
        return 1;
}

Стандартный командный процессор:
Код

f(strcmp(cmd, "/test", true) == 0)
{
        ShowPlayerDialog(playerid, 556 , DIALOG_STYLE_MSGBOX, "Пример диалога", "Содержимое(текст)", "Кнопка1", "Кнопка2");
        return 1;
}

Информация: У вас в моде паблик отвечающий за диалоги может называться по другому
И в
Код
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
вставляем следующий код:
Информация: Измените id диалога,что бы он не совпадал уже с существующими
Код

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
        if(dialogid == 556)
        {
            if(response)
                {
                    SendClientMessage(playerid,0x88AA88AA,"Вы нажали на 'Кнопка 1' либо Enter");
                    return 1;
                }
                else
                {
                    SendClientMessage(playerid,0x88AA88AA,"Вы нажали на 'Кнопка 2' либо Esc");
                    return 1;
                }
        }
        return 1;
}

Данный диалог выглядит таким образом:

DIALOG_STYLE_INPUT и DIALOG_STYLE_PASSWORD одинаковы по своей сути. Отличаются они тем,что DIALOG_STYLE_PASSWORD - скрывает вводимые символы в диалоговое окно,вместо набранного текста появятся звёздочки,а DIALOG_STYLE_INPUT - не скрывает вводимые вами символы.
Ко всем командам:
Для DC_CMD:
Код
CMD:dialog2(playerid)
{
        ShowPlayerDialog(playerid,557,DIALOG_STYLE_INPUT,"Пример диалога","Содержимое(текст)","Кнопка 1","Кнопка 2");
        return 1;
}

Для стандартного командного процессора:
Код
if(strcmp(cmd, "/test", true) == 0)
{
        ShowPlayerDialog(playerid,558,DIALOG_STYLE_INPUT,"Пример диалога","Содержимое(текст)","Кнопка1","Кнопка2");
        return 1;
}

Информация: У вас в моде паблик отвечающий за диалоги может называться по другому
И в
Код
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
вставляем следующий код:
Информация: Измените id диалога,что бы он не совпадал уже с существующими
Код


        if(dialogid == 557)
        {
            if(response)
            {
                new str[100]; format(str,sizeof(str),"Вы ввели: %s",inputtext);
                SendClientMessage(playerid,0x88AA88AA,str);
                return 1;
                }
                else
                {
                    SendClientMessage(playerid,0x88AA88AA,"Вы нажали на 'Кнопка 2' либо Esc");
                    return 1;
                }
        }
        return 1;
}

Выглядит данный диалог таким образом:


Диалоги которые ввели в 0.3.7 версии
В новой версии SA:MP были введены два новых видов диалогов а именно:
Код
DIALOG_STYLE_TABLIST  
DIALOG_STYLE_TABLIST_HEADERS

DIALOG_STYLE_TABLIST - данный диалог зачастую используется на различных серверах при покупке чего либо,где указано название,цену и количество которое продастся вам.
Ко всем командам:
Для DC_CMD:
Код
CMD:dialog5(playerid)
{
        ShowPlayerDialog(playerid, 1337, DIALOG_STYLE_TABLIST, "Покупка оружия",
"Дигл\t$5000\t100\n\ Дробовик\t$5000\n100\n\ Пистолет\t$1000\t50", // и т. д.
"Выбрать", "Отмена");  
}

Для стандартного командного процессора:
Код
if(strcmp(cmd, "/test", true) == 0)
{
        ShowPlayerDialog(playerid, 1337, DIALOG_STYLE_TABLIST, "Покупка оружия",
"Дигл\t$5000\t100\n\ Дробовик\t$5000\n100\n\ Пистолет\t$1000\t50", // и т. д.
"Выбрать", "Отмена");  
}

Выглядит данный диалог таким образом:

DIALOG_STYLE_TABLIST_HEADERS: - выглядит так-же как и предыдущий тип диалога,но в этом диалоге вы можете указать название чего-либо над диалоговым окном.
Ко всем командам:
Для DC_CMD:
Код
CMD:dialog6(playerid)
{
        ShowPlayerDialog(playerid, 777, DIALOG_STYLE_TABLIST_HEADERS, "Покупка оружия",
"Оружие\tЦена\tпатроны\n\ Дигл\t$5000\t100\n\ Дробовик\t$5000\t100\n\ Пистолет\t$1000\t50", // и т. д.
"Выбрать", "Отмена");  
}

Для стандартного командного процессора:
Код
if(strcmp(cmd, "/test", true) == 0)
{
       ShowPlayerDialog(playerid, 777, DIALOG_STYLE_TABLIST_HEADERS, "Покупка оружия",
"Оружие\tЦена\tпатроны\n\ Дигл\t$5000\t100\n\ Дробовик\t$5000\t100\n\ Пистолет\t$1000\t50", // и т. д.
"Выбрать", "Отмена");  
}

Выглядит данный диалог таким образом:


Теперь объясню некоторые вещи:
\n - значит перенос строки;
\t - табуляция;
777 - id диалога.
Так-же у вас в моде может вместо
Код
if(dialogid == тут будет id диалога)
МОЖЕТ использоваться
Код
case id диалога
,если у вас в моде используется
Код
case
то просто замените
Код
if(dialogid == тут будет id диалога)
на
Код
case


Задавайте вопросы,рад буду помочь всем.


Всё случается в этой жизни.

Сообщение отредактировал [CM]iNiko - Воскресенье, 10.04.2016, 09:05
Asan2012 Дата: Пятница, 12.02.2016, 17:42 | Сообщение # 2
Боец
Сообщений: 68
Статус: Offline
Написал свой первый диалог, спс wink
[CM]iNiko Дата: Воскресенье, 14.02.2016, 10:19 | Сообщение # 3
Бывалый
Сообщений: 397
Статус: Offline
Подниму тему

Всё случается в этой жизни.
Quizzes Дата: Среда, 02.03.2016, 16:42 | Сообщение # 4
Новичок
Сообщений: 2
Статус: Offline
Спасибо, за такой подробный урок. Молодец, что не поленился :З
[CM]iNiko Дата: Среда, 02.03.2016, 17:38 | Сообщение # 5
Бывалый
Сообщений: 397
Статус: Offline
Цитата Quizzes ()
Спасибо, за такой подробный урок. Молодец, что не поленился :З

Благодарю.


Всё случается в этой жизни.
Укроп Дата: Среда, 09.03.2016, 19:53 | Сообщение # 6
Любитель
Сообщений: 31
Статус: Offline
Сойдет.

)
[СM]Myренок Дата: Четверг, 10.03.2016, 01:09 | Сообщение # 7
Боец
Сообщений: 71
Статус: Offline
Все норм,годнота !
[CM]iNiko Дата: Среда, 30.03.2016, 20:40 | Сообщение # 8
Бывалый
Сообщений: 397
Статус: Offline
Цитата Укроп ()
Сойдет.

Цитата Укроп ()
Все норм,годнота !

Спасибо,старался же

Добавлено (30.03.2016, 20:40)
---------------------------------------------
Подниму тему,ведь она полезная для новичков как ни как.


Всё случается в этой жизни.
[CM]Планокур Дата: Понедельник, 04.04.2016, 02:58 | Сообщение # 9
实现你的目标
Сообщений: 433
Статус: Offline
Очень хорошо оформил тему, спасибо за урок, плюс твой)

[CM]iNiko Дата: Понедельник, 04.04.2016, 17:43 | Сообщение # 10
Бывалый
Сообщений: 397
Статус: Offline
Цитата [CM]Планокур ()
Очень хорошо оформил тему, спасибо за урок, плюс твой)

Спасибо,мне очень приятно


Всё случается в этой жизни.
Shaga228 Дата: Вторник, 05.04.2016, 12:03 | Сообщение # 11
Новичок
Статус: Offline
Спасибо, научился
[CM]iNiko Дата: Суббота, 09.04.2016, 15:42 | Сообщение # 12
Бывалый
Сообщений: 397
Статус: Offline
Цитата Shaga228 ()
Спасибо, научился

Всегда рад помочь wink

Добавлено (09.04.2016, 15:42)
---------------------------------------------
подниму полезный урок


Всё случается в этой жизни.
Rider405402 Дата: Суббота, 09.04.2016, 18:51 | Сообщение # 13
Любитель
Сообщений: 47
Статус: Offline
Ты откуда маленький его копировал?
[CM]iNiko Дата: Воскресенье, 10.04.2016, 08:56 | Сообщение # 14
Бывалый
Сообщений: 397
Статус: Offline
Цитата Rider405402 ()
Ты откуда маленький его копировал?

Маленький? О боги,смотрите "взрослый" в теме. Максимум,что я как ты написал "копировал" взял уже готовые картинки ._.


Всё случается в этой жизни.
[CM]iNiko Дата: Пятница, 06.05.2016, 09:25 | Сообщение # 15
Бывалый
Сообщений: 397
Статус: Offline
Цитата Coober ()
Вот как раз диалогами занят, спасибо как раз кстати )

Всегда пожалуйста bye


Всё случается в этой жизни.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: