fixed bot winning on many versions

This commit is contained in:
Gray
2025-04-07 09:43:34 -04:00
parent 79b081f8b6
commit 6746c14cd1
4 changed files with 24 additions and 14 deletions

View File

@@ -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<AFortPlayerControllerAthena>(Controller))
{
GameMode->GetAlivePlayers().Add(FortPlayerControllerAthena);
}
LOG_INFO(LogDev, "Finished spawning bot!")
}

View File

@@ -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)

View File

@@ -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<UClass>("/Script/FortniteGame.AthenaCharacterItemDefinition");
static auto CIDClass = FindObject<UClass>(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<UClass>("/Script/FortniteGame.FortPlaylist");
// static auto FortPlaylistClass = FindObject("Class /Script/FortniteGame.FortPlaylistAthena");
static auto FortPlaylistClass = FindObject<UClass>(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);

View File

@@ -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;