ФЭНДОМ


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


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

Launching cutscene1.jpg

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

Launching cutscene2.jpg

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

Launching cutscene3.jpg

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

Launching cutscene4.jpg

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

Launching cutscene5.jpg

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


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

Launching cutscene6.jpg

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

Launching cutscene7.jpg

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

Launching cutscene8.jpg

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


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


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

Launching cutscene9.jpg

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

Launching cutscene10.jpg

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


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

Launching cutscene11.jpg

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


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

Launching cutscene12.jpg

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


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


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

Launching cutscene13.jpg

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


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

Launching cutscene14.jpg

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

Launching cutscene15.jpg

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


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

Launching cutscene16.jpg

Как показывает подсказка, первый аргумент функции 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.


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

Launching cutscene17.jpg

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

Launching cutscene18.jpg

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


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

Launching cutscene19.jpg

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

Launching cutscene20.jpg

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


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

Launching cutscene21.jpg

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

Launching cutscene22.jpg

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

Launching cutscene23.jpg


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


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).

Launching cutscene24.jpg

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


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

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики