From 9c3d023274e5203da0702b98435f22772ca2e876 Mon Sep 17 00:00:00 2001 From: YesseYesseY Date: Thu, 17 Jul 2025 01:11:14 +0200 Subject: [PATCH 1/4] 8.40 - Sleepy rune event --- Project Reboot 3.0/calendar.h | 14 ++++++++++ Project Reboot 3.0/die.h | 1 + Project Reboot 3.0/dllmain.cpp | 7 ++++- Project Reboot 3.0/gui.h | 47 +++++++++++++++++++++++++++++++++- 4 files changed, 67 insertions(+), 2 deletions(-) diff --git a/Project Reboot 3.0/calendar.h b/Project Reboot 3.0/calendar.h index 2df83ef..bd97f5f 100644 --- a/Project Reboot 3.0/calendar.h +++ b/Project Reboot 3.0/calendar.h @@ -156,4 +156,18 @@ namespace Calendar NewYearTimer->ProcessEvent(StartNYE, nullptr); } } + + static void (*OnDamageServerSleepyOriginal)(UObject* SleepyProp, FFrame& Stack, void* Ret); + static void OnDamageServerSleepyHook(UObject* SleepyProp, FFrame& Stack, void* Ret) + { + // TODO: Fix damage im too tired and stupid to fix it rn + float Damage = 50.0f; + Stack.StepCompiledIn(&Damage); + + static UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_M_2"); + static UFunction* RootUpdateDamage = SleepyM->FindFunction("RootUpdateDamage"); + SleepyM->ProcessEvent(RootUpdateDamage, &Damage); + OnDamageServerSleepyOriginal(SleepyProp, Stack, Ret); + + } } \ No newline at end of file diff --git a/Project Reboot 3.0/die.h b/Project Reboot 3.0/die.h index b76e421..fafea28 100644 --- a/Project Reboot 3.0/die.h +++ b/Project Reboot 3.0/die.h @@ -152,6 +152,7 @@ static inline void ProcessEventHook(UObject* Object, UFunction* Function, void* !strstr(FunctionName.c_str(), "SpinCubeTimeline__UpdateFunc") && !strstr(ObjectName.c_str(), "FortPhysicsObjectComponent") && !strstr(FunctionName.c_str(), "GetTextValue") && + !strstr(FunctionName.c_str(), "ServerUpdateLevelVisibility") && !strstr(FunctionName.c_str(), "ExecuteUbergraph_BGA_Petrol_Pickup")) { LOG_INFO(LogDev, "Function called: {} with {}", FunctionFullName, ObjectName); diff --git a/Project Reboot 3.0/dllmain.cpp b/Project Reboot 3.0/dllmain.cpp index fd565a9..3e712dd 100644 --- a/Project Reboot 3.0/dllmain.cpp +++ b/Project Reboot 3.0/dllmain.cpp @@ -987,6 +987,12 @@ DWORD WINAPI Main(LPVOID) } */ + //if (Fortnite_Version == 8.40) + //{ + // Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC410), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); + // Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC450), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); + //} + if (Fortnite_Version >= 16 && Fortnite_Version < 19) { // Bus crash (only needed if we are calling StartAircraftPhase on seperate thread I THINK) (sometimes) @@ -1230,7 +1236,6 @@ DWORD WINAPI Main(LPVOID) // HookInstruction(Addresses::UpdateTrackedAttributesLea, (PVOID)AFortPlayerControllerAthena::UpdateTrackedAttributesHook, "/Script/Engine.PlayerController.EnableCheats", ERelativeOffsets::LEA, FortPlayerControllerAthenaDefault); // HookInstruction(Addresses::CombinePickupLea, (PVOID)AFortPickup::CombinePickupHook, "/Script/Engine.PlayerController.SetVirtualJoystickVisibility", ERelativeOffsets::LEA, FortPlayerControllerAthenaDefault); - if (Fortnite_Version == 13.40) { // HookInstruction(__int64(GetModuleHandleW(0)) + 0x1FC835D, (PVOID)UFortAthenaAIBotCustomizationData::ApplyOverrideCharacterCustomizationHook, "/Script/Engine.PlayerController.SetVirtualJoystickVisibility", ERelativeOffsets::CALL, nullptr); diff --git a/Project Reboot 3.0/gui.h b/Project Reboot 3.0/gui.h index e095582..7254995 100644 --- a/Project Reboot 3.0/gui.h +++ b/Project Reboot 3.0/gui.h @@ -116,7 +116,7 @@ static inline void SetIsLategame(bool Value) static inline bool HasAnyCalendarModification() { - return Calendar::HasSnowModification() || Calendar::HasNYE() || std::floor(Fortnite_Version) == 13; + return Calendar::HasSnowModification() || Calendar::HasNYE() || (Fortnite_Version >= 8.40 && Fortnite_Version < 9.0) || std::floor(Fortnite_Version) == 13; } static inline void Restart() // todo move? @@ -956,6 +956,51 @@ static inline void MainUI() } } + /* + * Notes: + * + * Dopey (8.?? to 8.??) mining stones + * + * Rune events: + * Sleepy (8.40) hit the rune and it moves + * Leaky (8.40) rotate 3 beams onto the rune + * Sneezy (8.50) dance for progress + */ + if (Fortnite_Version == 8.40) + { + static UObject* SAR = FindObject("/Game/Athena/Maps/Athena_POI_Foundations.Athena_POI_Foundations:PersistentLevel.BP_SnowAlwaysRelevant_2"); + if (SAR) + { + static bool LoadedSleepy = false; + static bool InitSleepy = false; + if (!LoadedSleepy) + { + if (ImGui::Button("Load Sleepy")) + { + SAR->ProcessEvent(SAR->FindFunction("LoadSleepy")); + //SAR->ProcessEvent(SAR->FindFunction("LoadLeaky")); + LoadedSleepy = true; + } + } + if (LoadedSleepy && !InitSleepy) + { + UObject* SleepyProp = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_Prop_0"); + UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_M_2"); + + if (SleepyProp && SleepyM) + { + InitSleepy = true; + + Hooking::MinHook::Hook(SleepyProp, SleepyProp->FindFunction("OnDamageServer"), Calendar::OnDamageServerSleepyHook, (void**)&Calendar::OnDamageServerSleepyOriginal, false, true); + } + } + } + else + { + ImGui::Text("Failed to find BP_SnowAlwaysRelevant_C"); + } + } + if (std::floor(Fortnite_Version) == 13) { static UObject* WL = FindObject("/Game/Athena/Apollo/Maps/Apollo_POI_Foundations.Apollo_POI_Foundations.PersistentLevel.Apollo_WaterSetup_2"); From 875222856954f1429eaf1f762244122b4624de0f Mon Sep 17 00:00:00 2001 From: YesseYesseY Date: Thu, 17 Jul 2025 02:08:29 +0200 Subject: [PATCH 2/4] Sleepy rune fix :) --- Project Reboot 3.0/calendar.h | 8 +++----- Project Reboot 3.0/dllmain.cpp | 10 +++++----- Project Reboot 3.0/gui.h | 4 ++++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Project Reboot 3.0/calendar.h b/Project Reboot 3.0/calendar.h index bd97f5f..b15eb27 100644 --- a/Project Reboot 3.0/calendar.h +++ b/Project Reboot 3.0/calendar.h @@ -160,14 +160,12 @@ namespace Calendar static void (*OnDamageServerSleepyOriginal)(UObject* SleepyProp, FFrame& Stack, void* Ret); static void OnDamageServerSleepyHook(UObject* SleepyProp, FFrame& Stack, void* Ret) { - // TODO: Fix damage im too tired and stupid to fix it rn - float Damage = 50.0f; - Stack.StepCompiledIn(&Damage); - + static auto DamageOffset = FindOffsetStruct("/Game/Athena/Prototype/Blueprints/Sleepy/BP_Sleepy_M.BP_Sleepy_M_C.RootUpdateDamage", "Damage"); + int Damage = (int)(*(float*)(__int64(Stack.Locals) + DamageOffset)); + static UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_M_2"); static UFunction* RootUpdateDamage = SleepyM->FindFunction("RootUpdateDamage"); SleepyM->ProcessEvent(RootUpdateDamage, &Damage); OnDamageServerSleepyOriginal(SleepyProp, Stack, Ret); - } } \ No newline at end of file diff --git a/Project Reboot 3.0/dllmain.cpp b/Project Reboot 3.0/dllmain.cpp index 3e712dd..1c19bb1 100644 --- a/Project Reboot 3.0/dllmain.cpp +++ b/Project Reboot 3.0/dllmain.cpp @@ -987,11 +987,11 @@ DWORD WINAPI Main(LPVOID) } */ - //if (Fortnite_Version == 8.40) - //{ - // Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC410), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); - // Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC450), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); - //} + if (Fortnite_Version == 8.40) + { + Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC410), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); + Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC450), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); + } if (Fortnite_Version >= 16 && Fortnite_Version < 19) { diff --git a/Project Reboot 3.0/gui.h b/Project Reboot 3.0/gui.h index 7254995..b7a482c 100644 --- a/Project Reboot 3.0/gui.h +++ b/Project Reboot 3.0/gui.h @@ -992,6 +992,10 @@ static inline void MainUI() InitSleepy = true; Hooking::MinHook::Hook(SleepyProp, SleepyProp->FindFunction("OnDamageServer"), Calendar::OnDamageServerSleepyHook, (void**)&Calendar::OnDamageServerSleepyOriginal, false, true); + int FiveHundred = 500; + *SleepyM->GetPtr("MaxHealth") = 500; + SleepyM->ProcessEvent(SleepyM->FindFunction("RootSetProgress"), &FiveHundred); + } } } From 76a02275b8b9ece0eda5bafe05a56ce71bf8cc61 Mon Sep 17 00:00:00 2001 From: YesseYesseY Date: Thu, 17 Jul 2025 13:15:25 +0200 Subject: [PATCH 3/4] Sleepy debug + Scuffed leaky --- Project Reboot 3.0/calendar.h | 25 +++++++++++++- Project Reboot 3.0/globals.h | 4 +-- Project Reboot 3.0/gui.h | 65 +++++++++++++++++++++++++++-------- 3 files changed, 77 insertions(+), 17 deletions(-) diff --git a/Project Reboot 3.0/calendar.h b/Project Reboot 3.0/calendar.h index b15eb27..d1d30d9 100644 --- a/Project Reboot 3.0/calendar.h +++ b/Project Reboot 3.0/calendar.h @@ -160,7 +160,7 @@ namespace Calendar static void (*OnDamageServerSleepyOriginal)(UObject* SleepyProp, FFrame& Stack, void* Ret); static void OnDamageServerSleepyHook(UObject* SleepyProp, FFrame& Stack, void* Ret) { - static auto DamageOffset = FindOffsetStruct("/Game/Athena/Prototype/Blueprints/Sleepy/BP_Sleepy_M.BP_Sleepy_M_C.RootUpdateDamage", "Damage"); + static auto DamageOffset = FindOffsetStruct("/Game/Athena/Prototype/Blueprints/Sleepy/BP_Sleepy_M.BP_Sleepy_M_C.OnDamageServer", "Damage"); int Damage = (int)(*(float*)(__int64(Stack.Locals) + DamageOffset)); static UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_M_2"); @@ -168,4 +168,27 @@ namespace Calendar SleepyM->ProcessEvent(RootUpdateDamage, &Damage); OnDamageServerSleepyOriginal(SleepyProp, Stack, Ret); } + + static void (*OnDamageServerLeakyOriginal)(UObject* SleepyProp, FFrame& Stack, void* Ret); + static void OnDamageServerLeakyHook(UObject* LeakyProp, FFrame& Stack, void* Ret) + { + static auto DamageOffset = FindOffsetStruct("/Game/Athena/Prototype/Blueprints/Leaky/BP_LeakyProp.BP_LeakyProp_C.OnDamageServer", "Damage"); + int Damage = (int)(*(float*)(__int64(Stack.Locals) + DamageOffset)); + + static UObject* LeakyHandler = FindObject("/Game/Athena/Maps/Test/S8/LeakyMap.LeakyMap:PersistentLevel.BP_LeakyHandler_2"); + static UFunction* RootUpdateRotationValue = LeakyHandler->FindFunction("RootUpdateRotationValue"); + + struct + { + int32 Damage; + int8 PropIndex; + } Params; + + static auto ColorOfBeaconOffset = LeakyProp->GetOffset("Color of Beacon"); + Params.Damage = Damage; + Params.PropIndex = LeakyProp->Get(ColorOfBeaconOffset); + + LeakyHandler->ProcessEvent(RootUpdateRotationValue, &Params); + OnDamageServerLeakyOriginal(LeakyProp, Stack, Ret); + } } \ No newline at end of file diff --git a/Project Reboot 3.0/globals.h b/Project Reboot 3.0/globals.h index 2fc785f..6f29746 100644 --- a/Project Reboot 3.0/globals.h +++ b/Project Reboot 3.0/globals.h @@ -31,10 +31,10 @@ namespace Globals extern inline int NumToSubtractFromSquadId = 0; // I think 2? extern inline std::string PlaylistName = -"/Game/Athena/Playlists/Playlist_DefaultSolo.Playlist_DefaultSolo"; +//"/Game/Athena/Playlists/Playlist_DefaultSolo.Playlist_DefaultSolo"; // "/Game/Athena/Playlists/gg/Playlist_Gg_Reverse.Playlist_Gg_Reverse"; // "/Game/Athena/Playlists/Playlist_DefaultDuo.Playlist_DefaultDuo"; -// "/Game/Athena/Playlists/Playground/Playlist_Playground.Playlist_Playground"; + "/Game/Athena/Playlists/Playground/Playlist_Playground.Playlist_Playground"; // "/Game/Athena/Playlists/Carmine/Playlist_Carmine.Playlist_Carmine"; // "/Game/Athena/Playlists/Fill/Playlist_Fill_Solo.Playlist_Fill_Solo"; // "/Game/Athena/Playlists/Low/Playlist_Low_Solo.Playlist_Low_Solo"; diff --git a/Project Reboot 3.0/gui.h b/Project Reboot 3.0/gui.h index b7a482c..0275e21 100644 --- a/Project Reboot 3.0/gui.h +++ b/Project Reboot 3.0/gui.h @@ -971,31 +971,68 @@ static inline void MainUI() static UObject* SAR = FindObject("/Game/Athena/Maps/Athena_POI_Foundations.Athena_POI_Foundations:PersistentLevel.BP_SnowAlwaysRelevant_2"); if (SAR) { - static bool LoadedSleepy = false; - static bool InitSleepy = false; - if (!LoadedSleepy) { - if (ImGui::Button("Load Sleepy")) + static bool LoadedSleepy = false; + if (!LoadedSleepy && ImGui::Button("Load Sleepy")) { SAR->ProcessEvent(SAR->FindFunction("LoadSleepy")); //SAR->ProcessEvent(SAR->FindFunction("LoadLeaky")); LoadedSleepy = true; - } - } - if (LoadedSleepy && !InitSleepy) - { - UObject* SleepyProp = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_Prop_0"); - UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_M_2"); - if (SleepyProp && SleepyM) - { - InitSleepy = true; + UObject* SleepyProp = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_Prop_0"); + UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_M_2"); + + while (!SleepyProp && !SleepyM) + { + SleepyProp = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_Prop_0"); + SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_M_2"); + } Hooking::MinHook::Hook(SleepyProp, SleepyProp->FindFunction("OnDamageServer"), Calendar::OnDamageServerSleepyHook, (void**)&Calendar::OnDamageServerSleepyOriginal, false, true); int FiveHundred = 500; *SleepyM->GetPtr("MaxHealth") = 500; SleepyM->ProcessEvent(SleepyM->FindFunction("RootSetProgress"), &FiveHundred); - + + LOG_INFO(LogDev, "Sleepy loaded!"); + } + + if (LoadedSleepy) + { + static int SleepyProgress = 0; + ImGui::SliderInt("Sleepy Progress", &SleepyProgress, 0, 1000); + if (ImGui::Button("Move Sleepy")) + { + static UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_M_2"); + static auto ProgressOffset = SleepyM->GetOffset("Progress"); + *SleepyM->GetPtr(ProgressOffset) = (float)SleepyProgress * (1.0f / 1000.0f); + static int EntryPoint = 929; + static auto ExecUbergraph = SleepyM->FindFunction("ExecuteUbergraph_BP_Sleepy_M"); + SleepyM->ProcessEvent(ExecUbergraph, &EntryPoint); + } + } + } + + ImGui::Separator(); + + { + static bool LoadedLeaky = false; + if (!LoadedLeaky && ImGui::Button("Load Leaky")) + { + SAR->ProcessEvent(SAR->FindFunction("LoadLeaky")); + LoadedLeaky = true; + + UObject* LeakyHandler = FindObject("/Game/Athena/Maps/Test/S8/LeakyMap.LeakyMap.PersistentLevel.BP_LeakyHandler_2"); + + while (!LeakyHandler) + { + LeakyHandler = FindObject("/Game/Athena/Maps/Test/S8/LeakyMap.LeakyMap.PersistentLevel.BP_LeakyHandler_2"); + } + + UObject* LeakyProp = FindObject("/Game/Athena/Maps/Test/S8/LeakyMap.LeakyMap:PersistentLevel.BP_LeakyProp2"); + Hooking::MinHook::Hook(LeakyProp, LeakyProp->FindFunction("OnDamageServer"), Calendar::OnDamageServerLeakyHook, (void**)&Calendar::OnDamageServerLeakyOriginal, false, true); + //LeakyHandler->ProcessEvent(LeakyHandler->FindFunction("TestDirt")); + + LOG_INFO(LogDev, "Leaky loaded!"); } } } From 1d52d26224cab57e5c1c33ffc50a8d43414e8359 Mon Sep 17 00:00:00 2001 From: YesseYesseY Date: Fri, 18 Jul 2025 00:15:08 +0200 Subject: [PATCH 4/4] Ok this is boring im only doing sleepy --- Project Reboot 3.0/calendar.h | 25 ---------- Project Reboot 3.0/die.h | 1 + Project Reboot 3.0/dllmain.cpp | 14 ++++-- Project Reboot 3.0/globals.h | 4 +- Project Reboot 3.0/gui.h | 84 ++++++++++++---------------------- 5 files changed, 43 insertions(+), 85 deletions(-) diff --git a/Project Reboot 3.0/calendar.h b/Project Reboot 3.0/calendar.h index d1d30d9..e776b5a 100644 --- a/Project Reboot 3.0/calendar.h +++ b/Project Reboot 3.0/calendar.h @@ -157,7 +157,6 @@ namespace Calendar } } - static void (*OnDamageServerSleepyOriginal)(UObject* SleepyProp, FFrame& Stack, void* Ret); static void OnDamageServerSleepyHook(UObject* SleepyProp, FFrame& Stack, void* Ret) { static auto DamageOffset = FindOffsetStruct("/Game/Athena/Prototype/Blueprints/Sleepy/BP_Sleepy_M.BP_Sleepy_M_C.OnDamageServer", "Damage"); @@ -166,29 +165,5 @@ namespace Calendar static UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_M_2"); static UFunction* RootUpdateDamage = SleepyM->FindFunction("RootUpdateDamage"); SleepyM->ProcessEvent(RootUpdateDamage, &Damage); - OnDamageServerSleepyOriginal(SleepyProp, Stack, Ret); - } - - static void (*OnDamageServerLeakyOriginal)(UObject* SleepyProp, FFrame& Stack, void* Ret); - static void OnDamageServerLeakyHook(UObject* LeakyProp, FFrame& Stack, void* Ret) - { - static auto DamageOffset = FindOffsetStruct("/Game/Athena/Prototype/Blueprints/Leaky/BP_LeakyProp.BP_LeakyProp_C.OnDamageServer", "Damage"); - int Damage = (int)(*(float*)(__int64(Stack.Locals) + DamageOffset)); - - static UObject* LeakyHandler = FindObject("/Game/Athena/Maps/Test/S8/LeakyMap.LeakyMap:PersistentLevel.BP_LeakyHandler_2"); - static UFunction* RootUpdateRotationValue = LeakyHandler->FindFunction("RootUpdateRotationValue"); - - struct - { - int32 Damage; - int8 PropIndex; - } Params; - - static auto ColorOfBeaconOffset = LeakyProp->GetOffset("Color of Beacon"); - Params.Damage = Damage; - Params.PropIndex = LeakyProp->Get(ColorOfBeaconOffset); - - LeakyHandler->ProcessEvent(RootUpdateRotationValue, &Params); - OnDamageServerLeakyOriginal(LeakyProp, Stack, Ret); } } \ No newline at end of file diff --git a/Project Reboot 3.0/die.h b/Project Reboot 3.0/die.h index fafea28..f699140 100644 --- a/Project Reboot 3.0/die.h +++ b/Project Reboot 3.0/die.h @@ -153,6 +153,7 @@ static inline void ProcessEventHook(UObject* Object, UFunction* Function, void* !strstr(ObjectName.c_str(), "FortPhysicsObjectComponent") && !strstr(FunctionName.c_str(), "GetTextValue") && !strstr(FunctionName.c_str(), "ServerUpdateLevelVisibility") && + !strstr(FunctionName.c_str(), "UpdatePlayerPositionsWithinTheMID") && !strstr(FunctionName.c_str(), "ExecuteUbergraph_BGA_Petrol_Pickup")) { LOG_INFO(LogDev, "Function called: {} with {}", FunctionFullName, ObjectName); diff --git a/Project Reboot 3.0/dllmain.cpp b/Project Reboot 3.0/dllmain.cpp index 1c19bb1..1e1aba4 100644 --- a/Project Reboot 3.0/dllmain.cpp +++ b/Project Reboot 3.0/dllmain.cpp @@ -987,10 +987,18 @@ DWORD WINAPI Main(LPVOID) } */ - if (Fortnite_Version == 8.40) + if (Fortnite_Version == 8.40)/*Fortnite_Version >= 8.40 && Fortnite_Version <= 8.51*/ { - Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC410), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); - Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC450), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); + auto TheFunc = (uint8*)FindObject("/Script/MeshNetwork.MeshNetworkSubsystem:GetMeshNetworkNodeType")->GetFunc(); + for (int i = 0; i < 75; i++) + { + if (TheFunc[i] == 0xE8) + { + Hooking::MinHook::Hook((PVOID)(Memcury::Scanner(__int64(TheFunc) + i).RelativeOffset(1).Get()), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); + } + } + + //Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC450), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); } if (Fortnite_Version >= 16 && Fortnite_Version < 19) diff --git a/Project Reboot 3.0/globals.h b/Project Reboot 3.0/globals.h index 6f29746..037c792 100644 --- a/Project Reboot 3.0/globals.h +++ b/Project Reboot 3.0/globals.h @@ -31,10 +31,10 @@ namespace Globals extern inline int NumToSubtractFromSquadId = 0; // I think 2? extern inline std::string PlaylistName = -//"/Game/Athena/Playlists/Playlist_DefaultSolo.Playlist_DefaultSolo"; +"/Game/Athena/Playlists/Playlist_DefaultSolo.Playlist_DefaultSolo"; // "/Game/Athena/Playlists/gg/Playlist_Gg_Reverse.Playlist_Gg_Reverse"; // "/Game/Athena/Playlists/Playlist_DefaultDuo.Playlist_DefaultDuo"; - "/Game/Athena/Playlists/Playground/Playlist_Playground.Playlist_Playground"; +//"/Game/Athena/Playlists/Playground/Playlist_Playground.Playlist_Playground"; // "/Game/Athena/Playlists/Carmine/Playlist_Carmine.Playlist_Carmine"; // "/Game/Athena/Playlists/Fill/Playlist_Fill_Solo.Playlist_Fill_Solo"; // "/Game/Athena/Playlists/Low/Playlist_Low_Solo.Playlist_Low_Solo"; diff --git a/Project Reboot 3.0/gui.h b/Project Reboot 3.0/gui.h index 0275e21..2cb79b3 100644 --- a/Project Reboot 3.0/gui.h +++ b/Project Reboot 3.0/gui.h @@ -116,7 +116,7 @@ static inline void SetIsLategame(bool Value) static inline bool HasAnyCalendarModification() { - return Calendar::HasSnowModification() || Calendar::HasNYE() || (Fortnite_Version >= 8.40 && Fortnite_Version < 9.0) || std::floor(Fortnite_Version) == 13; + return Calendar::HasSnowModification() || Calendar::HasNYE() || Fortnite_Version == 8.40 || std::floor(Fortnite_Version) == 13; } static inline void Restart() // todo move? @@ -971,68 +971,42 @@ static inline void MainUI() static UObject* SAR = FindObject("/Game/Athena/Maps/Athena_POI_Foundations.Athena_POI_Foundations:PersistentLevel.BP_SnowAlwaysRelevant_2"); if (SAR) { + static bool LoadedSleepy = false; + if (!LoadedSleepy && ImGui::Button("Load Sleepy")) { - static bool LoadedSleepy = false; - if (!LoadedSleepy && ImGui::Button("Load Sleepy")) + SAR->ProcessEvent(SAR->FindFunction("LoadSleepy")); + + LoadedSleepy = true; + + UObject* SleepyProp = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_Prop_0"); + UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_M_2"); + + while (!SleepyProp && !SleepyM) { - SAR->ProcessEvent(SAR->FindFunction("LoadSleepy")); - //SAR->ProcessEvent(SAR->FindFunction("LoadLeaky")); - LoadedSleepy = true; - - UObject* SleepyProp = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_Prop_0"); - UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_M_2"); - - while (!SleepyProp && !SleepyM) - { - SleepyProp = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_Prop_0"); - SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_M_2"); - } - - Hooking::MinHook::Hook(SleepyProp, SleepyProp->FindFunction("OnDamageServer"), Calendar::OnDamageServerSleepyHook, (void**)&Calendar::OnDamageServerSleepyOriginal, false, true); - int FiveHundred = 500; - *SleepyM->GetPtr("MaxHealth") = 500; - SleepyM->ProcessEvent(SleepyM->FindFunction("RootSetProgress"), &FiveHundred); - - LOG_INFO(LogDev, "Sleepy loaded!"); + SleepyProp = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_Prop_0"); + SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_M_2"); } - if (LoadedSleepy) - { - static int SleepyProgress = 0; - ImGui::SliderInt("Sleepy Progress", &SleepyProgress, 0, 1000); - if (ImGui::Button("Move Sleepy")) - { - static UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_M_2"); - static auto ProgressOffset = SleepyM->GetOffset("Progress"); - *SleepyM->GetPtr(ProgressOffset) = (float)SleepyProgress * (1.0f / 1000.0f); - static int EntryPoint = 929; - static auto ExecUbergraph = SleepyM->FindFunction("ExecuteUbergraph_BP_Sleepy_M"); - SleepyM->ProcessEvent(ExecUbergraph, &EntryPoint); - } - } + Hooking::MinHook::Hook(SleepyProp, SleepyProp->FindFunction("OnDamageServer"), Calendar::OnDamageServerSleepyHook, nullptr, false, true); + int FiveHundred = 500; + *SleepyM->GetPtr("MaxHealth") = 500; + SleepyM->ProcessEvent(SleepyM->FindFunction("RootSetProgress"), &FiveHundred); + + LOG_INFO(LogDev, "Sleepy loaded!"); } - ImGui::Separator(); - + if (LoadedSleepy) { - static bool LoadedLeaky = false; - if (!LoadedLeaky && ImGui::Button("Load Leaky")) + static int SleepyProgress = 0; + ImGui::SliderInt("Sleepy Progress", &SleepyProgress, 0, 1000); + if (ImGui::Button("Move Sleepy")) { - SAR->ProcessEvent(SAR->FindFunction("LoadLeaky")); - LoadedLeaky = true; - - UObject* LeakyHandler = FindObject("/Game/Athena/Maps/Test/S8/LeakyMap.LeakyMap.PersistentLevel.BP_LeakyHandler_2"); - - while (!LeakyHandler) - { - LeakyHandler = FindObject("/Game/Athena/Maps/Test/S8/LeakyMap.LeakyMap.PersistentLevel.BP_LeakyHandler_2"); - } - - UObject* LeakyProp = FindObject("/Game/Athena/Maps/Test/S8/LeakyMap.LeakyMap:PersistentLevel.BP_LeakyProp2"); - Hooking::MinHook::Hook(LeakyProp, LeakyProp->FindFunction("OnDamageServer"), Calendar::OnDamageServerLeakyHook, (void**)&Calendar::OnDamageServerLeakyOriginal, false, true); - //LeakyHandler->ProcessEvent(LeakyHandler->FindFunction("TestDirt")); - - LOG_INFO(LogDev, "Leaky loaded!"); + static UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap.PersistentLevel.BP_Sleepy_M_2"); + static auto ProgressOffset = SleepyM->GetOffset("Progress"); + *SleepyM->GetPtr(ProgressOffset) = (float)SleepyProgress * (1.0f / 1000.0f); + static int EntryPoint = 929; + static auto ExecUbergraph = SleepyM->FindFunction("ExecuteUbergraph_BP_Sleepy_M"); + SleepyM->ProcessEvent(ExecUbergraph, &EntryPoint); } } }