×
Меню
Индекс

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