Стили диалогов самп

Обновлено: 08.07.2024

Возвращаемые значения:
Данная функция не возвращает какого-либо конкретного значения.

Стили диалога:

0DIALOG_STYLE_MSGBOXОбычный диалог с 2-мя кнопками
1DIALOG_STYLE_INPUTДиалог с полем для ввода
2DIALOG_STYLE_LISTСписок из нескольких элементов
3DIALOG_STYLE_PASSWORDПозволяет игрокам вводить пароль не раскрывая его

Функция:
Вызывается диалоговое окно функцией ShowPlayerDialog, структура функции такая:

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

Или можно использовать <ID> стиля диалогового окна

Для написания основного текста диалогового окна вы можете использовать нижеприведенную таблицу:

\bbackspaсe
\fForm feed
\nПереход на новую строку
\rВозврат каретки
\tТабуляция
\vВертикальная табуляция
\'Одиночная кавычка
\"Двойные кавычки
\?Вопросительный знак
Ответ на диалог:
Мы сделали диалоговое меню, состоящее из 9 пунктов. А нам надо сделать так, чтобы при нажатии на первый пункт, у нас появлялся другой диалог с другой информацией. Для этот мы будем использовать вот такой код:
Условные конструкции:
Вот примет одной конструкции

Пример диалога с использование условной конструкцией

Создадим команду с использование ZCMD (командный процессор)

Спойлер: Пример команды на стандартном командном процессере И в public OnDialogResponse мы добавим ответ на наш диалог
Креативизация:
Вы решили создать диалог, а он серы и скучный?
Мы можем раскрасить наш диалог в любые цвета формата RGB.
Пример:

Цвет мы заключаем в фигурную скобку "<" и ">"
FFFFFF - это белый цвет
3DB6F2 - светло-голубой
Думаю цвета вам не доставит большого труда отыскать. Для этого есть множество поисковых система.

Что же такое этот оператор switch?
Оператор switch – это оператор выбора. Он удобен в первую очередь тем, что может заменить много условий if, которые проверяют значение одной переменной.
Пример построения с этим оператором:
! Стоить отметить, что в официальной документации к языку написано: ‘In pawn, switch is a structured “if”‘, а это значит, что конструкция switch — это набор структурированных if’ов, отсюда следует, что switch не может работать быстрее if. Но это не всегда так.
Как видим — switch/case медленнее(значительно) if только на больших промежутках значений.

Сейчас бы я хотел немного рассказать вам о том, как можно в один диалог использовать гораздо большее количество символов.

Данный метод подходит, когда есть некоторые переменные, которые нужно внедрить в текст.

Есть еще один метод, который более менее мне известный - это константная переменная. Этот пример часто встречается в RLS/SRL модах. Мне же не очень нравится этот метод.Причины: не очень читабельный для человека, в отличии от первого примера.

В пером случаи делается все давольно просто и знакомо, где после обьявления макроса, мы задаем имя и параметр.

Совет: для объявления макроса/директивы, лучше использовать имена в ВЕРХНЕМ регистре. Почему? А вот почему: если мы будем исползовать имена в нижнем регистре, то есть вероятность того, что мы сможем перепутать их с переменными.

Во втором случае мы добавим перечисление enum <>.

Само слово перечисление говорит нам о том, что мы будет перечислять по порядку от нуля до N-ного числа.

Image:dialog_style_msgbox.jpg

4 - DIALOG_STYLE_TABLIST - похож на стиль 2, но может размещать контент в таблицу максимум в 4 колонки. Больше 4х не покажет.

Image:dialog_style_tablist.jpg

Example Usage:

Примечание

5 - DIALOG_STYLE_TABLIST_HEADERS - похож на стиль 4, но у таблицы могут быть заголовки.

Изображение

4 - DIALOG_STYLE_TABLIST - похож на стиль 2 , но может размещать контент в таблицу максимум в 4 колонки. Больше 4х не покажет.

