mirror of
https://github.com/Milxnor/Project-Reboot-3.0.git
synced 2026-01-13 02:42:22 +01:00
Ima go get my popeyes
This commit is contained in:
@@ -8,7 +8,7 @@ void ABuildingFoundation::SetDynamicFoundationTransformHook(UObject* Context, FF
|
||||
|
||||
auto BuildingFoundation = (ABuildingFoundation*)Context;
|
||||
|
||||
LOG_INFO(LogDev, "Bruh: {}", BuildingFoundation->GetName());
|
||||
LOG_INFO(LogDev, "SetDynamicFoundationTransformHook: {}", BuildingFoundation->GetName());
|
||||
|
||||
SetFoundationTransform(BuildingFoundation, NewTransform);
|
||||
|
||||
|
||||
@@ -797,6 +797,7 @@ bool AFortGameModeAthena::Athena_ReadyToStartMatchHook(AFortGameModeAthena* Game
|
||||
|
||||
LOG_INFO(LogNet, "WorldLevel {}", GameState->GetWorldLevel());
|
||||
|
||||
#ifndef ABOVE_S20
|
||||
if (Globals::AmountOfListens == 1) // we only want to do this one time.
|
||||
{
|
||||
if (bEnableRebooting)
|
||||
@@ -900,18 +901,11 @@ bool AFortGameModeAthena::Athena_ReadyToStartMatchHook(AFortGameModeAthena* Game
|
||||
|
||||
AllRebootVans.Free();
|
||||
|
||||
if (Engine_Version >= 500)
|
||||
{
|
||||
GameState->Get<float>("DefaultParachuteDeployTraceForGroundDistance") = 10000;
|
||||
}
|
||||
|
||||
if (AmountOfBotsToSpawn != 0)
|
||||
{
|
||||
Bots::SpawnBotsAtPlayerStarts(AmountOfBotsToSpawn);
|
||||
}
|
||||
|
||||
UptimeWebHook.send_message(std::format("Server up! {} {}", Fortnite_Version, PlaylistName)); // PlaylistName sometimes isn't always what we use!
|
||||
|
||||
if (std::floor(Fortnite_Version) == 5)
|
||||
{
|
||||
auto NewFn = FindObject<UFunction>(L"/Game/Athena/Prototype/Blueprints/Cube/CUBE.CUBE_C.New");
|
||||
@@ -979,6 +973,14 @@ bool AFortGameModeAthena::Athena_ReadyToStartMatchHook(AFortGameModeAthena* Game
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
if (Engine_Version >= 500)
|
||||
{
|
||||
GameState->Get<float>("DefaultParachuteDeployTraceForGroundDistance") = 10000;
|
||||
}
|
||||
|
||||
UptimeWebHook.send_message(std::format("Server up! {} {}", Fortnite_Version, PlaylistName)); // PlaylistName sometimes isn't always what we use!
|
||||
|
||||
static auto ReplicationDriverOffset = GetWorld()->GetNetDriver()->GetOffset("ReplicationDriver", false); // If netdriver is null the world blows up
|
||||
|
||||
Globals::bShouldUseReplicationGraph = (!(ReplicationDriverOffset == -1 || Fortnite_Version >= 20))
|
||||
|
||||
@@ -120,7 +120,7 @@ APawn* AGameModeBase::SpawnDefaultPawnForHook(AGameModeBase* GameMode, AControll
|
||||
static auto DefaultPawnClassOffset = GameMode->GetOffset("DefaultPawnClass");
|
||||
GameMode->Get<UClass*>(DefaultPawnClassOffset) = PawnClass;
|
||||
|
||||
bool bUseSpawnActor = Fortnite_Version >= 20;
|
||||
bool bUseSpawnActor = false;
|
||||
|
||||
static auto SpawnDefaultPawnAtTransformFn = FindObject<UFunction>(L"/Script/Engine.GameModeBase.SpawnDefaultPawnAtTransform");
|
||||
|
||||
@@ -136,8 +136,12 @@ APawn* AGameModeBase::SpawnDefaultPawnForHook(AGameModeBase* GameMode, AControll
|
||||
struct { AController* NewPlayer; FTransform SpawnTransform; APawn* ReturnValue; }
|
||||
AGameModeBase_SpawnDefaultPawnAtTransform_Params{ NewPlayer, SpawnTransform };
|
||||
|
||||
LOG_INFO(LogDev, "Calling SpawnDefaultPawnAtTransformFn!");
|
||||
|
||||
GameMode->ProcessEvent(SpawnDefaultPawnAtTransformFn, &AGameModeBase_SpawnDefaultPawnAtTransform_Params);
|
||||
|
||||
LOG_INFO(LogDev, "Finished SpawnDefaultPawnAtTransformFn!");
|
||||
|
||||
NewPawn = AGameModeBase_SpawnDefaultPawnAtTransform_Params.ReturnValue;
|
||||
}
|
||||
|
||||
@@ -297,7 +301,7 @@ APawn* AGameModeBase::SpawnDefaultPawnForHook(AGameModeBase* GameMode, AControll
|
||||
bFirst = false;
|
||||
Calendar::SetSnow(100);
|
||||
}
|
||||
// LOG_INFO(LogDev, "Finish SpawnDefaultPawnFor!");
|
||||
LOG_INFO(LogDev, "Finish SpawnDefaultPawnFor!");
|
||||
|
||||
return NewPawn;
|
||||
}
|
||||
@@ -6,6 +6,7 @@ MS_ALIGN(16) struct FQuat
|
||||
{
|
||||
public:
|
||||
|
||||
#ifndef ABOVE_S20
|
||||
/** The quaternion's X-component. */
|
||||
float X;
|
||||
|
||||
@@ -17,6 +18,12 @@ public:
|
||||
|
||||
/** The quaternion's W-component. */
|
||||
float W;
|
||||
#else
|
||||
double X; // 0x0000(0x0008)(Edit, ZeroConstructor, SaveGame, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||
double Y; // 0x0008(0x0008)(Edit, ZeroConstructor, SaveGame, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||
double Z; // 0x0010(0x0008)(Edit, ZeroConstructor, SaveGame, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||
double W;
|
||||
#endif
|
||||
|
||||
struct FRotator Rotator() const;
|
||||
};
|
||||
@@ -319,6 +319,9 @@ void Addresses::FindAll()
|
||||
LOG_INFO(LogDev, "Finding StartAircraftPhase");
|
||||
Addresses::StartAircraftPhase = FindStartAircraftPhase();
|
||||
|
||||
LOG_INFO(LogDev, "Finding GIsClient");
|
||||
Addresses::GIsClient = FindGIsClient();
|
||||
|
||||
// LOG_INFO(LogDev, "Finding GetSessionInterface");
|
||||
// Addresses::GetSessionInterface = FindGetSessionInterface();
|
||||
|
||||
@@ -644,6 +647,11 @@ std::vector<uint64> Addresses::GetFunctionsToNull()
|
||||
toNull.push_back(Memcury::Scanner::FindPattern("48 8B C4 48 89 70 08 48 89 78 10 55 41 54 41 55 41 56 41 57 48 8D 68 A1 48 81 EC ? ? ? ? 45 33 ED").Get()); // collectgarbage
|
||||
}
|
||||
|
||||
if (Fortnite_Version >= 17)
|
||||
{
|
||||
toNull.push_back(Memcury::Scanner::FindPattern("48 89 5C 24 10 48 89 6C 24 20 56 57 41 54 41 56 41 57 48 81 EC ? ? ? ? 65 48 8B 04 25 ? ? ? ? 4C 8B F9").Get()); // Crash after 5 mins
|
||||
}
|
||||
|
||||
if (Engine_Version == 500)
|
||||
{
|
||||
// toNull.push_back(Memcury::Scanner::FindPattern("48 8B C4 55 53 56 57 41 54 41 55 41 56 41 57 48 8D 68 A1 48 81 EC ? ? ? ? 45 33 F6 0F 29 70 A8 44 38 35").Get()); // zone
|
||||
@@ -652,6 +660,21 @@ std::vector<uint64> Addresses::GetFunctionsToNull()
|
||||
toNull.push_back(Memcury::Scanner::FindPattern("48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 55 41 55 41 56 48 8B EC 48 83 EC 50 83 65 28 00 40 B6 05 40 38 35 ? ? ? ? 4C").Get()); // InitializeUI
|
||||
}
|
||||
|
||||
if (Fortnite_Version >= 20)
|
||||
{
|
||||
if (Addresses::GIsClient)
|
||||
{
|
||||
// all from 20.40
|
||||
// 99% of these are renderer crashes
|
||||
// toNull.push_back(Memcury::Scanner::FindPattern("48 89 5C 24 ? 48 89 74 24 ? 55 57 41 56 48 8B EC 48 83 EC 50 83 65 28 00 40 B6 05 40 38 35").Get()); // InitializeUI
|
||||
toNull.push_back(Memcury::Scanner::FindPattern("48 8B C4 48 89 58 08 4C 89 40 18 48 89 50 10 55 56 57 41 54 41 55 41 56 41 57 48 8D 68 98 48 81 EC ? ? ? ? 49 8B 48 20 45 33").Get()); // Calls func below
|
||||
toNull.push_back(Memcury::Scanner::FindPattern("48 89 5C 24 ? 57 48 83 EC 20 48 8B 41 20 48 8B FA 48 8B D9 BA ? ? ? ? 83 78 08 03 0F 8D").Get()); // some constructor crash
|
||||
toNull.push_back(Memcury::Scanner::FindPattern("4C 89 44 24 ? 53 55 56 57 41 54 41 55 41 56 41 57 48 83 EC 68 48 8D 05 ? ? ? ? 0F").Get()); // soem constructor crash (gets called by ^)
|
||||
toNull.push_back(Memcury::Scanner::FindPattern("48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC 30 48 8B F9 48 8B CA E8").Get());
|
||||
toNull.push_back(Memcury::Scanner::FindPattern("48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 41 55 41 56 48 83 EC 60 45 33 F6 4C 8D 2D ? ? ? ? 48 8B DA 48 8B E9 48 85").Get());
|
||||
}
|
||||
}
|
||||
|
||||
toNull.push_back(Addresses::ChangeGameSessionId);
|
||||
|
||||
return toNull;
|
||||
|
||||
@@ -684,11 +684,15 @@ void ChangeLevels()
|
||||
|
||||
LOG_INFO(LogDev, "Using {}.", bUseSwitchLevel ? Level.ToString() : LevelB.ToString());
|
||||
|
||||
auto LocalPC = GetLocalPlayerController();
|
||||
|
||||
LOG_INFO(LogDev, "Got PC: {}", __int64(LocalPC));
|
||||
|
||||
if (bUseSwitchLevel)
|
||||
{
|
||||
static auto SwitchLevel = FindObject<UFunction>(L"/Script/Engine.PlayerController.SwitchLevel");
|
||||
|
||||
GetLocalPlayerController()->ProcessEvent(SwitchLevel, &Level);
|
||||
LocalPC->ProcessEvent(SwitchLevel, &Level);
|
||||
|
||||
if (FindGIsServer())
|
||||
{
|
||||
@@ -728,7 +732,7 @@ void ChangeLevels()
|
||||
}
|
||||
else if (bUseRemovePlayer)
|
||||
{
|
||||
UGameplayStatics::RemovePlayer((APlayerController*)GetLocalPlayerController(), true);
|
||||
UGameplayStatics::RemovePlayer((APlayerController*)LocalPC, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -755,6 +759,46 @@ void ChangeLevels()
|
||||
}
|
||||
}
|
||||
|
||||
void ApplyNullAndRetTrues()
|
||||
{
|
||||
static auto FortPlayerControllerAthenaDefault = FindObject<AFortPlayerControllerAthena>(L"/Script/FortniteGame.Default__FortPlayerControllerAthena"); // FindObject<UClass>(L"/Game/Athena/Athena_PlayerController.Default__Athena_PlayerController_C");
|
||||
|
||||
auto AddressesToNull = Addresses::GetFunctionsToNull();
|
||||
const auto AddressesToReturnTrue = Addresses::GetFunctionsToReturnTrue();
|
||||
|
||||
auto ServerCheatAllIndex = GetFunctionIdxOrPtr(FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerCheatAll"));
|
||||
|
||||
if (ServerCheatAllIndex)
|
||||
AddressesToNull.push_back(__int64(FortPlayerControllerAthenaDefault->VFTable[ServerCheatAllIndex / 8]));
|
||||
|
||||
for (auto func : AddressesToNull)
|
||||
{
|
||||
if (func == 0)
|
||||
continue;
|
||||
|
||||
LOG_INFO(LogDev, "Nulling 0x{:x}", func - __int64(GetModuleHandleW(0)));
|
||||
|
||||
DWORD dwProtection;
|
||||
VirtualProtect((PVOID)func, 1, PAGE_EXECUTE_READWRITE, &dwProtection);
|
||||
|
||||
*(uint8_t*)func = 0xC3;
|
||||
|
||||
DWORD dwTemp;
|
||||
VirtualProtect((PVOID)func, 1, dwProtection, &dwTemp);
|
||||
}
|
||||
|
||||
for (auto func : AddressesToReturnTrue)
|
||||
{
|
||||
if (func == 0)
|
||||
continue;
|
||||
|
||||
LOG_INFO(LogDev, "Forcing return true on 0x{:x}", func - __int64(GetModuleHandleW(0)));
|
||||
|
||||
MH_CreateHook((PVOID)func, ReturnTrueHook, nullptr);
|
||||
MH_EnableHook((PVOID)func);
|
||||
}
|
||||
}
|
||||
|
||||
DWORD WINAPI Main(LPVOID)
|
||||
{
|
||||
InitLogger();
|
||||
@@ -821,7 +865,6 @@ DWORD WINAPI Main(LPVOID)
|
||||
static auto GameModeDefault = FindObject<AFortGameModeAthena>(L"/Script/FortniteGame.Default__FortGameModeAthena");
|
||||
static auto FortPlayerControllerZoneDefault = FindObject<AFortPlayerController>(L"/Script/FortniteGame.Default__FortPlayerControllerZone");
|
||||
static auto FortPlayerControllerDefault = FindObject<AFortPlayerController>(L"/Script/FortniteGame.Default__FortPlayerController");
|
||||
static auto FortPlayerControllerAthenaDefault = FindObject<AFortPlayerControllerAthena>(L"/Script/FortniteGame.Default__FortPlayerControllerAthena"); // FindObject<UClass>(L"/Game/Athena/Athena_PlayerController.Default__Athena_PlayerController_C");
|
||||
static auto FortPlayerPawnAthenaDefault = FindObject<AFortPlayerPawn>(L"/Script/FortniteGame.Default__FortPlayerPawnAthena"); // FindObject<AFortPlayerPawn>(L"/Game/Athena/PlayerPawn_Athena.Default__PlayerPawn_Athena_C");
|
||||
static auto FortAbilitySystemComponentAthenaDefault = FindObject<UObject>(L"/Script/FortniteGame.Default__FortAbilitySystemComponentAthena");
|
||||
static auto FortPlayerStateAthenaDefault = FindObject<AFortPlayerStateAthena>(L"/Script/FortniteGame.Default__FortPlayerStateAthena");
|
||||
@@ -829,6 +872,9 @@ DWORD WINAPI Main(LPVOID)
|
||||
static auto AthenaMarkerComponentDefault = FindObject<UAthenaMarkerComponent>(L"/Script/FortniteGame.Default__AthenaMarkerComponent");
|
||||
static auto FortWeaponDefault = FindObject<AFortWeapon>(L"/Script/FortniteGame.Default__FortWeapon");
|
||||
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");
|
||||
|
||||
ApplyNullAndRetTrues();
|
||||
|
||||
// UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogNetPackageMap VeryVerbose", nullptr);
|
||||
// UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogNetTraffic VeryVerbose", nullptr);
|
||||
@@ -870,7 +916,9 @@ DWORD WINAPI Main(LPVOID)
|
||||
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::ActorGetNetMode, (PVOID)GetNetModeHook2, nullptr);
|
||||
|
||||
if (Fortnite_Version > 13) // ermm
|
||||
if (Fortnite_Version > 13 && // ermm
|
||||
Fortnite_Version < 20
|
||||
)
|
||||
{
|
||||
Hooking::MinHook::Hook(FindObject<ABuildingFoundation>(L"/Script/FortniteGame.Default__BuildingFoundation"),
|
||||
FindObject<UFunction>(L"/Script/FortniteGame.BuildingFoundation.SetDynamicFoundationTransform"),
|
||||
@@ -961,15 +1009,6 @@ DWORD WINAPI Main(LPVOID)
|
||||
}
|
||||
}
|
||||
|
||||
if (Fortnite_Version >= 17.00) // Fixes random crash that happens a couple minutes after server starts for s17+
|
||||
{
|
||||
uintptr_t ServerCrashFix = Memcury::Scanner::FindPattern("48 89 5C 24 10 48 89 6C 24 20 56 57 41 54 41 56 41 57 48 81 EC ? ? ? ? 65 48 8B 04 25 ? ? ? ? 4C 8B F9").Get();
|
||||
|
||||
LOG_INFO(LogDev, "ServerCrashFix: 0x{:x}", ServerCrashFix);
|
||||
|
||||
Hooking::MinHook::Hook((PVOID)ServerCrashFix, (PVOID)ReturnFalseHook, nullptr);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
if (Fortnite_Version == 6.21)
|
||||
@@ -985,41 +1024,6 @@ DWORD WINAPI Main(LPVOID)
|
||||
|
||||
LOG_INFO(LogDev, "Switch levels.");
|
||||
|
||||
auto AddressesToNull = Addresses::GetFunctionsToNull();
|
||||
const auto AddressesToReturnTrue = Addresses::GetFunctionsToReturnTrue();
|
||||
|
||||
auto ServerCheatAllIndex = GetFunctionIdxOrPtr(FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerCheatAll"));
|
||||
|
||||
if (ServerCheatAllIndex)
|
||||
AddressesToNull.push_back(__int64(FortPlayerControllerAthenaDefault->VFTable[ServerCheatAllIndex / 8]));
|
||||
|
||||
for (auto func : AddressesToNull)
|
||||
{
|
||||
if (func == 0)
|
||||
continue;
|
||||
|
||||
LOG_INFO(LogDev, "Nulling 0x{:x}", func - __int64(GetModuleHandleW(0)));
|
||||
|
||||
DWORD dwProtection;
|
||||
VirtualProtect((PVOID)func, 1, PAGE_EXECUTE_READWRITE, &dwProtection);
|
||||
|
||||
*(uint8_t*)func = 0xC3;
|
||||
|
||||
DWORD dwTemp;
|
||||
VirtualProtect((PVOID)func, 1, dwProtection, &dwTemp);
|
||||
}
|
||||
|
||||
for (auto func : AddressesToReturnTrue)
|
||||
{
|
||||
if (func == 0)
|
||||
continue;
|
||||
|
||||
LOG_INFO(LogDev, "Forcing return true on 0x{:x}", func - __int64(GetModuleHandleW(0)));
|
||||
|
||||
MH_CreateHook((PVOID)func, ReturnTrueHook, nullptr);
|
||||
MH_EnableHook((PVOID)func);
|
||||
}
|
||||
|
||||
if (Fortnite_Version != 22.4)
|
||||
{
|
||||
auto matchmaking = Memcury::Scanner::FindPattern("83 BD ? ? ? ? 01 7F 18 49 8D 4D D8 48 8B D6 E8 ? ? ? ? 48", false).Get();
|
||||
@@ -1325,8 +1329,12 @@ DWORD WINAPI Main(LPVOID)
|
||||
AFortPawn::NetMulticast_Athena_BatchedDamageCuesHook, (PVOID*)&AFortPawn::NetMulticast_Athena_BatchedDamageCuesOriginal, false, true);
|
||||
Hooking::MinHook::Hook(FortPlayerPawnAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPawn.MovingEmoteStopped"),
|
||||
AFortPawn::MovingEmoteStoppedHook, (PVOID*)&AFortPawn::MovingEmoteStoppedOriginal, false, true);
|
||||
if (Fortnite_Version < 20) // todo
|
||||
{
|
||||
Hooking::MinHook::Hook(FortPlayerPawnAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerPawnAthena.OnCapsuleBeginOverlap") ? FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerPawnAthena.OnCapsuleBeginOverlap") : FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerPawn.OnCapsuleBeginOverlap"),
|
||||
AFortPlayerPawnAthena::OnCapsuleBeginOverlapHook, (PVOID*)&AFortPlayerPawnAthena::OnCapsuleBeginOverlapOriginal, false, true);
|
||||
}
|
||||
|
||||
|
||||
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.K2_RemoveFortItemFromPlayer"),
|
||||
UFortKismetLibrary::K2_RemoveFortItemFromPlayerHook, (PVOID*)&UFortKismetLibrary::K2_RemoveFortItemFromPlayerOriginal, false, true);
|
||||
|
||||
@@ -641,7 +641,7 @@ static inline void LoadEvent(bool* bWereAllSuccessful = nullptr) // did i forget
|
||||
if (Fortnite_Version == 7.20)
|
||||
{
|
||||
static auto LoadMooneyMapOffset = Loader->GetOffset("LoadMooneyMap");
|
||||
static auto OnRep_LoadMooneyMapFn = FindObject<UFunction>("/Game/Athena/Prototype/Blueprints/Mooney/BP_MooneyLoader.BP_MooneyLoader_C.OnRep_LoadMooneyMap");
|
||||
static auto OnRep_LoadMooneyMapFn = FindObject<UFunction>(L"/Game/Athena/Prototype/Blueprints/Mooney/BP_MooneyLoader.BP_MooneyLoader_C.OnRep_LoadMooneyMap");
|
||||
|
||||
if (LoadMooneyMapOffset == -1 || !OnRep_LoadMooneyMapFn)
|
||||
{
|
||||
@@ -798,14 +798,14 @@ static inline void StartEvent()
|
||||
|
||||
if (Fortnite_Version >= 17.30)
|
||||
{
|
||||
static auto OnRep_RootStartTimeFn = FindObject<UFunction>("/Script/SpecialEventGameplayRuntime.SpecialEventScriptMeshActor.OnRep_RootStartTime");
|
||||
static auto MeshRootStartEventFn = FindObject<UFunction>("/Script/SpecialEventGameplayRuntime.SpecialEventScriptMeshActor.MeshRootStartEvent");
|
||||
auto SpecialEventScriptMeshActorClass = FindObject<UClass>("/Script/SpecialEventGameplayRuntime.SpecialEventScriptMeshActor");
|
||||
static auto OnRep_RootStartTimeFn = FindObject<UFunction>(L"/Script/SpecialEventGameplayRuntime.SpecialEventScriptMeshActor.OnRep_RootStartTime");
|
||||
static auto MeshRootStartEventFn = FindObject<UFunction>(L"/Script/SpecialEventGameplayRuntime.SpecialEventScriptMeshActor.MeshRootStartEvent");
|
||||
auto SpecialEventScriptMeshActorClass = FindObject<UClass>(L"/Script/SpecialEventGameplayRuntime.SpecialEventScriptMeshActor");
|
||||
auto AllSpecialEventScriptMeshActors = UGameplayStatics::GetAllActorsOfClass(GetWorld(), SpecialEventScriptMeshActorClass);
|
||||
|
||||
if (Fortnite_Version == 17.50)
|
||||
{
|
||||
auto Scripting = FindObject<UObject>("/Kiwi/Levels/Kiwi_P.Kiwi_P:PersistentLevel.BP_Kiwi_Master_Scripting_2");
|
||||
auto Scripting = FindObject<UObject>(L"/Kiwi/Levels/Kiwi_P.Kiwi_P:PersistentLevel.BP_Kiwi_Master_Scripting_2");
|
||||
|
||||
float SecondsSinceEventBegan = 0;
|
||||
|
||||
@@ -821,7 +821,7 @@ static inline void StartEvent()
|
||||
{
|
||||
OnReadyParams.PlaylistContextTags = FGameplayTagContainer();
|
||||
}
|
||||
auto BB = FindObject<UFunction>("/Kiwi/Gameplay/BP_Kiwi_Master_Scripting.BP_Kiwi_Master_Scripting_C.OnReady_F1A32853487CB7603278E6847A5F2625");
|
||||
auto BB = FindObject<UFunction>(L"/Kiwi/Gameplay/BP_Kiwi_Master_Scripting.BP_Kiwi_Master_Scripting_C.OnReady_F1A32853487CB7603278E6847A5F2625");
|
||||
Scripting->ProcessEvent(BB, &OnReadyParams);
|
||||
|
||||
auto eventscript = FindObject("/Kiwi/Levels/Kiwi_P.Kiwi_P:PersistentLevel.Kiwi_EventScript_2");
|
||||
|
||||
@@ -51,7 +51,7 @@ uint64 FindGIsClient()
|
||||
auto Addr = Memcury::Scanner::FindStringRef(L"AllowCommandletRendering");
|
||||
|
||||
std::vector<std::vector<uint8_t>> BytesArray = {
|
||||
// {0x88, 0x05}, // Idk what version this is
|
||||
{0x88, 0x05}, // 20.40
|
||||
{0xC6, 0x05}, // mov cs X // Checked on 1.11, 12.41
|
||||
{0x88, 0x1D}, // mov cs bl // Checked on 17.50, 19.10
|
||||
// {0x44, 0x88} // IDK WHAT VERSION This for but it scuffs older builds
|
||||
|
||||
@@ -1456,7 +1456,7 @@ static inline DWORD WINAPI GuiThread(LPVOID)
|
||||
{
|
||||
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"RebootClass", NULL };
|
||||
::RegisterClassEx(&wc);
|
||||
HWND hwnd = ::CreateWindowExW(0L, wc.lpszClassName, L"Project Reboot", (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX), 100, 100, Width, Height, NULL, NULL, wc.hInstance, NULL);
|
||||
HWND hwnd = ::CreateWindowExW(0L, wc.lpszClassName, (L"Project Reboot " + std::to_wstring(Fortnite_Version)).c_str(), (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX), 100, 100, Width, Height, NULL, NULL, wc.hInstance, NULL);
|
||||
|
||||
if (false) // idk why this dont work
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user