Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скрипты Morrowind.doc
Скачиваний:
91
Добавлен:
29.10.2018
Размер:
2.81 Mб
Скачать

Различные функции и переменные Прерывание выполнения скрипта

[no fix] Return

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

If ( MenuMode == 1 )

Return

Endif

Внимание: Все, что ниже return, не будет исполняться, даже если условия там будут истинны, так что будьте внимательны.

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

[no fix?] ScriptRunning, "ScriptName" (returns Boolean/short)

StartScript, "ScriptName"

StopScript, "ScriptName"

Эти функции используются для управления глобальными скриптами. Глобальные скрипты начинают выполняться с помощью функции StartScript (из локального скрипта, другого глобального или поля result в диалоге) и завершаются функцией StopScript.

Примечание: Если вы используете StopScript, что скрипт завершил сам себя, то завершение не обязательно произойдет немедленно. Скрипт исполнится до слова End, и только потом завершиться. Так что используйте return для немедленного завершения скрипта.

Стартовые скрипты Трибунала в плагине начинают выполняться каждый раз, когда игра загружается, даже если они были завершены – см раздел Советы и Трюки «Определение, загрузился ли игрок» (Информация с форумов / DinkumThinkum).

Насколько я знаю, эти функции не работают с локальными скриптами, зато можно вызываться нацеленные скрипты использую «стрелку»: ObjectID -> StartScript (см также раздел Советов и Трюков).

Функция ScriptRunning возвращает 1, если скрипт выполняется и 0 в противном случае:

if ( ScriptRunning, CharGen == 0 )

StartScript CharGen

Endif

StopScript также может использоваться для создания однократных условий:

Begin do-once_script

[…]; делать что-то

StopScript do-once_script

End

Уменьшение и увеличение яркости

[no fix] FadeIn time_float_enum

[no fix] FadeOut time_float_enum

[no fix] FadeTo alpha_enum time_float_enum

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

FadeIn и Fadeout затемняют экран (не объект) за указанное время (в секундах). Время > 0 и <= 10.0. FadeTo затемняет только на определенный процент: 0 – полная прозрачность, 100 – чернота.

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

[no fix] ShowMap "cell ID"

ShowMap "Gnisis"

Эта функция подсвечивает указанные ячейки. ID ячейки может быть полным или частичным, то есть все ячейки, которые начинаются с данной строки будут подсвечены на карте (например ShowMap "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

См также консольную команду FillMap.

Присваивание случайных значений переменным

[no fix] Random, value_enum

Set my_variable to Random, 50

Введение в скрипт некоторой неопределенности — отличная возможность, и она может быть реализована функцией Random. Random возвращает значения между 0 и установленным значением–1. Так, в примере выше, my_variable примет значение между 0 и 49.

Заметьте, что глобальная переменная типа short Random100 принимает новые случайные значения между 0 и 100 в каждом кадре в игровом скрипте, так что вы можете использовать и ее.

Примечание: Для любого вызова Random с верхней границей больше 100, вариабельность возвращаемой величины становится все меньшей, вплоть до Random, 255, при котором получаются только 0 или 1, а любые попытки вызвать функцию при 256 приводят к вылету. (Морровинд и Трибунал). Это исправлено в Bloodmoon, так что там получается более ровное распределение вероятности и в интервалах, превышающих 100. Но вылет при 256 и 512, и т.д., все еще происходит (Информация от Neko). Также было обнаружено, что иногда верхняя граница функции Random устанавливается гораздо выше, чем заданное число. Установка верхней границы в одно из следующих чисел приводит к странному результату – возвращаемое число находится около 1100: 65, 66, 68, 70, 71, 76, 77, 79, 82, 83, 84.