Изображение

ShowPlayerDialog ( playerid , dialogid , DIALOG_STYLE_TABLIST , "Покупка оружия" ,
"Deagle\t$5000\t100\n\
Sawnoff\t$5000\t100\n\
Pistol\t$1000\t50" , // и т.д.
"Select" , "Cancel" );

5 - DIALOG_STYLE_TABLIST_HEADERS - похож на стиль 4 , но у таблицы могут быть заголовки.

Изображение

ShowPlayerDialog ( playerid , dialogid , DIALOG_STYLE_TABLIST_HEADERS , "Покупка оружия" ,
"Оружие\tЦена\tПатроны\n\
Deagle\t$5000\t100\n\
Sawnoff\t$5000\t100\n\
Pistol\t$1000\t50" , // и т.д.
"Выбор" , "Отмена" );

Image:dialog_style_msgbox.jpg

4 - DIALOG_STYLE_TABLIST - похож на стиль 2, но может размещать контент в таблицу максимум в 4 колонки. Больше 4х не покажет.

Image:dialog_style_tablist.jpg

Example Usage:

Примечание

5 - DIALOG_STYLE_TABLIST_HEADERS - похож на стиль 4, но у таблицы могут быть заголовки.

Типы диалогов и с чем их подавать Оценка: 3 Голосов

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

sOflY


И так. Есть диалоги следующих видов:

А теперь по подробнее.
DIALOG_STYLE_LIST - вид диалога для так сказать вывода списка нужных вам функций/команд и т.д.
Код диалога данного:

Выглядит данный диалог так:
Ну нажмём к примеру первую кнопку из списка (а видя по коду мы видим, что при нажатии любой кнопки выводиться текст.)
Идём дальше.
DIALOG_STYLE_MSGBOX - данный тип диалога используется для красивого вывода информации (замена чата). Покрайне мере я так его использую))
Еще его можно использовать в регестрации к примеру выбор 1 из двух "Мужчина/женщина" и т.д.
Код нашего диалога:
Данный диалог выглядит так:
Как мы видим там две кнопки. Для разъяснения: if(response) < содержимое(код) первой кнопки >else < содержимое(код) второй кнопки >
DIALOG_STYLE_INPUT либо DIALOG_STYLE_PASSWORD - И третий, последний вид диалогов -- это диалоги с функцией ввода данных в них и вывода их на экран(не обязательно в общем то :))
DIALOG_STYLE_INPUT и DIALOG_STYLE_PASSWORD ничем практически не отличается кроме того, что в DIALOG_STYLE_PASSWORD вводимое сразу же скрывается звёздочками на экране, а в DIALOG_STYLE_INPUT не скрывается. По этому далее у нас пойдёт разговор как об одном виде диалогов т.к. они можно сказать идентичны
Код нашего диалога:
Выглядит диалог так:
Введем к примеру текст: "Текст введенный в окошко". И видим что в игре высвечивается текст который мы ввели
Наверное вы заметили такое, как inputext. Так вот при вводе текста(любого содержимого короче) в окошко DIALOG_STYLE_INPUT это всё записывается на переменную inputtext и выводиться (при вашем желании) в чат. Элементарно в принципе)
[/HR]
Вопрос 1. Как сделать одну кнопку вместо двух?
Делаем так:
Вместо такого:

Ставим такое:

Вопрос 2. Как вместо длинных DIALOG_STYLE_. сделать использование цифр к примеру 0,1,2,3
А так и использовать. Вот в a_samp.inc

И теперь можно использовать так:

Вопрос 3. Можно ли использовать ID диалога несколько раз?
Да, можно с учётом того что на него не будет прописаны функции. Но всё-таки не желательно использование одного ID диалога много раз т.к. можно нагрузить сильно мод)
Вопрос 4. Можно ли удалить название диалога либо сменить его цвет?
Да можно. Удаление названия:

Сменить цвет названия:

И можно использовать так:

Читайте также: