Д'жинни Вики

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

ПОДРОБНЕЕ

Д'жинни Вики

В предыдущей главе мы узнали, как создать просто ролик. Однако созданный нами ролик не будет воспроизводиться в игре, пока мы не настроим соответствующие параметры. Для этого мы создадим триггер и скрипт, запускающий ролик, когда Геральт заходит в область триггера. Кроме того, нам нужно, чтобы ролик воспроизводился только один раз, поэтому скрипт также должен отключать триггер.


Прежде всего, необходимо создать триггер. Чтобы вспомнить, как создавать триггеры, посмотрите соответствующий раздел этого руководства. Когда будете готовы, установите триггер таким образом, чтобы начальная точка была внутри триггера.

Как вы помните, созданная нами начальная точка находится в первой локации, т. е. g31_peschera (g31_jaskinia). Установите там триггер и дважды щелкните по нему. Лучший способ это сделать – воспользоваться окном обзора модуля (Module Explorer).

В правой части экрана откроется окно свойств триггера.

В разделе Общие (General) параметру Тег (Tag) присвойте значение trigg_movie.

Удостоверьтесь, что параметру Включено (Enabled) в разделе Параметры (Attributes) присвоено значение True.

Это означает, что триггер включен. Теперь перейдем к разделу Скрипты (Scripts). Здесь вы увидите параметр При входе (On Enter). Скрипт, присвоенный этому параметру, будет запущен, когда персонаж (Геральт или NPC) зайдет в область триггера. Именно этому параметру необходимо присвоить скрипт, запускающий ролик. Так как начальная точка находится на территории триггера, ролик будет воспроизведен непосредственно после запуска модуля. Это произойдет потому, что Геральт попадет в область триггера.


А теперь я расскажу, как запустить редактор скриптов без использования меню Файл (File). В значении параметра укажите имя файла zapusk_film (uruchom_film). Для этого щелкните по правой ячейке параметра При входе (On Enter), введите текст и нажмите клавишу Enter.

Затем щелкните по красной иконке в правой ячейке.

Откроется окно редактора скриптов.

Учтите, что скрипту автоматически присваивается имя, указанное в параметре При входе (On Enter). Этот способ запуска редактора скриптов эффективнее, так как в этом случае скрипту уже назначено имя, а сам скрипт присвоен параметру.


Пора написать наш первый скрипт. Как видите, каждый скрипт начинается с функции void main(). Содержание скрипта необходимо ввести в тело функции, т. е. между круглыми скобками.


Начнем с создания комментария, чтобы любой, кто откроет этот скрипт, сразу понял, для чего этот скрипт предназначен. Введите следующий текст.

Текст между /* и */ считается комментарием и не обрабатывается компилятором. Комментарий – дополнительная информация, сообщающая пользователю, для чего предназначен скрипт. Как видите, комментарий этого типа может занимать пару строк. Для комментариев другого типа используются символы //. Введите еще один комментарий, отображенный ниже.

Комментарии этого типа называются однострочными. Как можно понять по названию, такие комментарии могут занимать всего одну строку. Если вам необходимо добавить еще один комментарий этого типа, вторую строку начните с символов //.


Добавим первую функцию. Под вторым комментарием введите следующее.

Обратите внимание, что после того, как вы введете слово Play, откроется окно. В нем вы увидите список функций, которые можно использовать в данном контексте. Со слова Play начинаются 6 функций. Чтобы выбрать в списке нужную вам функцию, воспользуйтесь клавишами ↓ и ↑. Выбрав функцию, нажмите клавишу Tab или Enter. Естественно, вы также можете вписать функцию вручную.


Так как наша цель – запустить ролик, введите функцию PlayCutscene. Поставьте открывающую скобку (.

Обратите внимание, что появилось новое окно. На этот раз это подсказка по синтаксису функции. Следуя это подсказке, укажите имя ролика. Естественно, это должно быть имя файла, но без расширения .cut.


Следующий аргумент функции PlayCutscene – имя скрипта, который будет запущен в конце ролика. Этот скрипт мы указывать не будем, поэтому просто оставьте пустые кавычки "".


А вот третий аргумент нам нужен. Это режим отображения фильма. Если установить значение 1 (истина), персонажи не будут отображаться в ролике. Если установить значение 0 (ложь), персонажи будут отображаться, а именно это нам и нужно. При движении двух камер мы сможем увидеть Юза, Зигфрида и Геральта (если в поле обзора камеры попадают их пункты появления). Теперь строка должна выглядеть следующим образом.

Не забудьте в конце каждой строки ставить точку с запятой (;). Функция PlayCutscene запустит указанный ролик. Осталось только отключить триггер в конце ролика.


Но перед этим давайте добавим еще один комментарий.

Это означает, что следующая функция отключит триггер. Добавим следующую функцию. Введите следующий текст.

Как видите, со слова Enable начинаются несколько функций. Хотя постойте. Если мы должны отключить скрипт, почему мы используем функцию Enable, а не Disable? Это я объясню чуть позже.


А сейчас выберите функцию EnableTrigger. Затем поставьте открывающую скобку (.

Как показывает подсказка, первый аргумент функции EnableTrigger – объект триггера. Однако прежде всего необходимо обратиться к этому триггеру. Это можно сделать двумя способами. Первый способ: добавьте следующую строку:


object => oTrigger = GetObjectByTag(“trigg_movie” );


Object – ключевое слово, означающее обращение к объекту. oTrigger – вспомогательное имя, которому присвоен объект. Функция GetObjectByTag обращается к объекту с помощью тега объекта. В нашем случае мы хотим обратиться к триггеру, которому, как вы помните, мы присвоили тег trigg_movie. Теперь осталось только ввести следующий текст:


EnableTrigger(oTrigger

Но есть и более простой способ – ключевое слово OBJECT_SELF. В редакторе скриптов ключевые слова выделяются синим цветом. OBJECT_SELF относится к объекту, которому присвоен скрипт. Так как скрипт присвоен триггеру trigg_movie, использование ключевого слова OBJECT_SELF автоматически указывает на триггер trigg_movie. Поэтому нет необходимости писать строку object oTrigger.


Наш скрипт должен выглядеть следующим образом:

Функция EnableTrigger включает и выключает триггер. Второй аргумент функции – значение TRUE (вкл.) или FALSE (выкл.). Введите FALSE после запятой и поставьте закрывающую скобку ).

Не забудьте поставить в конце строки точку с запятой (;).


Вот и все. Наш скрипт полностью готов. Теперь необходимо его сохранить. В меню Файл (File) выберите пункт Сохранить zapusk_film.nss (Save uruchom_film.nss).

Если в меню нет пункта Сохранить zapusk_film.nss (Save uruchom_film.nss) или в нем указано другое имя файла, это, возможно, означает, что окно zapusk_film.nss (uruchom_film.nss) в данный момент не является активным. Чтобы активировать окно, щелкните по его заголовку, а затем выберите в меню Файл (File) пункт Сохранить zapusk_film.nss (Save uruchom_film.nss). Откроется окно сохранения файла.

При сохранении файла у вас будет выбор сохранить общий файл (что означает, что он будет доступен и в других модулях) или сохранить его в текущем модуле. Нажмите кнопку Общий (Global), но помните, что вы в любой момент можете сохранить файл в определенный модуль. Это будет полезно, если вы хотите загрузить свой модуль в Интернет, чтобы передать его своим друзьям или игровому сообществу в целом. При этом весь файл будет сохранен в модуле (в формате adv). Эту тему бы уже обсуждали в другой главе руководства.


При нажатии кнопку Общий (Global) откроется стандартное окно Windows для сохранения файлов. Перейдите в каталог Data\Scripts (где хранятся все скрипты), введите имя файла и нажмите кнопку Сохранить. Естественно, файлы, сохраненные таким способом, впоследствии можно добавить в модуль. Мы же сделаем это прямо сейчас. Нажмите кнопку Модуль (Module). Откроется окно Введите имя (Enter name). Введите имя файла скрипта zapusk_film (uruchom_film).

Нажмите кнопку OK. Скрипт будет скомпилирован и появится в окне обзора модуля (Module Explorer) в подветви Скрипты Neverwinter (Neverwinter scripts sources).

Так как скрипт был скомпилирован, перейдем к окну регистра событий, т. е. журналу Aurora.


Если при компиляции возникнут какие‐либо ошибки, они будут выделены бордовым цветом. Как видите, в данном случае при компиляции действительно возникла ошибка:


NWNScript Compiler: \..\ zapusk_film.nss did not Compile successfully

Это означает, что скрипт zapusk_film.nss (uruchom_film.nss) не был скомпилирован должным образом. Описание ошибки вы найдете в следующей строке.


NWNScript Compiler: zapusk_film.nss(10): ERROR: UNDEFINED IDENTIFER (PlayCuscene)


В скобках указан номер строки, после чего стоит имя скрипта. Далее дается тип ошибки: UNDEFINED IDENTIFIER (неизвестный идентификатор). Имя идентификатора указано далее в скобках. И компьютер прав. Функции PlayCuscene не существует. Есть функция PlayCutscene. Естественно, опечатку необходимо исправить, а скрипт – заново скомпилировать.


NWNScript Compiler: \..\zapusk_film compiled successfully

Это означает, что на этот раз скрипт был скомпилирован успешно. Теперь необходимо сохранить модуль. Для этого в меню Модуль (Module) выберите пункт Сохранить модуль (Save Module).

Вот и все. Мы создали наш первый скрипт. Конечно, он не такой уж сложный, но этого вполне будет достаточно. По крайней мере, пока.


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