Д'жинни Вики

Эта Вики существует при поддержке сайта «Хроники Каэр Морхена».

ПОДРОБНЕЕ

Д'жинни Вики

При создании диалогов и заданий (см. предыдущие главы) мы использовали признаки, которым в зависимости от ситуации присваивалось значение 0 (ложь) или 1 (истина). Самой большой проблемой, с которой я столкнулся, создавая игровое задание для этого руководства, стала проверка признаков. Действительно ли каждому из них присвоено верное значение. К сожалению, в редакторе D’jinni нет возможности проверять состояние признака. Но есть и хорошие новости: сделать это можно с помощью скрипта. Напомню, что мы использовали следующие признаки:

  • zadanie_polucheno;
  • glavar_ubit;
  • otchet_dan.

Теперь давайте создадим новый скрипт. В меню Файл (File) выберите Создать ‐> Скрипт Neverwinter (.nss) (New‐>Neverwinter Script (.nss)).

Откроется окно Новый скрипт neverwinter nights (new neverwinternights script).

Как обычно, начнем с комментария.

Теперь добавьте следующую строку:

Обратите внимание, что в конце строки, заканчивающейся ключевым словом if, не нужно ставить точку с запятой. Это очень важно. Если в этом случае поставить точку с запятой, скрипт не будет работать должным образом.


Ключевой слово if – оператор условия. Цель такого оператора – контролировать скрипт, части которого должны исполняться только при соблюдении определенных условий. В результате исполнения оператора if значение 0 (ложь) присваивается, если условие не выполняется, а значение 1 (истина) присваивается, если условие выполняется. Функция GetDialogFlagValue обращается к значению признака диалога с указанным именем.


Значение всего выражения: если значение признака диалога с именем zadanie_polucheno (posiada_zlecenie) равно 0, то... Естественно, нам необходимо дописать скрипт и определить, что произойдет, если значение признака равно 0. Введите продолжение выражения с оператором if.

Функция PrintString отображает указанный текст в журнале Aurora. Теперь значение всего выражения следующее: если значение признака диалога с именем zadanie_polucheno (posiada_zlecenie) равно 0, то в окне регистра событий отобразится текст Flag zadanie_polucheno (posiada_zlecenie) = 0. Очень просто, не так ли? А теперь необходимо создать выражение с оператором if на случай, если значение признака zadanie_polucheno (posiada_zlecenie) равно 1.

Этот же скрипт можно использовать для проверки оставшихся двух признаков. Скопируйте весь блок кода и замените имя признака zadanie_polucheno (posiada_zlecenie) на имена остальных признаков.

А теперь небольшое отступление. Любой из вас, кто застал то время, когда программированию учились по учебникам, наверняка помнит, что первые компьютерные программы могли только выводить текст на экран. В качестве первого примера скриптов, как правило, использовалась фраза "Hello World". Поэтому, чтобы отдать должное старым традициям, добавим в конце скрипта следующее:

Мы потратили на написание кода чуть больше времени, но зато добавили ему стиля. В меню Файл (File) выберите пункт Сохранить как... (Save As...).

Откроется стандартное окно Windows для сохранения файлов. Перейдите в каталог Data\Scripts (где хранятся все скрипты), введите имя файла test_priznak (test_flag) и нажмите кнопку Сохранить. Учтите, что имя файла должно содержать не более 16 символов. Убедитесь, что сохраняете файл в формате nss.

Если в окне указан другой тип файла, это, возможно, означает, что вы случайно пытаетесь сохранить содержимое другого открытого окна. Прежде, чем сохранять шаблон персонажа, убедитесь, что у вас активно окно Новый скрипт neverwinter nights (new neverwinternights script). Если оно не активно, его заголовок будет отображаться серым цветом.

Любой другой цвет заголовка означает, что данное окно является активным.

Звездочка перед текстом в заголовке окна означает, что последние изменения в этом файле не были сохранены. Помните, что скрипт можно сохранить напрямую в модуль. Для этого в меню Файл (File) выберите пункт Сохранить новый скрипт neverwinter nights (Save new neverwinternights scripts). Затем в окне сохранения файла нажмите кнопку Модуль (Module).


Сохранив файл, проверьте, не было ли ошибок при сохранении и компиляции скрипта. Откройте окно обзора ресурсов (Resources Explorer). Для этого в меню Вид (View) выберите Окна ‐> Обзор ресурсов (Utility Windows ‐> Resources Explorer).

В окне обзора ресурсов (Resources Explorer) раскройте ветвь Data, а затем ветвь Scripts. Вы увидите скрипт test_priznak.nss (test_flag.nss).

Теперь переключитесь в игровой режим. Для этого в меню Игра (Game) выберите пункт Запуск (Play).

Переключившись в игровой режим, загрузите модуль. Затем переключитесь на окно обзора модуля (Resources Explorer) и правой кнопкой мыши щелкните по скрипту test_priznak.nss (test_flag.nss). В меню выберите пункт Запуск скрипта (Run scripts).

В окне журнала Aurora (Aurora log) вы увидите следующее.

Как видите, первоначальное значение всех признаков равно 0. Теперь согласитесь на задание Зигфрида и перезапустите скрипт. Затем убейте Профессора и снова перезапустите скрипт. В окне журнала Aurora вы увидите изменения. Как вы поняли, скрипты могут значительно упростить вам жизнь.


Шаблон:Общая информация о скриптах