fallout.ru

Разнообразные функции и переменные

Затемнение экрана

FadeIn время_float_числ
FadeOut время_float_числ
FadeTo процент_числ время_float_числ

FadeTo 50 2.0 ;(Затемняет экран на 50% на 2 секунда)

Первые две функции затемняют экран (а не объект!) на определённое время (от 0 до 10 секунд). Последняя функция помимо прочего позволяет задать процент затемнения: 0 – абсолютно прозрачное изображение, 100 – абсолютно чёрное.

Добавление локации на карту

ShowMap "ID локации"

ShowMap "Gnisis"

Функция подсвечивает на карте мира положение определённой локации. Учтите, что она показывает сразу все «квадратики», относящиеся к выбранному месту. То есть, если написать в качестве аргумента “Vivec”, то на карте появятся сразу все кантоны.

Пример скрипта: помните книгу, описывающую все места для паломничества пилигримов? Она как раз добавляет все эти локации на глобальную карту игрока:

Begin bookPilgrimsPath

if ( GetJournalIndex TT_PilgrimsPath >= 100 )
            Return
endif

if ( OnActivate == 1 )
            Journal TT_PilgrimsPath 100
            ShowMap "Gnisis" Гнисис
            ShowMap "Vivec" Вивек
            ShowMap "Ghostgate" Призрачные Врата
            ShowMap "Koal Cave Entrance" Вход в пещеру Коал
            ShowMap "Fields of Kummu" Поля Кумму
            Activate
endif

End

Прерывание скрипта

Return

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

If ( MenuMode == 1 )
            Return
Endif

Внимание: весь код после этой функции будет проигнорирован, то есть не будет выполняться. Пользуйтесь ею с особой осторожностью!

Случайные значения

Random, значение

Set my_variable to Random, 50

Внесение непредсказуемости в скрипты является заманчивой идеей. Для её реализации и существует функция “Random”, которая возвращает случайное число между нулём и заданным значением –1. То есть строка кода из примера может присвоить переменной значение от 0 до 49. Заметьте также, что глобальной переменной “Random100” каждый фрейм присваивается новое случайное значение от 0 до 100. Так что Вы вполне можете использовать её в своих целях.

Учтите: случайные значения, если вы задали аргумент больше 100, вовсе не такие уж случайные. Так при аргументе 255 они могут быть только 0 или 1. При аргументе, кратном 256 игра вообще «вылетает». Так дела обстоят в Морровинде и Трибунале. В Бладмуне была поправлена вероятность даже при больших диапазонах, однако аргументы, кратные 256, всё равно заставляют игру «вылететь».

Проигрывание видео

PlayBink “имя_файла” флаг_числ

Функция останавливает игру и проигрывает видео. Присвойте флагу значение ИСТИНА, чтобы игрок смог пропустить ролик. Все проигрываемые файлы должны быть формата Bink и располагаться в папке Datafiles/Videos. Стандартные настройки движка Морровинда заставляют игру проигрывать файл прямо с диска, поэтому я не уверен, что это может сработать. Возможно (я не пробовал), что написание строки “TryArchiveFirst=-1” в файле конфигурации “Morrowind.ini” как-то повлияет на этот прискорбный факт (-1 – использовать линейные данные, 0 – использовать новейшее, 1 – использовать только архив). Так же для проигрывания Ваших собственных файлов можно попробовать использовать программу, позволяющую запускать Морровинд без диска в приводе.

Управление глобальными скриптами

ScriptRunning, "Имя_скрипта" (возвращает Boolean/short)
StartScript, "Имя_скрипта"
StopScript, "Имя_скрипта"

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

Использование функции StopScript обнуляет все местные переменные остановленного глобального скрипта. Однако, остановка происходит не сразу, а лишь когда скрипт пройдёт последний раз до своего конца.

Насколько мне известно, это не допустимо для локальных скриптов, прикреплённых к тем или иным объектам. Однако, их тоже можно запускать с помощью конструкции типа “ID_Объекта->StartScript”. Функция “ScriptRunning” возвращает 1, если скрипт работает, и 0 – если нет.

if ( ScriptRunning, CharGen == 0 )
            StartScript CharGen
Endif

Последняя функция так же может быть использована для создания одноразовых глобальных скриптов, обеспечивающих чёткую систему отключения самих себя:

Begin do-once_script

[…]; какие-то манипуляции

StopScript do-once_script

End