Замена диалога самп

Обновлено: 03.07.2024


Сегодня я просматривал тему "Какие уроки вы хотели бы видеть у нас на форуме?" и я увидел там один комментарий.
1)Название Урока: Урок по Диологам.
2)Суть урока: Все по диалогам виды и тд, что бы было написанно как сделать последовательность от 1 го диолога ко второму обход из 2 диолога в 1 вый
3)Что это даст: при создании чего либо новечки уже смогут орентироваться в кое чем

И вот решил создать тему с подробным объяснением и примерами использования диалогов.

Типы диалогов.
Всего типов диалоговых окон , это:

2. DIALOG_STYLE_INPUT - Диалог с полем, в которое можно ввести что-либо.
4. DIALOG_STYLE_PASSWORD - Диалог, с полем ввода пароля.

Также вместо ввода названия стиля диалогового окна можно использовать цифры 0, 1, 2, 3

1 ID - DIALOG_STYLE_INPUT - Диалог с полем, в которое можно ввести что-либо.
3 ID - DIALOG_STYLE_PASSWORD - Диалог, с полем ввода пароля.

Функция, для вывода диалога:

ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])

playerid - ID игрока которому будет показан диалог.
dialogid - ID диалога.
style - Стиль диалогового окна.
caption[] - Заголовок диалога.
info[] - Текст диалога.
button1[] - Название левой кнопки диалога.
button2[] - Название правой кнопки диалога.

\n - для перевода строки
\t - для табуляции

Теперь поработаем с командами:

В public OnDialogResponse добавляем:

Также можно сделать чтобы при нажатии кнопки выскакивал другой диалог:

DIALOG_STYLE_INPUT - Диалог с полем, в которое можно ввести что-либо.

В public OnDialogResponse добавляем:

DIALOG_STYLE_LIST - Диалог, со списком.

В public OnDialogResponse добавляем:

DIALOG_STYLE_PASSWORD - Диалог, с полем ввода пароля.
Этот диалог отличается от DIALOG_STYLE_INPUT только тем что он скрывает то что вы вводите на •.

Если вы хотите обновить Ваш сервер новыми доработками - то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Модификации SA

Хотите разнообразить свою игру в San Andreas? Смелее в наш раздел. Отличный сборник готовых решений. Играйте с удовольствием

Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
Ручное создание новых тем невозможно.

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
  • Автор темы Nexius_Tailer
  • Дата начала 5 Янв 2016
  • Теги alt dialogsalternative dialogsdialogs includegameincludetextdraw dialogtextdraw dialogs

Nexius_Tailer

Заблокирован

Alternative Dialogs - это диалоги с новым дизайном.
Они имеют почти все функции, что и обычные диалоги, но при этом их можно использовать вместе.
Новый проработанный дизайн, нарисованный текстдравами, кардинально изменит интерфейс вашего сервера.

Как они выглядят:

Чтобы выбрать любой из доступных скинов, просто напишите перед подключением инклуда:

  • ShowPlayerAltDialog (playerid, dialogid, style, caption[], info[], button1[], button2[] = "") - используйте, чтобы показать диалог игроку
  • OnAltDialogResponse (playerid, dialogid, response, listitem) - вызывается, когда игрок "ответил" на диалог
  • GetPlayerAltDialog (playerid) - используйте, чтобы узнать id активного диалога у игрока

Скачайте alt_dialogs.inc из аттача (несколько версий внутри, кроме 1.5, 5.0 и 5.5).

Подключите это к нужному моду таким образом:

Затем перекомпилируйте ваш скрипт.
Далее вы можете использовать любую из доступных выше функций в своём скрипте.

Отображение русских символов:

Пока что их не обнаружено. Если вы нашли баг - сообщите, пожалуйста, о нём в этой теме.

Zamaroht и adri1 за Zamaroht's Textdraw Editor

Часто задаваемые вопросы:

В: Как скрыть показанный диалог?
О: Это можно сделать как и в обычных диалогах.
Используя функцию ShowPlayerAltDialog , укажите параметр dialogid со значением -1.

В: Что означает параметр response со значением 2 в OnAltDialogResponse ?
О: Это означает, что диалог был закрыт нажатием "крестика" , либо на ESC .

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

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

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-ного числа.

Изображение

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" , // и т.д.
"Выбор" , "Отмена" );

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