enderalse/scripts/source/_00e_autosavesystem_functions.psc

67 lines
1.7 KiB
Plaintext

Scriptname _00E_AutoSaveSystem_Functions extends Quest
Event OnInit()
fUpdateTime = Utility.GetIniFloat("fAutosaveEveryXMins:SaveGame")
RegisterForSingleUpdate(fUpdateTime*60)
EndEvent
Event OnUpdate()
If bAutosaveSystemStopped == false
If Utility.IsInMenuMode() == false && UI.IsTextInputEnabled() == false && UI.IsMenuOpen("Dialogue Menu") == false && PlayerREF.IsDead() == false && PlayerREF.IsInCombat() == false && Game.IsFightingControlsEnabled() == true
Game.RequestAutoSave()
RegisterForSingleUpdate(fUpdateTime*60)
Else
RegisterForSingleUpdate(5)
EndIf
EndIf
EndEvent
; called from _00E_PlayerSetUpScript in Maintenance() to update ini setting fAutosaveEveryXMins in case it was changed
Function UpdateAutoSaveInterval()
fUpdateTime = Utility.GetIniFloat("fAutosaveEveryXMins:SaveGame")
If fUpdateTime == 0.0 ; just in case
fUpdateTime = 60
EndIf
UnregisterForUpdate()
RegisterForSingleUpdate(fUpdateTime*60)
EndFunction
Function StopAutosaveSystem()
bAutosaveSystemStopped = true
UnregisterForUpdate()
EndFunction
Function ResumeAutosaveSystemInXMinutes(float _fMinutes = 0.0)
If _fMinutes == 0.0
_fMinutes = fUpdateTime
If _fMinutes == 0.0 ; just in case
_fMinutes = 60
EndIf
EndIf
UnregisterForUpdate() ; just in case again
RegisterForSingleUpdate(_fMinutes*60)
bAutosaveSystemStopped = false
EndFunction
; not used yet btw / maybe will never be used
; called shortly before the end of every quest, parameter is always the quest name
Function RequestHardSave(string _sQuestName)
Utility.Wait(0.1) ; in case we are in a menu (debug message boxes / dialogue etc)
Game.SaveGame(_sQuestName)
EndFunction
bool bAutosaveSystemStopped = false
float fUpdateTime
Actor Property PlayerREF Auto