If its not scuffed its not reboot

This commit is contained in:
Gray
2024-03-18 21:35:01 -04:00
parent acb311c643
commit ef97a84822
10 changed files with 69 additions and 15 deletions

View File

@@ -2,6 +2,8 @@
#include "reboot.h"
#include "FortAthenaAIBotCharacterCustomization.h"
#include "FortPlayerController.h"
#include "FortPlayerState.h"
class UFortAthenaAIBotCustomizationData : public UObject // UPrimaryDataAsset
{

View File

@@ -1528,7 +1528,7 @@ void AFortGameModeAthena::Athena_HandleStartingNewPlayerHook(AFortGameModeAthena
auto PlayerAbilitySet = GetPlayerAbilitySet();
auto AbilitySystemComponent = PlayerStateAthena->GetAbilitySystemComponent();
if (PlayerAbilitySet)
if (PlayerAbilitySet && Fortnite_Version != 12.00)
{
PlayerAbilitySet->GiveToAbilitySystem(AbilitySystemComponent);
}

View File

@@ -394,6 +394,9 @@ std::vector<LootDrop> PickLootDrops(FName TierGroupName, int WorldLevel, int For
LTDTables.clear();
LPTables.clear();
if (Fortnite_Version == 12.00)
return LootDrops;
bool bFoundPlaylistTable = false;
if (CurrentPlaylist)
@@ -622,7 +625,7 @@ std::vector<LootDrop> PickLootDrops(FName TierGroupName, int WorldLevel, int For
if (!Addresses::LoadAsset)
{
if (Fortnite_Version <= 6 || std::floor(Fortnite_Version) == 9) // ahhh
if (Fortnite_Version <= 6 || std::floor(Fortnite_Version) == 9) // the tables unload!
{
LTDTables.clear();
LPTables.clear();

View File

@@ -0,0 +1,10 @@
#include "FortServerBotManagerAthena.h"
#include "bots.h"
AFortPlayerPawnAthena* UFortServerBotManagerAthena::SpawnBotHook(UFortServerBotManagerAthena* BotManager, FVector& InSpawnLocation, FRotator& InSpawnRotation,
UFortAthenaAIBotCustomizationData* InBotData, FFortAthenaAIBotRunTimeCustomizationData* InRuntimeBotData)
{
LOG_INFO(LogBots, "SpawnBotHook!");
return nullptr;
}

View File

@@ -0,0 +1,20 @@
#pragma once
#include "Object.h"
#include "FortPlayerPawnAthena.h"
#include "FortAthenaAIBotCustomizationData.h"
struct FFortAthenaAIBotRunTimeCustomizationData
{
};
static inline void (*BotManagerSetupStuffIdk)(__int64 BotManaager, __int64 Pawn, __int64 BehaviorTree, __int64 a4, DWORD* SkillLevel, __int64 idk, __int64 StartupInventory, __int64 BotNameSettings, __int64 idk_1, BYTE* CanRespawnOnDeath, unsigned __int8 BitFieldDataThing, BYTE* CustomSquadId, FFortAthenaAIBotRunTimeCustomizationData InRuntimeBotData) = decltype(BotManagerSetupStuffIdk)(__int64(GetModuleHandleW(0)) + 0x19D93F0);
class UFortServerBotManagerAthena : public UObject
{
public:
static inline AFortPlayerPawnAthena* (*SpawnBotOriginal)(UFortServerBotManagerAthena* BotManager, FVector InSpawnLocation, FRotator InSpawnRotation, UFortAthenaAIBotCustomizationData* InBotData, FFortAthenaAIBotRunTimeCustomizationData InRuntimeBotData);
static AFortPlayerPawnAthena* SpawnBotHook(UFortServerBotManagerAthena* BotManager, FVector& InSpawnLocation, FRotator& InSpawnRotation, UFortAthenaAIBotCustomizationData* InBotData, FFortAthenaAIBotRunTimeCustomizationData* InRuntimeBotData);
};

View File

@@ -233,6 +233,7 @@
<ClCompile Include="FortPlayerStateAthena.cpp" />
<ClCompile Include="FortPlaysetItemDefinition.cpp" />
<ClCompile Include="FortSafeZoneIndicator.cpp" />
<ClCompile Include="FortServerBotManagerAthena.cpp" />
<ClCompile Include="FortWeapon.cpp" />
<ClCompile Include="FortWeaponItemDefinition.cpp" />
<ClCompile Include="FortWeaponRangedMountedCannon.cpp" />
@@ -386,6 +387,7 @@
<ClInclude Include="FortQuickBars.h" />
<ClInclude Include="FortResourceItemDefinition.h" />
<ClInclude Include="FortSafeZoneIndicator.h" />
<ClInclude Include="FortServerBotManagerAthena.h" />
<ClInclude Include="FortVehicleItemDefinition.h" />
<ClInclude Include="FortVolume.h" />
<ClInclude Include="FortWeapon.h" />

View File

@@ -235,9 +235,6 @@
<ClCompile Include="NetConnection.cpp">
<Filter>Engine\Source\Runtime\Engine\Private</Filter>
</ClCompile>
<ClCompile Include="dllmain.cpp">
<Filter>Reboot\Public</Filter>
</ClCompile>
<ClCompile Include="SavePackage.cpp">
<Filter>Engine\Source\Runtime\CoreUObject\Private</Filter>
</ClCompile>
@@ -304,6 +301,10 @@
<ClCompile Include="extra.cpp">
<Filter>Reboot\Private</Filter>
</ClCompile>
<ClCompile Include="dllmain.cpp" />
<ClCompile Include="FortServerBotManagerAthena.cpp">
<Filter>FortniteGame\Source\FortniteGame\Private\AI</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="log.h" />
@@ -974,6 +975,9 @@
<ClInclude Include="FortAthenaAISpawnerDataComponent_CosmeticLoadout.h">
<Filter>FortniteGame\Source\FortniteGame\Public\AI</Filter>
</ClInclude>
<ClInclude Include="FortServerBotManagerAthena.h">
<Filter>FortniteGame\Source\FortniteGame\Public\AI</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="Engine">
@@ -1243,6 +1247,9 @@
<Filter Include="FortniteGame\Source\FortniteGame\Public\Stats">
<UniqueIdentifier>{3c8e3f87-8a4c-4220-b952-39b0e0315e85}</UniqueIdentifier>
</Filter>
<Filter Include="FortniteGame\Source\FortniteGame\Private\AI">
<UniqueIdentifier>{4aadfbef-7320-4457-9f5c-e5fd53b97367}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="UnrealEngine.cpp">

View File

@@ -611,12 +611,11 @@ std::vector<uint64> Addresses::GetFunctionsToNull()
toNull.push_back(Memcury::Scanner::FindStringRef(L"Widget Class %s - Running Initialize On Archetype, %s.").ScanFor({ 0x40, 0x55 }, false).Get()); // Widget class
}
if (Engine_Version == 422
|| Engine_Version == 423
|| Engine_Version == 424 // guessed
if (Engine_Version >= 422
&& Fortnite_Version <= 12.00 // guessed
)
{
// This sig is valid on 7.40, 8.51, 11.31 (3 refs), but on 12.41 it has 1 ref which isn't widget class
// This sig is valid on 7.40, 8.51, 11.31 (3 refs), but on 12.41 it has 1 ref which isn't widget class (12.00 is right).
// Also this isn't the actual function but something the widget class thing calls
toNull.push_back(Memcury::Scanner::FindPattern("48 89 5C 24 ? 57 48 83 EC 30 48 8B 41 28 48 8B DA 48 8B F9 48 85 C0 74 34 48 8B 4B 08 48 8D").Get()); // widget class
}

View File

@@ -45,6 +45,7 @@
#include "FortAthenaVehicleSpawner.h"
#include "FortGameSessionDedicatedAthena.h"
#include "FortAIEncounterInfo.h"
#include "FortServerBotManagerAthena.h"
enum class EMeshNetworkNodeType : uint8_t
{
@@ -874,7 +875,7 @@ DWORD WINAPI Main(LPVOID)
static auto FortOctopusVehicleDefault = FindObject<AFortOctopusVehicle>(L"/Script/FortniteGame.Default__FortOctopusVehicle");
static auto FortPlayerControllerAthenaDefault = FindObject<AFortPlayerControllerAthena>(L"/Script/FortniteGame.Default__FortPlayerControllerAthena"); // FindObject<UClass>(L"/Game/Athena/Athena_PlayerController.Default__Athena_PlayerController_C");
if (Fortnite_Version >= 20)
if (Fortnite_Version >= 20 || Fortnite_Version == 12.00)
ApplyNullAndRetTrues();
// UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogNetPackageMap VeryVerbose", nullptr);
@@ -964,10 +965,16 @@ DWORD WINAPI Main(LPVOID)
}
*/
/*
if (Fortnite_Version >= 16 && Fortnite_Version < 19)
{
// Bus crash (only needed if we are calling StartAircraftPhase on seperate thread I THINK) (sometimes)
Hooking::MinHook::Hook(Memcury::Scanner::FindPattern("48 89 5C 24 ? 48 89 6C 24 ? 56 57 41 54 41 56 41 57 48 83 EC 40 48 8B 59 28 45 33 E4").GetAs<PVOID>(), (PVOID)EmptyHook); // also on 16.50
}
*/
if (Fortnite_Version == 17.30) // Rift Tour stuff
{
auto busCrash = Hooking::MinHook::Hook(Memcury::Scanner::FindPattern("48 89 5C 24 ? 48 89 6C 24 ? 56 57 41 54 41 56 41 57 48 83 EC 40 48 8B 59 28 45 33 E4").GetAs<PVOID>(), (PVOID)EmptyHook);
Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x3E07910), (PVOID)GetMeshNetworkNodeTypeHook, nullptr);
Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x3DED158), (PVOID)ReturnTrueHook, nullptr); // 7FF7E556D158
Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x3DECFC8), (PVOID)ReturnTrueHook, nullptr); // 7FF7E556CFC8
@@ -1025,7 +1032,7 @@ DWORD WINAPI Main(LPVOID)
LOG_INFO(LogDev, "Switch levels.");
if (Fortnite_Version < 20)
if (Fortnite_Version < 20 && Fortnite_Version != 12)
ApplyNullAndRetTrues();
if (Fortnite_Version != 22.4)
@@ -1098,6 +1105,9 @@ DWORD WINAPI Main(LPVOID)
(PVOID*)&AFortGameModeAthena::OnAircraftEnteredDropZoneOriginal, false, false, true, true);
}
// Hooking::MinHook::Hook(FindObject<UFortServerBotManagerAthena>(L"/Script/FortniteGame.Default__FortServerBotManagerAthena"), FindObject<UFunction>(L"/Script/FortniteGame.FortServerBotManagerAthena.SpawnBot"),
// UFortServerBotManagerAthena::SpawnBotHook, (PVOID*)&UFortServerBotManagerAthena::SpawnBotOriginal, false);
Hooking::MinHook::Hook(GameModeDefault, FindObject<UFunction>(L"/Script/Engine.GameModeBase.SpawnDefaultPawnFor"),
AGameModeBase::SpawnDefaultPawnForHook, nullptr, false);
// Hooking::MinHook::Hook(GameModeDefault, FindObject<UFunction>(L"/Script/Engine.GameModeBase.PlayerCanRestart"),

View File

@@ -801,8 +801,9 @@ static inline void MainUI()
if (!bStartedBus)
{
if (Globals::bLateGame.load()
|| Fortnite_Version >= 11 // Its been a minute but iirc it just wouldnt start when countdown ended or crash? cant remember
)
|| (Fortnite_Version >= 11 // Its been a minute but iirc it just wouldnt start when countdown ended or crash? cant remember
&& false
))
{
if (ImGui::Button("Start Bus"))
{