Диалоговые окна (ресивер IF)

Если вам нужно показать игроку сообщение, задать вопрос, показать картинку или анимацию игроку, или дать игроку выбрать между опциями, или дать напечатать что-либо (например, своё имя), вы должны использовать диалоговые окна.

Типы диалоговых окон

Есть два основных типа диалоговых окон, которые могут быть показаны с помощью ERM. Первый - стандартный диалог, который вы регулярно видели в оригинальных Героях. Второй - расширенный диалог, который используется для показа внешних картинок и анимаций, делают возможным ввод данных с клавиатуры и выбор из каких-либо опций. От вашего выбора будет зависеть тип информации, которую вы сможете показать. Вы можете использовать оба типа для показа только информации, или для показа картинки и вопроса к игроку, в конце концов, простой выбор между "Да" и "Нет" (Отмена). Стандартные диалоговые окна более просты в использовании, чем расширенные, которые требуют дополнительные команды.

Использование стандартных диалоговых окон

Они базируются всего лишь на двух командах для стандартного окна диалога: IF:M, который используется для одиночных сообщений, и IF:Q, который используется для вопросов типа "Да/Нет" и для показа картинок. В обоих случаях, всё зависит только от вашего желания ;)

Однако, есть и ещё один тип диалога, использующий стандартные ресурсы игры - это команда IF:N. Здесь может быть до 8 картинок одновременно, параметры показа которых такие же, как и для IF:Q.

Как видите, есть много комбинаций с этими командами ресивера !!IF. Экспериментируйте!

Использование Расширенного диалогового окна #1 - многозадачный диалог

Если вы хотите разрешить игроку ввести текст, позволить ему выбрать что-либо из четырёх вариантов, и/или показать определённые картинки или анимации, вы должны использовать расширенные диалоговые окна. В общем, вам нужно записать некоторый текст в z-переменную и затем использовать её для установки команд в расширенном диалоговом окне. Для их установки воспользуйтесь командами IF:D и IF:F, а для показа - командой IF:E. Любая опция ниже может быть соединена в многозадачный диалог:

1. Показ картинок: в отличии от стандартного диалогового окна, расширенное не может показывать внутренние, т.е. игровые, картинки, а только внешние картинки, с определённым типом и размером. Если вам нужно показать ещё и внутреннюю картинку игры, воспользуйтесь клавишей Print Screen и вырежьте нужную картинку. Путь к картинке может содержать до 256 символов, и начинается с директории Heroes3\Maps. Картинки могут быть BMP, GIF или JPG с максимальным размером 100х100 пикселей. Если изображение меньше, оно будет выровнено по центру свободного пространства. Если изображение больше, только 100х100 пикселей будет показано. Для BMP верхний левый пиксель будет интерпретироваться как прозрачный. Вы можете смешивать и менять картинки как захотите. Команда IF:D используется для установки картинок для многозадачного диалогового окна.

Пример 1:

В этом примере, в z10 записан заглавный текст для диалога, в z11..z14 записаны имена картинок в папке Maps, и в z15..z18 записаны подсказки для каждой картинки. Мы использовали диалоговое окно №5 (первый параметр), далее номер z-переменной, содержащей главный текст, далее два 0, означающие "Не изменять эти параметры". После этого - z-переменные с именами файлов (11..14) и z-переменные для подсказок (15..18). Последние четыре параметры также не используются в этом примере и мы заменяем их нулями.

2. Показ анимации: вы можете использовать расширенный диалог для показа анимации или клипа в формате AVI. AVI-анимация может быть показана вместо картинки и может быть комбинирована с картинками (например, вы можете показать две анимации и две картинки в одном диалоге). Работает AVI как раз несжатая,  или сжатая плохо (RLE, например). Большинство компрессий, в том числе DivX и XviD, приводят к ошибке zvslib1.dll. Это, кстати, затрудняет использование AVI в дополнениях, потому как даже короткая AVI-uncompressed занимаем мегабайты.
Отличия проигрывания GIF от AVI в wog-диалогах:

Как и картинки, анимация ограничена 100х100 пикселей. Опять же, используйте IF:D для установки анимации для расширенного диалогового окна.

3. Чекбоксы: если вы хотите дать игроку выбор между четырьмя (или более) опциями, вы можете использовать чекбоксы. Там вы можете ввести заголовок сообщения (текст будет жёлтым). Каждая опция чекбокса будет иметь текст в табличке, и также может иметь текст-подсказку (показывается внизу диалогового окна при наведении курсора на опцию). И хотя вы не можете поместить картинку в сам чекбокс, вы можете соотнести выбранную опцию и картинку в ней, которая будет показана выше. Когда диалог появится, ни одна опция не будет выбрана. Игрок может выбрать только одну опцию, выбор другой автоматически отключит предыдущую. После нажатия игрока на ОК, вы можете проверить, какая опция была выбрана, её номер запоминается в v-переменную. Устанавливается диалог так же, как и картинки и анимации: IF:D и IF:F для добавления текста-подсказок для чекбоксов, если захотите.

4. Ввод текста: если в хотите получить текстовое сообщение от игрока, вы можете показать окно ввода. Над ним вы можете ввести небольшое сообщение (текст будет жёлтым). Текст, введенный игроком в окно ввода, занесётся в текстовую переменную (z-переменную), и может быть использован для имени города или героя, текста-подсказки, текста знака, часть другого сообщения, или может быть проверена, правильный ли ответ или нет. Вы также можете использовать введенный текст с командой UN:N для поиска, например, артефакта с введенным именем, или монстра, постройки замка или имени навыка. IF:D используется для установки окна ввода текста.

5. Текст заголовка: текст вверху диалогового окна (белый) можно установить командой IF:D, и жёлтый текст для чекбоксов может быть использован, даже если вы не использовали чекбоксы в диалоге.

6. Кнопка отмены: команда IF:F может быть использованна для отключения или включения кнопки "Отмена" (и клавишей Esc на клавиатуре) для расширенного многозадачного диалогового окна.

Пример 2:
Пример 3: И вот что вы увидите в итоге:

Использование расширенных диалоговых окон #2 - диалог одиночного изображения/анимации

Если вы хотите показать одиночное изображение или одиночный AVI-файл, вы можете использовать второй тип расширенных диалогов. Эти диалоги более просты для установки, чем многозадачные (меньше параметров), и имеют преимущество в том, что могут показывать изображение или видео почти любого размера. Главный недостаток - вы не можете включить никакой текст вместе с изображением или видео. Когда вы вызываете этот диалог, вы получаете простое окно сообщение с изображением или AVI в центре и кнопку ОК ниже. Команда для установки этого сообщения - IF:B, и команда для показа - IF:P.
Пример:


Но некоторое перекрывание командой IF:D (используется для установки многозадачного диалога) - если вы используете команду IF:D вместо IF:B, первая картинка или AVI в таблице параметров будет показано командой IF:P, а дополнительные картинки или анимации будут проигнорированы.

Расширенный диалог #3: радио- или чекбокс-диалог (до 12 опций)

Пример: Вот так будет выглядеть диалог с использованием команды IF:G