From ac0e6c410884536c48bcd778fec99296d89bb2b9 Mon Sep 17 00:00:00 2001 From: Chocice75 <35960636+VanillaCold@users.noreply.github.com> Date: Wed, 12 Jul 2023 18:10:09 +0100 Subject: [PATCH] Fix random crash error --- Spore - Multiple Save Files/SwapSaveCheat.cpp | 8 +++----- Spore - Multiple Save Files/SwapSaveCheat.h | 3 ++- Spore - Multiple Save Files/dllmain.cpp | 1 + 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Spore - Multiple Save Files/SwapSaveCheat.cpp b/Spore - Multiple Save Files/SwapSaveCheat.cpp index c520a58..bed28a7 100644 --- a/Spore - Multiple Save Files/SwapSaveCheat.cpp +++ b/Spore - Multiple Save Files/SwapSaveCheat.cpp @@ -20,15 +20,12 @@ void SwapSaveCheat::ParseLine(const ArgScript::Line& line) auto arguments = line.GetArguments(1); int ID = mpFormatParser->ParseInt(arguments[0]); - string16 directory; - directory.assign_convert(to_string(ID)); directory = u"Games/Game" + directory; if (GameModeManager.GetActiveModeID() == GameModeIDs::kGGEMode) { - Resource::Paths::CreateSaveAreaDirectoryDatabase(Resource::PathID::AppData, directory.c_str(), saveDatabase, Resource::SaveAreaID::GamesGame0); hasSwapped = true; - timer = 2; + timer = 5; GameModeManager.SetActiveMode(GameModeIDs::kGameCell); } else @@ -45,9 +42,10 @@ void SwapSaveCheat::Update() { if (hasSwapped) { - timer --; + timer -= 1/GameTimeManager.GetSpeed(); if (timer == 0) { + Resource::Paths::CreateSaveAreaDirectoryDatabase(Resource::PathID::AppData, directory.c_str(), saveDatabase, Resource::SaveAreaID::GamesGame0); hasSwapped = false; GameModeManager.SetActiveMode(GameModeIDs::kGGEMode); } diff --git a/Spore - Multiple Save Files/SwapSaveCheat.h b/Spore - Multiple Save Files/SwapSaveCheat.h index 6e43631..36cdaa6 100644 --- a/Spore - Multiple Save Files/SwapSaveCheat.h +++ b/Spore - Multiple Save Files/SwapSaveCheat.h @@ -13,7 +13,7 @@ class SwapSaveCheat // Called when the cheat is invoked void ParseLine(const ArgScript::Line& line) override; bool hasSwapped; - int timer; + float timer; static DatabaseDirectoryFilesPtr saveDatabase; @@ -21,6 +21,7 @@ class SwapSaveCheat virtual int AddRef() override; virtual int Release() override; + string16 directory; // Returns a string containing the description. If mode != DescriptionMode::Basic, return a more elaborated description const char* GetDescription(ArgScript::DescriptionMode mode) const override; diff --git a/Spore - Multiple Save Files/dllmain.cpp b/Spore - Multiple Save Files/dllmain.cpp index 2c97941..ca4ce82 100644 --- a/Spore - Multiple Save Files/dllmain.cpp +++ b/Spore - Multiple Save Files/dllmain.cpp @@ -27,6 +27,7 @@ static_detour(SetSaveDetour, Resource::Database* (Resource::SaveAreaID)) { return SwapSaveCheat::saveDatabase.get(); } + return original_function(area); } };