Ресивер DL(нестандартные диалоги)
!!DL#:XXXX; работа с диалогом # (#>0)
На данный момент (TE) команда "сырая", полный
функционал и описание отсутствуют.
См. также: триггер !?DL, Формат шаблона, Элементы шаблона.
A#1/#2/#3/1
Изменить параметр элемента диалога
#1 – номер элемента
#2 – параметр:
Подтипы любого элемента управления (показать)52 – установить положение по X (без перерисовки) (число/числовая переменная)
53 – установить положение по Y (без перерисовки) (число/числовая переменная)
61 – установить ширину (без перерисовки) (число/числовая переменная)
Подтипы def (показать)9 – установить имя файла (текстовая переменная)
4 – установить кадр (число/числовая переменная)
12 – установить группу (число/числовая переменная)
8 – установить CloseDialog ?
10 – установить палитру (устройства) ?
13 – установить используемый цвет игрока
Подтипы кнопок (показать)9 – установить имя файла (текстовая переменная)
10 – установить палитру (устройства) ?
13 – установить используемый цвет игрока
Подтипы pcx (показать)11 – установить имя файла (текстовая переменная)
10 – установить палитру (устройства) ?
13 – установить используемый цвет игрока
Подтипы прокрутки (показать)49 – установить позицию (число/числовая переменная)
50 – установить кол-во позиций (число/числовая переменная)
Подтипы поля ввода (показать)51 – установить максимальную длину (число/числовая переменная)
3 – установить текст (текстовая переменная)
7 – получить текст ?
#3 – значение зависит от #2
Последний элемент команды [1] – обновление (фантомный параметр, который лучше не игнорировать)
Замечание: команда может быть вызвана в триггере !?DL, а также для редактирования диалога "на лету".
Устанавливает флаг 1 на Истину после своего выполнения.
C#/$2/$3
Установить особое callback-действие ИЛИ изменить курсор мыши.
# - тип действия: = 1 - закрыть диалог и возвратить данный код в качестве результата = (1000 + #) - установить курсор # (см. таблицу курсоров)Комментарий (показать)
Callback-действие (или функция в программировании) – это действие,
которое будет исполнено (вызвано, если речь идёт о функции) по выходу из текущего блока кода (обычно функции).
На примерах Славы видно, что при каждом событии диалога (таким, как движение мышью) вызывается определённая ЕRМ-функция,
которая и управляет всей остальной логикой. В функции мы выбираем, на какие действия как реагировать, а что игнорировать.
Команда DL:C1 была бы обычной функцией, если бы закрывала диалог и тут же выходила из текущего блока кода.
Но выполнения кода идёт вплоть до конца триггера.
E#1/#2
Включить элемент диалога
#1 – номер элемента
#2 – включить (1) или выключить (0)
Комментарий: при выключении кнопки на элементе будет отображаться следующий кадр в def-источнике.
Устанавливает флаг 1 на Истину после своего выполнения
H#1/#2
Настроить подсказку для элемента диалога
#1 – номер предмета диалога
#2 – подсказка (появится при наведении мышью на элемент)
Комментарии (показать)
Nz#
N^текст^
Анализ шаблона диалога
# – имя файла шаблона (может быть текстом или любой z-переменной)
Комментарии (показать)
P$
Передать действие функции $
Параметры функции:
x1 – действие: 0 – мышь двигается к другому квадрату 12 – нажата левая кнопка 13 – отпущена левая кнопка 14 – нажата правая кнопка x2 – X-координата кликнутого квадрата x3 – Y-координата кликнутого квадрата x4 – Уровень кликнутого квадратаПример (показать)
S$
Показать диалог
$ – получаемый объект (активный объект при закрытии)
Устанавливает флаг 1 на Ложь после своего выполнения
Комментарий (показать)
Это стандартный файл текстовой таблицы Героев 3.
Первые две строки пропускаются (могут быть заполнены текстом или оставлены пустыми).
Самый левый столбик также игнорируется (может быть заполнен текстом или оставлен пустым).
В шаблоне должно быть как минимум 14 колонок. Последняя графа в характеристике пункта (сразу после "флаг") это всегда текст подсказки – если текстовый пункт для подсказки присутствует. Подсказка требует для себя места даже там, где её не надо. Если графа пуста, то и подсказки как бы нет. Если же шаблон "обрезан", например, до 13 колонок, то для пункта "Text" (как самого "длинного") вместо пустой и "невидимой" подсказки выведится надпись …not found the text resourse….
Диалог начинается со следующих строк (в порядке столбца):
0: пропускается (можно использовать для внутренних заметок)
1: знак '#' - означает начало нового шаблона диалога
2: xxx номер - уникальный Id диалога
3: номер x позиции - X позиция от верхнего левого угла (-1 = центр экрана)
4: номер y позиции - Y позиция от верхнего левого угла (-1 = центр экрана)
5: dx номер - горизонтальный размер диалога
6: dy номер - вертикальный размер диалога
7: xxx номер - кол-во пунктов диалога (вы можете использовать меньше, но не больше, чем выбрали)
8: xxx номер - установить цвет рамки диалога под цвет номера игрока (-1 = для текущего игрока)
9: текст - имя PCX файла, который будет фоном. Примечание (скрыть)Если не указывать имя PCX файла (оставить поле пустым), то фон будет создан автоматически под указанные размеры диалога (стандартный фон игровых диалогов).
10: XXX номер - Id текстового пункта, который используется как поле с описанием 'hint' (для игнорирования укажите пустое значение поля).
Следующие строки анализируются как пункты диалога до тех пор, пока не будет знака '#' в первом столбце. Это может быть просто пустая строка с '#', или линия с началом нового диалога.
Самый главный элемент - первый символ в первом столбце.
Поддерживаемые на данный момент элементы:
'P' - PCX рисунок (показать)
'D' - кадр DEF рисунка (показать)
'A' - анимированный DEF рисунок
Ещё не поддерживается
'B' - кнопка (особый DEF) (показать)
Замечание: в DEF'е кнопки должно быть как минимум 2 кадра. При нажатии на
кнопку показывается второй кадр. Также при отключении кнопки (переводе элемента
диалога в режим выключен) показывается второй кадр. Например, если вы сделаете
кнопкой DEF с заклинаниями, то будет изображено заклинания "Вызов лодки", а при
нажатии или выключении вы увидите следующее заклинание - "Затопить лодку".
При нажатии на кнопку (не удерживая) происходит выход из диалога (выход в предыдущий диалог,
если диалог был открыт из другого диалога, и, конечно, кнопка должна быть включена).
Совет от Master'а: кнопкам всегда лучше давать отрицательные идентификаторы (Id = -32768…-1). Это гарантированно исключит совпадения и конфликты с прочими элементами геройских окон (других кнопок, надписей, картинок, DEF'ов и пр.), многие из которых незадокументированы в ERM-справке. Отрицательные Id работают совершенно нормально, но в геройском коде никогда не встречаются.
'T' - текст (показать)
0 | -1 | -4 | -13 | -18 | 4 | 33 | -16 | -14 | 9 | 35 | 6 | 2 | 24 | 22 | 3 | -5 | -11 | 23 | 8 | 12 | 11 | 16 | 25 | 10 | -6 | 1 | -12 | -10 | 5 | 7 | 13 |
- | |||||||||||||||||||||||||||||||
'S' - текст с вертикальной прокруткой (показать)
'E' - отредактированный текст (показать)
'V' - SMK или BIK видео (показать)
Примечания:
Вы можете хранить больше одного диалога в файле шаблона.
Вы не должны использовать одинаковые Id диалогов в различных файлах шаблонов.
Каждый диалог должен иметь свой унильный Id. Это также значит, что некоторые Id будут заняты под WoG-диалоги.
Пункт с номером 30721 - пункт отмены по умолчанию. Так, если игрок нажимает кнопку ESC когда выведен диалог - диалог закроется.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ||
Цвет текста (для элементов 'T' и 'S') | ещё цвета… | |||||||||||||||||
Белый: 17, 18, 30 Светло-жёлтый: 19, 21, 22 Жёлтый: 20, 29 Светло-зелёный: -6 Зелёный: -10, -4, 25 Голубой: -8, 26 Синий: 24 Фиолетовый: 28 Красный: 27 Тёмно-красный: -2 Чёрный: -9, -7, -5, -3, -1, 23 |