DL
Вещь - супер. Работает под TE и WOG 3.59
Благодарю SnoRT'a за перевод большей части.
Код
!!DL#:XXXX; Ход диалога #, #>0.
Код
(Переведено SnoRT'ом)
A#1/#2/$ Изменение характеристик пункта диалога.
#1 - ID пункта
#2 тип $
3 Текст (string): новый текст пункта
4 Def (номер): новый кадр Def'а
11 Pcx (string): новый рисунок
Примечание:
Может быть вызвано в триггере !?DL, тем самым позволяет изменять диалог "на лету".
Примечание Demiurg'a:
Имхо, очень сырая команда. Может вызывать ошибки
Код
(Переведено Demiurg'ом)
C# - Установить определенное возвращаемое действие или изменить текущий курсор.
# - тип действия
1 - закрыть диалог с возвращением текущего элемента(Смотрите !!DL:S . Внимание!!! Если вы применяете под TE !!DL:C1, и у вас этот диалог не является первым(открыт в другом диалоге), то данная функция закроет все диалоги - Прим. Demiurg'a)
1000+# - установить текущий курсор как решетка # (смотрите формат PM2)
Комментарии:
Для этой комманды вам не нужно устанавливать Id диалога в части !?DL . Это действует на активный диалог и любой элемент.
Примеры:
!!DL:C1; - закрыть диалог
!!DL:C1000; - изменить курсор на стрелу (стандартный курсор)
!!DL:C1042; - изменить курсор на 'Разбитая лодка'
Код
(Переведено Demiurg'ом)
E#1/#2 Включить элемент диалога.
#1 - ID элемента диалога
#2 - включить (1) или выключить (0) элемент
Комментарии(Прим. Demiurg'a)
При выключении кнопки показывается следующий кадр дефа (смотрите Формат шаблонов -> 'B' - кнопка.)
Код
(Переведено Demiurg'ом)
H#1/#2 Установить подсказку для элемента диалога
#1 - ID элемента диалога
#2 - подсказка для элемента (появляется, когда вы движете мышь через элемент)
Комментарии:
#2 может быть глобальной или статической z-переменной.
Текст анализируется перед отображением (не во время установки).
Код
(Переведено Demiurg'ом)
N# Анализ шаблона диалога
# - имя файла шаблона (может быть текстом, глобальной, локальной или статической z-переменной)
Комментарии:
Текст анализируется перед использованием.
Эта команда загружает файл шаблона (если еще не загружен), ищет диалог (используя Id) в файле и анализирует его.
Она не показывает диалог.
Главная цель этого дать нам шанс настроить загруженный диалог перед его показом.
Результат:
Флаг 1 = 1 если успешно
Флаг 1 = 0 если случились ошибки (не найден шаблон диалога)
Формат шаблона описан ниже.
Код
(Переведено SnoRT'ом)
P$ Передать контроль действий функции $
Параметры функции:
x1 - действие
0 - мышь сдвинулась на другой квадрат
12 - левая кнопка мыши нажата
13 - левая кнопка мыши отпущена
14 - правая кнопка мыши нажата
x2 - x координаты клика на карте
x3 - y координаты клика на карте
x4 - уровень клика на карте
Пример:
!?OB8/11/0;
!!DL:P12345;
!!IF:M^Заклинание выполнено.^;
!?FU12345;
!!if&x1=0:; мышь сдвинулась
!!OBx2/x3/x4:T?y1; получить тип объекта, куда указывает мышь
!!if&y1=34:; герой?
!!DL:C1042; курсор затопленной лодки
!!el:;
!!DL:C1000; стандартный курсор
!!en:;
!!FU:E;
!!en:;
!!if&x1=13:; левая кнопка мыши нажата
!!OBx2/x3/x4:T?y1 C?y2;
!!if&y1=34:; герой
!!HEy2:K; убиваем героя
!!DL:C1000; стандартный курсор
!!en:;
!!FU:E;
!!en:;
!!if&x1=14:; нажатие правой кнопки
!!DL:C1;
!!en:;
Код
(Переведено Demiurg'ом)S$ Показать диалог
$ - возвращенный элемент (активный элемент, когда диалог закрывается)
Комментарии:
Показывает диалог (с определенным Id) и ждет пока он не закроется. Это означает, что следующий ресивер запускается не сразу, а только когда диалог закрывается любыми средствами.
Вы можете не использовать параметр вовсе, это означает, что возвратный код игнорируется.
Вы можете показывать один диалог "из другого" и последовательность может быть неограничена но вы можете иметь только ОДИН диалог такого типа на экране одновременно. Это означает, что вы не можете вызвать диалог X из диалога X.[code]
[code](Переведено SnoRT'ом)
!?DL; Триггер настройки диалогов
Вызывается, когда действие мыши или клавиатуры (ещё не поддерживается) перехватывется на любом пункте диалога.
Примечания:
Когда триггер выполняется, следующие переменные вводятся:
v998 = Id Диалога
v999 = Id Пункта диалога
v1000 = Действие
Доступные действия (для v1000):
12 - нажатие левой кнопки мыши
13 - отжатие (не знаю как это правильно обозвать =)) левой кнопки мыши
14 - нажатие правой кнопки мыши
Примечание Demiurg'a
Триггер срабатывает только при нажатии на включенный элемент диалога (смотрите !!DL:E)
Код
(Переведено SnoRT'ом)
Формат шаблонов.
Это стандартный файл текстовой таблицы Героев 3.
Первые две строки пропускаются (могут быть заполнены текстом или оставлены пустыми)
Самый левый столбик также игнорируется (может быть заполнен текстом или оставлен пустым).
Диалог начинается со следующих строк (в порядке столбца):
0: пропускается
1: знак '#' - означает начало нового шаблона диалога
2: xxx номер - уникальный Id диалога
3: номер x позиции - X позиция от верхнего левого угла (-1=центр экрана)
4: номер y позиции - Y позиция от верхнего левого угла (-1=центр экрана)
5: dx номер - горизантальный размер диалога
6: dy номер - вертикальный размер диалога
7: xxx номер - количество пунктов диалога (вы можете использовать меньше, но не больше, чем выбрали)
8: xxx номер - установить цвет рамки диалога под цвет номера игрока (-1 означает текущего игрока)
9: текст - имя PCX файла, который будет фоном
10: XXX номер - Id текстового пункта, который используется как поле с описанием.
Следующие строки анализируются как пункты диалога до тех пор, пока не будет знака '#' в первом столбце. Это может быть просто пустая строка с '#', или линия с началом нового диалога.
Самый главный элемент - первый символ в первом столбце. Поддерживаемые на данный момент элементы:
'P' - PCX рисунок:
0: пропускается
1: 'P'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - имя PCX файла
8: флаги - специфическое значение (ещё не известно полностью)
'D' - кадр DEF рисунка:
0: пропускается
1: 'D'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - имя DEF файла
8: кадр - изображения внутри DEF'а для вывода
9: флаги - специфическое значение (ещё не известно полностью)
'A' - анимированный DEF рисунок:
ещё не поддерживается
'B' - кнопка (особый DEF)
0: пропускается
1: 'B'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - имя DEF файла
8: флаги - специфическое значение (ещё не известно полностью)
[Прим. Demiurg'a в DEF'е кнопки должно быть как минимум 2 кадра. При нажатии на кнопку показывается второй кадр. Также при отключении кнопки (переводе элемента диалога в режим выключен) показывается второй кадр. Например если вы сделаете кнопкой деф с заклинаниями, то будет изображено заклинания вызов лодки а при нажатии или выключении вы увидите следующее заклинание - потопить лодку.
При нажатии на кнопку (не удерживая) происходит выход из диалога (выход в предыдущий диалог, если диалог был открыт из другого диалога). Конечно кнопка должна быть включена.]
'T' - текст:
0: пропускается
1: 'T'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - текст (может быть пустым и заполняться позже)
8: шрифт - имя файла шрифта
9: цвет - цвет текста
10: bkcol - цвет фона
11: выравнивание - выравнивание текста
12: флаги - специфическое значение (ещё не известно полностью)
'S' - текст в вертикальной прокруткой:
0: пропускается
1: 'S'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - текст (может быть пустым и заполняться позже)
8: шрифт - имя файла шрифта
9: цвет - цвет текста
10: цвет2 - цвет полосы прокрутки
11: выравнивание - выравнивание текста
'E' - отредактированный текст:
0: пропускается
1: 'E'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
5: dx номер - горизонтальный размер пункта
6: dy номер - вертикальный размер пункта
7: текст - текст (может быть пустым и заполняться позже)
8: шрифт - имя файла шрифта
'V' - SMK или BIK видео:
0: пропускается
1: 'V'...
2: xxx номер - уникальный Id пункта
3: номер x позиции - X позиция в диалоге от верхнего левого угла
4: номер y позиции - Y позиция в диалоге от верхнего левого угла
Видео выводится поверх любых других пунктов диалога и не имеет поддержки 'hint' описания. Это значит, что вам нужно следить, чтобы видео не вылазило за границы окна диалога, чтобы не получить проблем с перерисовкой.
Также вы можете использовать только одно видео за диалог.
Примечания:
Вы можете хранить больше одного диалога в файле шаблона.
Вы не должны использовать одинаковые Id диалогов в различных файлах шаблонов. Каждый диалог должен иметь свой унильный Id. Это также значит, что некоторые Id будут заняты под WoG-диалоги.
Пункт с номером 30721 - пункт отмены по умолчанию. Так, если игрок нажимает кнопку ESC когда выведен диалог - он закроется ( диалог, а не игрок =))) ).
Примечание Demiurg'a:
Для создания шаблона с диалогом необходима специальная программа TextEdit. Смотрите пункт 10.I
по этой ссылке