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

Проверяем, когда игрок загружает игру

Некоторые причины необходимости такой проверки:

1) Продолжение проигрывания своей музыки (mp3 музыка сбрасывается при загрузке)

2) Чтобы NPC продолжал красться или бежать.

3) Чтобы объект сохранил нужный размер (если он вне 0.5-2.0)

Вот ряд способов, чтобы это сделать:

JOG предложил использовать SetJournalIndex:

if ( ( getjournalindex "dummy" ) != 100 )

Messagebox "Ты только что перезагрузился, Читер!!!"

setjournalindex "dummy" 100

endif

Dummy – это любая тема журнала, у которой нет текста для индекса 100.

Setjournalindex устанавливает индекс в новое значение, не важно существует запись для него или нет (полезно для простых флагов), но когда вы перезагружаетесь, индекс устанавливается в наибольшее значение из тех записей, которые были добавлены в журнал.

MentalElf предложил использовать GetForceRun, GetForceSneak, GetScale. ForceRun и ForceSneak снимаются после загрузки, а размеры устанавливаются в диапазоне 0.5 - 2.0. По-моему ForceRun – самый лучший способ, так как ForceSneak заставляет NPC принимать крадущуюся позу.

; (объект NPC)

if ( GetForceRun == 0 )

; Игрок только что загрузился

; Обработать это.

ForceRun

Endif

Другой возможностью может стать стартовые скрипты (если есть Tribunal или Bloodmoon). Вот пара примеров от DinkumThinkum:

begin DT_DoOnce_TribStartScript02

; скрипт демострирует однократный стартовый скрипт Трибунала

; запускаетя каждый раз, когда происходит загрузка с этим модом

; от DinkumThinkum

; скрипт исполняет секцию кода 'Do Once' один раз

; каждый раз, когда мод загружается как часть игры

MessageBox, "Вы увидите это сообщение каждый раз, когда загружаете игру с этим модом.", "OK"

;конец секции 'Do Once'.

StopScript DT_DoOnce_TribStartScript02

end DT_DoOnce_TribStartScript02

begin DT_DoOnce_TribStartScript01

; скрипт демострирует однократный стартовый скрипт Трибунала

; от DinkumThinkum

; скрипт исполняет секцию кода 'Do Once' один раз

; каждый раз, когда сохраненная игра не включает в себя мод

; скрипт выполняет секцию 'Reload' один раз,

; когда загружается сейв с этим модом

; любая часть кода может быть опущена, но все контролирующие структуры все равно нужны

;Примечание: ОБА 'StopScript' нужны. Поверь мне...

;DT_DoOnce_TSS01 – Глобальная переменная, не сбрасывается StopScript (устанавливается в 0)

if ( DT_DoOnce_TSS01 == 1 )

;начало секции 'Reload', исполняемой при загрузке

MessageBox, "Вы загрузили игру с сохраненным модом.", "OK"

;конец секции 'Reload'

StopScript DT_DoOnce_TribStartScript01

Return

endif

;начало секции 'Do Once', которая исполняется, когда мод загружен в первый раз.

MessageBox, "Вы загрузили игру без сохраненного в ней мода.", "OK"

set DT_DoOnce_TSS01 to 1

StopScript DT_DoOnce_TribStartScript01

end DT_DoOnce_TribStartScript01

Использование переменной CharGenState – отключение сохранения и меню

Присутствие возможности сохранения в главном меню зависит от значения CharGenState. Установите ее в число, отличное от –1 (например, 99), и игрок не сможет сохраняться. Установка в –1 вернет эту возможность.

Есть некоторые побочные эффекты. Нельзя будет получить доступ к экранам меню. Это можно исправить с помощь EnableStatsMenu – это даст доступ ко ВСЕМ меню, не только меню характеристик. Однако журнал, горячие клавиши и меню горячих клавиш все равно будут недоступны, а также нельзя будет обчищать трупы. Я не нашел способ это обойти.

В этом есть возможность конфликта, так что убедитесь, что игрок не проходит процедуру создания персонажа, и что значение установлено в -1 после использования (Информация с форумов / Erstam)