MSFD Проверяем, когда игрок загружает игру
Некоторые причины необходимости такой проверки:
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
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