Scriptname _00E_AutoSaveSystem_Functions extends Quest Event OnUpdate() Actor PlayerREF = Game.GetForm(0x14) as Actor if PlayerREF.IsDead() return endif If PlayerREF.IsInCombat() || PlayerREF.IsOnMount() || PlayerREF.IsSwimming() || ! Game.IsFightingControlsEnabled() || Utility.IsInMenuMode() || UI.IsTextInputEnabled() || UI.IsMenuOpen("Dialogue Menu") || ! PlayerREF.GetParentCell() RegisterForSingleUpdate(5) return endif Game.SaveGame(EnderalFunctions.GetAutosaveName(iAutosaveIndex)) iAutosaveIndex += 1 if iAutosaveIndex >= Utility.GetIniInt("iAutoSaveCount:SaveGame") iAutosaveIndex = 0 endif RegisterForSingleUpdate(fUpdateTime*60) EndEvent ; called from _00E_AutosaveIntervalAlias to update ini setting fAutosaveEveryXMins in case it was changed Function UpdateAutoSaveInterval() if SKSE.GetVersion() <= 0 UnregisterForUpdate() Debug.Trace("NO SKSE: timed autosaves are disabled") return endif fUpdateTime = Utility.GetIniFloat("fAutosaveEveryXMins:SaveGame") If fUpdateTime <= 0.0 ; just in case fUpdateTime = 30.0 EndIf RegisterForSingleUpdate(fUpdateTime*60) RegisterForMenu("Journal Menu") EndFunction Event OnMenuClose(String MenuName) float fAutosaveEveryXMins = Utility.GetIniFloat("fAutosaveEveryXMins:SaveGame") if fUpdateTime as int != fAutosaveEveryXMins as int fUpdateTime = fAutosaveEveryXMins RegisterForSingleUpdate(fUpdateTime*60) endif EndEvent int iAutosaveIndex = 0 float fUpdateTime