From 6746c14cd1a060646b371c56215178f605efe5d1 Mon Sep 17 00:00:00 2001 From: Gray <84999745+Milxnor@users.noreply.github.com> Date: Mon, 7 Apr 2025 09:43:34 -0400 Subject: [PATCH] fixed bot winning on many versions --- Project Reboot 3.0/bots.h | 11 +++++++---- Project Reboot 3.0/commands.cpp | 6 ++++++ Project Reboot 3.0/gui.h | 18 +++++++++--------- Project Reboot 3.0/reboot.h | 3 ++- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Project Reboot 3.0/bots.h b/Project Reboot 3.0/bots.h index 7637329..c8423dd 100644 --- a/Project Reboot 3.0/bots.h +++ b/Project Reboot 3.0/bots.h @@ -48,6 +48,7 @@ public: static bool ShouldUseAIBotController() { + return false; return Fortnite_Version >= 11 && Engine_Version < 500; } @@ -218,7 +219,7 @@ public: PlayerState->OnRep_PlayerName(); // ? } - FString GetRandomName() // Todo SetName(GetRandomName()) + FString GetRandomName() { static int CurrentBotNum = 1; std::wstring BotNumWStr; @@ -314,7 +315,7 @@ public: auto PlayerAbilitySet = GetPlayerAbilitySet(); auto AbilitySystemComponent = PlayerState->GetAbilitySystemComponent(); - if (PlayerAbilitySet) + if (PlayerAbilitySet && AbilitySystemComponent) { PlayerAbilitySet->GiveToAbilitySystem(AbilitySystemComponent); } @@ -323,14 +324,16 @@ public: PickRandomLoadout(); ApplyCosmeticLoadout(); - if (Fortnite_Version <= 10) + if (!ShouldUseAIBotController()) { - GameState->GetPlayersLeft()++; + ++GameState->GetPlayersLeft(); GameState->OnRep_PlayersLeft(); } if (auto FortPlayerControllerAthena = Cast(Controller)) + { GameMode->GetAlivePlayers().Add(FortPlayerControllerAthena); + } LOG_INFO(LogDev, "Finished spawning bot!") } diff --git a/Project Reboot 3.0/commands.cpp b/Project Reboot 3.0/commands.cpp index ff9ad9b..64bc20b 100644 --- a/Project Reboot 3.0/commands.cpp +++ b/Project Reboot 3.0/commands.cpp @@ -751,6 +751,12 @@ void ServerCheatHook(AFortPlayerControllerAthena* PlayerController, FString Msg) } else if (Command == "spawnbot") { + if (GameState->GetGamePhase() < EAthenaGamePhase::Aircraft) + { + SendMessageToConsole(PlayerController, L"Bot spawning before aircraft is not allowed!"); + return; + } + auto Pawn = ReceivingController->GetPawn(); if (!Pawn) diff --git a/Project Reboot 3.0/gui.h b/Project Reboot 3.0/gui.h index 114236e..977899c 100644 --- a/Project Reboot 3.0/gui.h +++ b/Project Reboot 3.0/gui.h @@ -346,7 +346,7 @@ static inline void StaticUI() ImGui::Checkbox("Infinite Ammo", &Globals::bInfiniteAmmo); ImGui::Checkbox("Infinite Materials", &Globals::bInfiniteMaterials); - ImGui::Checkbox("Private IP's are operator", &Globals::bPrivateIPsAreOperator); + ImGui::Checkbox("Private IPs are operator", &Globals::bPrivateIPsAreOperator); ImGui::Checkbox("No MCP (Don't change unless you know what this is)", &Globals::bNoMCP); @@ -1011,11 +1011,11 @@ static inline void MainUI() else if (Tab == DUMP_TAB) { - ImGui::Text("These will all be in your Win64 folder!"); + ImGui::Text("These will all be in your Win64 folder!"); // TODO: Make a button to open this directory static std::string FortniteVersionStr = std::format("Fortnite Version {}\n\n", std::to_string(Fortnite_Version)); - if (ImGui::Button("Dump Objects")) + if (ImGui::Button("Dump Objects (ObjectsDump.txt)")) { auto ObjectNum = ChunkedObjects ? ChunkedObjects->Num() : UnchunkedObjects ? UnchunkedObjects->Num() : 0; @@ -1023,7 +1023,7 @@ static inline void MainUI() obj << FortniteVersionStr; - for (int i = 0; i < ObjectNum; i++) + for (int i = 0; i < ObjectNum; ++i) { auto CurrentObject = GetObjectByIndex(i); @@ -1042,11 +1042,11 @@ static inline void MainUI() { SkinsFile << FortniteVersionStr; - static auto CIDClass = FindObject("/Script/FortniteGame.AthenaCharacterItemDefinition"); + static auto CIDClass = FindObject(L"/Script/FortniteGame.AthenaCharacterItemDefinition"); auto AllObjects = GetAllObjectsOfClass(CIDClass); - for (int i = 0; i < AllObjects.size(); i++) + for (int i = 0; i < AllObjects.size(); ++i) { auto CurrentCID = AllObjects.at(i); @@ -1069,12 +1069,12 @@ static inline void MainUI() if (PlaylistsFile.is_open()) { PlaylistsFile << FortniteVersionStr; - static auto FortPlaylistClass = FindObject("/Script/FortniteGame.FortPlaylist"); - // static auto FortPlaylistClass = FindObject("Class /Script/FortniteGame.FortPlaylistAthena"); + static auto FortPlaylistClass = FindObject(L"/Script/FortniteGame.FortPlaylist"); + // static auto FortPlaylistClass = FindObject(L"Class /Script/FortniteGame.FortPlaylistAthena"); auto AllObjects = GetAllObjectsOfClass(FortPlaylistClass); - for (int i = 0; i < AllObjects.size(); i++) + for (int i = 0; i < AllObjects.size(); ++i) { auto Object = AllObjects.at(i); diff --git a/Project Reboot 3.0/reboot.h b/Project Reboot 3.0/reboot.h index 6b3f154..e9bf2ff 100644 --- a/Project Reboot 3.0/reboot.h +++ b/Project Reboot 3.0/reboot.h @@ -48,7 +48,8 @@ static inline T* LoadObject(const TCHAR* Name, UClass* Class = T::StaticClass(), if (!Object) { - LOG_WARN(LogDev, "Failed to load object!"); + std::wstring NameWStr = std::wstring(Name); + LOG_WARN(LogDev, "Failed to load object: {}!", std::string(NameWStr.begin(), NameWStr.end())); } return Object;