Lua диалоги самп
Возвращаемые значения:
Данная функция не возвращает какого-либо конкретного значения.
Стили диалога:
0 | DIALOG_STYLE_MSGBOX | Обычный диалог с 2-мя кнопками |
1 | DIALOG_STYLE_INPUT | Диалог с полем для ввода |
2 | DIALOG_STYLE_LIST | Список из нескольких элементов |
3 | DIALOG_STYLE_PASSWORD | Позволяет игрокам вводить пароль не раскрывая его |
Функция:
Вызывается диалоговое окно функцией ShowPlayerDialog, структура функции такая:
Упрощение:
Обычно, чтобы не запоминать цифры и не писать длинное название стилей диалогов, я заменяю их такими макросами:
Или можно использовать <ID> стиля диалогового окна
Для написания основного текста диалогового окна вы можете использовать нижеприведенную таблицу:
\b | backspaсe |
\f | Form feed |
\n | Переход на новую строку |
\r | Возврат каретки |
\t | Табуляция |
\v | Вертикальная табуляция |
\' | Одиночная кавычка |
\" | Двойные кавычки |
\? | Вопросительный знак |
Мы сделали диалоговое меню, состоящее из 9 пунктов. А нам надо сделать так, чтобы при нажатии на первый пункт, у нас появлялся другой диалог с другой информацией. Для этот мы будем использовать вот такой код:
Условные конструкции:
Вот примет одной конструкции
Пример диалога с использование условной конструкцией
Создадим команду с использование ZCMD (командный процессор)
Креативизация:
Вы решили создать диалог, а он серы и скучный?
Мы можем раскрасить наш диалог в любые цвета формата RGB.
Пример:
Цвет мы заключаем в фигурную скобку "<" и ">"
FFFFFF - это белый цвет
3DB6F2 - светло-голубой
Думаю цвета вам не доставит большого труда отыскать. Для этого есть множество поисковых система.
Оператор switch – это оператор выбора. Он удобен в первую очередь тем, что может заменить много условий if, которые проверяют значение одной переменной.
Пример построения с этим оператором:
! Стоить отметить, что в официальной документации к языку написано: ‘In pawn, switch is a structured “if”‘, а это значит, что конструкция switch — это набор структурированных if’ов, отсюда следует, что switch не может работать быстрее if. Но это не всегда так.
Как видим — switch/case медленнее(значительно) if только на больших промежутках значений.
Сейчас бы я хотел немного рассказать вам о том, как можно в один диалог использовать гораздо большее количество символов.
Данный метод подходит, когда есть некоторые переменные, которые нужно внедрить в текст.
Есть еще один метод, который более менее мне известный - это константная переменная. Этот пример часто встречается в RLS/SRL модах. Мне же не очень нравится этот метод.Причины: не очень читабельный для человека, в отличии от первого примера.
В пером случаи делается все давольно просто и знакомо, где после обьявления макроса, мы задаем имя и параметр.
Совет: для объявления макроса/директивы, лучше использовать имена в ВЕРХНЕМ регистре. Почему? А вот почему: если мы будем исползовать имена в нижнем регистре, то есть вероятность того, что мы сможем перепутать их с переменными.
Во втором случае мы добавим перечисление enum <>.
Само слово перечисление говорит нам о том, что мы будет перечислять по порядку от нуля до N-ного числа.
TheChampGuess | Уроки Lua SAMP запись закреплена
Hellllloooo
TheChampGuess | Уроки Lua SAMP запись закреплена
Сам скрипт будет прикреплен к посту, а также в документе. Кроме того, вы можете ознакомиться с базовой версией функции, с которой и была написана оптимизированная версия текущего скрипта. За предварительную оптимизацию спасибо главному администратору данного сообщества - Vlad Tsurkan
Пока что не знаю, буду ли снимать видео по данному скрипту или нет, если что пишите в комменты. Скрипт имеет функционал включения/выключения, а также смены пола персонажа для отыгровок.
Привет. Сделал свой первый скрипт.
Считаю, что многим он поможет сэкономить пару секунд.
Меню для некоторых вещей.
Y - использует предмет. N - кладет его в инвентарь.
Пока меню есть при:
- Покупке еды. ((OLD)Командой /dfood можно вернуть выбор диалогом).
- Покупке канистры.
Cкипы диалогов. (new)
В новом обновлении я заметил много мешающих диалогов подтверждения и решил их убрать.
(Настройка в меню)
Создание диалоговых окон может показаться сложнее чем это есть на самом деле. В этом уроке описано как можно создать диалоговое окно, с выбором элемента. В данном диалоге не будет использовано много функций, так как это только демонстрация.
В этом примере показано, как сделать диалоговое окно, дающее возможность купить себе напитки (используя SetPlayerSpecialAction) за определенное количество денег.
Диалоговое окно будет вызываться командой. Добавьте это в паблик - public OnPlayerCommandText(playerid, cmdtext[])
if(! strcmp ( cmdtext , "/выпивка" , true ))
ShowPlayerDialog ( playerid , 1 , DIALOG_STYLE_LIST , "Что из этого вы хотите выпить?" , "Sprunk ($1)\nПиво ($2)\nВино ($3)" , "Купить" , "Отмена" );
return 1 ;
>
Как вы видите, использована функция ShowPlayerDialog со вторым типом диалогового окна.
Используя \n можно добавлять несколько элементов. ( \n - перенос строки (добавление новой строки))
Сейчас мы должны указать что будет выполнятся при выборе какого-либо элемента, используя авто вызываемую функцию OnDialogResponse .
В паблик - public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) вставляем:
Если вы всё правильно делали, то диалоговое окно будет работать отлично. Чтобы его вызвать, надо набрать команду /выпивка .
Читайте также: