mirror of
https://github.com/Milxnor/Project-Reboot-3.0.git
synced 2026-01-13 10:52:22 +01:00
124 files changed.
This commit is contained in:
@@ -28,9 +28,12 @@
|
||||
#include "die.h"
|
||||
#include "InventoryManagementLibrary.h"
|
||||
#include "FortPlayerPawnAthena.h"
|
||||
#include "FortWeaponRangedMountedCannon.h"
|
||||
#include "gui.h"
|
||||
|
||||
#include "FortGameplayAbilityAthena_PeriodicItemGrant.h"
|
||||
#include "vendingmachine.h"
|
||||
#include "FortOctopusVehicle.h"
|
||||
|
||||
enum ENetMode
|
||||
{
|
||||
@@ -49,13 +52,16 @@ static ENetMode GetNetModeHook2() { return NetMode; }
|
||||
static bool ReturnTrueHook() { return true; }
|
||||
static int Return2Hook() { return 2; }
|
||||
|
||||
static void NoMCPHook() { return; }
|
||||
static bool NoMCPHook() { return Globals::bNoMCP; }
|
||||
static void CollectGarbageHook() { return; }
|
||||
|
||||
static __int64 (*DispatchRequestOriginal)(__int64 a1, __int64* a2, int a3);
|
||||
|
||||
static __int64 DispatchRequestHook(__int64 a1, __int64* a2, int a3)
|
||||
{
|
||||
if (Globals::bNoMCP)
|
||||
return DispatchRequestOriginal(a1, a2, a3);
|
||||
|
||||
if (Engine_Version >= 423)
|
||||
return DispatchRequestOriginal(a1, a2, 3);
|
||||
|
||||
@@ -127,6 +133,8 @@ DWORD WINAPI Main(LPVOID)
|
||||
LOG_INFO(LogDev, "Fortnite_CL: {}", Fortnite_CL);
|
||||
LOG_INFO(LogDev, "Version: {}", Fortnite_Version);
|
||||
|
||||
CreateThread(0, 0, GuiThread, 0, 0, 0);
|
||||
|
||||
static auto GameModeDefault = FindObject<AFortGameModeAthena>(L"/Script/FortniteGame.Default__FortGameModeAthena");
|
||||
static auto FortPlayerControllerZoneDefault = FindObject<AFortPlayerController>(L"/Script/FortniteGame.Default__FortPlayerControllerZone");
|
||||
static auto FortPlayerControllerAthenaDefault = FindObject<AFortPlayerControllerAthena>(L"/Script/FortniteGame.Default__FortPlayerControllerAthena"); // FindObject<UClass>(L"/Game/Athena/Athena_PlayerController.Default__Athena_PlayerController_C");
|
||||
@@ -136,6 +144,7 @@ DWORD WINAPI Main(LPVOID)
|
||||
static auto FortKismetLibraryDefault = FindObject<UFortKismetLibrary>(L"/Script/FortniteGame.Default__FortKismetLibrary");
|
||||
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>("/Script/FortniteGame.Default__FortOctopusVehicle");
|
||||
|
||||
// UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogNetPackageMap VeryVerbose", nullptr);
|
||||
// UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogNetTraffic VeryVerbose", nullptr);
|
||||
@@ -143,21 +152,14 @@ DWORD WINAPI Main(LPVOID)
|
||||
UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogBuilding VeryVerbose", nullptr);
|
||||
// UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogFortUIDirector NoLogging", nullptr);
|
||||
UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogAbilitySystem VeryVerbose", nullptr);
|
||||
UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogDataTable VeryVerbose", nullptr);
|
||||
UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogFort VeryVerbose", nullptr);
|
||||
UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogGameMode VeryVerbose", nullptr);
|
||||
UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"log LogFortCustomization VeryVerbose", nullptr);
|
||||
|
||||
if (Globals::bNoMCP)
|
||||
{
|
||||
if (Fortnite_Version > 2.5 ? Hooking::MinHook::Hook((PVOID)Addresses::NoMCP, (PVOID)NoMCPHook, nullptr) : true)
|
||||
{
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::GetNetMode, (PVOID)GetNetModeHook, nullptr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::DispatchRequest, (PVOID)DispatchRequestHook, (PVOID*)&DispatchRequestOriginal);
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::GetNetMode, (PVOID)GetNetModeHook, nullptr);
|
||||
}
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::NoMCP, (PVOID)NoMCPHook, nullptr);
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::GetNetMode, (PVOID)GetNetModeHook, nullptr);
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::DispatchRequest, (PVOID)DispatchRequestHook, (PVOID*)&DispatchRequestOriginal);
|
||||
|
||||
GSRandSeed = FGenericPlatformTime::Cycles();
|
||||
ReplicationRandStream = FRandomStream(FGenericPlatformTime::Cycles());
|
||||
@@ -166,6 +168,7 @@ DWORD WINAPI Main(LPVOID)
|
||||
|
||||
LOG_INFO(LogDev, "Built on {} {}", __DATE__, __TIME__);
|
||||
LOG_INFO(LogDev, "[bNoMCP] {}", Globals::bNoMCP);
|
||||
LOG_INFO(LogDev, "[bGoingToPlayEvent] {}", Globals::bGoingToPlayEvent);
|
||||
LOG_INFO(LogDev, "Size: 0x{:x}", sizeof(TMap<FName, void*>));
|
||||
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::ActorGetNetMode, (PVOID)GetNetModeHook2, nullptr);
|
||||
@@ -173,15 +176,6 @@ DWORD WINAPI Main(LPVOID)
|
||||
LOG_INFO(LogDev, "FindGIsServer: 0x{:x}", FindGIsServer() - __int64(GetModuleHandleW(0)));
|
||||
LOG_INFO(LogDev, "FindGIsClient: 0x{:x}", FindGIsClient() - __int64(GetModuleHandleW(0)));
|
||||
|
||||
// if (false)
|
||||
{
|
||||
if (FindGIsServer())
|
||||
*(bool*)FindGIsServer() = true;
|
||||
|
||||
if (FindGIsClient())
|
||||
*(bool*)FindGIsClient() = false;
|
||||
}
|
||||
|
||||
bool bUseRemovePlayer = false;
|
||||
bool bUseSwitchLevel = false;
|
||||
|
||||
@@ -197,9 +191,21 @@ DWORD WINAPI Main(LPVOID)
|
||||
: L"Apollo_Terrain";
|
||||
|
||||
GetLocalPlayerController()->ProcessEvent(SwitchLevel, &Level);
|
||||
|
||||
if (FindGIsServer())
|
||||
*(bool*)FindGIsServer() = true;
|
||||
|
||||
if (FindGIsClient())
|
||||
*(bool*)FindGIsClient() = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (FindGIsServer())
|
||||
*(bool*)FindGIsServer() = true;
|
||||
|
||||
if (FindGIsClient())
|
||||
*(bool*)FindGIsClient() = false;
|
||||
|
||||
if (!bUseRemovePlayer)
|
||||
{
|
||||
auto& LocalPlayers = GetLocalPlayers();
|
||||
@@ -274,6 +280,53 @@ DWORD WINAPI Main(LPVOID)
|
||||
VirtualProtect((PVOID)func, 1, dwProtection, &dwTemp);
|
||||
}
|
||||
|
||||
if (Fortnite_Version != 22.4)
|
||||
{
|
||||
auto matchmaking = Memcury::Scanner::FindPattern("83 BD ? ? ? ? 01 7F 18 49 8D 4D D8 48 8B D6 E8 ? ? ? ? 48").Get();
|
||||
|
||||
matchmaking = matchmaking ? matchmaking : Memcury::Scanner::FindPattern("83 7D 88 01 7F 0D 48 8B CE E8").Get();
|
||||
|
||||
bool bMatchmakingSupported = false;
|
||||
|
||||
bMatchmakingSupported = matchmaking && Engine_Version >= 420;
|
||||
int idx = 0;
|
||||
|
||||
if (bMatchmakingSupported) // now check if it leads to the right place and where the jg is at
|
||||
{
|
||||
for (int i = 0; i < 9; i++)
|
||||
{
|
||||
auto byte = (uint8_t*)(matchmaking + i);
|
||||
|
||||
if (IsBadReadPtr(byte))
|
||||
continue;
|
||||
|
||||
// std::cout << std::format("[{}] 0x{:x}\n", i, (int)*byte);
|
||||
|
||||
if (*byte == 0x7F)
|
||||
{
|
||||
bMatchmakingSupported = true;
|
||||
idx = i;
|
||||
break;
|
||||
}
|
||||
|
||||
bMatchmakingSupported = false;
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "Matchmaking will " << (bMatchmakingSupported ? "be supported\n" : "not be supported\n");
|
||||
|
||||
if (bMatchmakingSupported)
|
||||
{
|
||||
std::cout << "idx: " << idx << '\n';
|
||||
|
||||
auto before = (uint8_t*)(matchmaking + idx);
|
||||
|
||||
std::cout << "before byte: " << (int)*before << '\n';
|
||||
|
||||
*before = 0x74;
|
||||
}
|
||||
}
|
||||
|
||||
// return false;
|
||||
|
||||
// UNetDriver::ReplicationDriverOffset = FindOffsetStruct("/Script/Engine.NetDriver", "ReplicationDriver"); // NetDriver->GetOffset("ReplicationDriver");
|
||||
@@ -358,7 +411,8 @@ DWORD WINAPI Main(LPVOID)
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerDropAllItems"),
|
||||
AFortPlayerController::ServerDropAllItemsHook, nullptr, false);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault,
|
||||
FindObject<UFunction>("/Script/FortniteGame.FortPlayerController.ServerSpawnInventoryDrop") ? FindObject<UFunction>("/Script/FortniteGame.FortPlayerController.ServerSpawnInventoryDrop") : FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerAttemptInventoryDrop"),
|
||||
FindObject<UFunction>("/Script/FortniteGame.FortPlayerController.ServerSpawnInventoryDrop")
|
||||
? FindObject<UFunction>("/Script/FortniteGame.FortPlayerController.ServerSpawnInventoryDrop") : FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerAttemptInventoryDrop"),
|
||||
AFortPlayerController::ServerAttemptInventoryDropHook, nullptr, false);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerCheat"),
|
||||
ServerCheatHook, nullptr, false);
|
||||
@@ -366,6 +420,8 @@ DWORD WINAPI Main(LPVOID)
|
||||
AFortPlayerController::ServerExecuteInventoryItemHook, nullptr, false);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerPlayEmoteItem"),
|
||||
AFortPlayerController::ServerPlayEmoteItemHook, nullptr, false);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerRepairBuildingActor"),
|
||||
AFortPlayerController::ServerRepairBuildingActorHook, nullptr, false);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerCreateBuildingActor"),
|
||||
AFortPlayerController::ServerCreateBuildingActorHook, (PVOID*)&AFortPlayerController::ServerCreateBuildingActorOriginal, false, true);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerBeginEditingBuildingActor"),
|
||||
@@ -376,24 +432,41 @@ DWORD WINAPI Main(LPVOID)
|
||||
AFortPlayerController::ServerEndEditingBuildingActorHook, nullptr, false);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerReadyToStartMatch"),
|
||||
AFortPlayerControllerAthena::ServerReadyToStartMatchHook, (PVOID*)&AFortPlayerControllerAthena::ServerReadyToStartMatchOriginal, false);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerControllerZone.ServerRequestSeatChange"),
|
||||
AFortPlayerControllerAthena::ServerRequestSeatChangeHook, (PVOID*)&AFortPlayerControllerAthena::ServerRequestSeatChangeOriginal, false);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerControllerAthena.ServerGiveCreativeItem"),
|
||||
AFortPlayerControllerAthena::ServerGiveCreativeItemHook, nullptr, true);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerControllerAthena.ServerPlaySquadQuickChatMessage"),
|
||||
AFortPlayerControllerAthena::ServerPlaySquadQuickChatMessage, nullptr, false);
|
||||
AFortPlayerControllerAthena::ServerPlaySquadQuickChatMessageHook, nullptr, false);
|
||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerControllerAthena.ServerTeleportToPlaygroundLobbyIsland"),
|
||||
AFortPlayerControllerAthena::ServerTeleportToPlaygroundLobbyIslandHook, nullptr, false);
|
||||
|
||||
Hooking::MinHook::Hook(FortPlayerStateAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerStateAthena.ServerSetInAircraft"),
|
||||
AFortPlayerStateAthena::ServerSetInAircraftHook, (PVOID*)&AFortPlayerStateAthena::ServerSetInAircraftOriginal, false, true); // We could use second method but eh
|
||||
|
||||
if (FortOctopusVehicleDefault)
|
||||
{
|
||||
static auto ServerUpdateTowhookFn = FindObject<UFunction>("/Script/FortniteGame.FortOctopusVehicle.ServerUpdateTowhook");
|
||||
|
||||
Hooking::MinHook::Hook(FortOctopusVehicleDefault, ServerUpdateTowhookFn, AFortOctopusVehicle::ServerUpdateTowhookHook, nullptr, false);
|
||||
}
|
||||
|
||||
Hooking::MinHook::Hook(FindObject<AFortWeaponRangedMountedCannon>(L"/Script/FortniteGame.Default__FortWeaponRangedMountedCannon"),
|
||||
FindObject<UFunction>("/Script/FortniteGame.FortWeaponRangedMountedCannon.ServerFireActorInCannon"), AFortWeaponRangedMountedCannon::ServerFireActorInCannonHook, nullptr, false);
|
||||
|
||||
static auto NetMulticast_Athena_BatchedDamageCuesFn = FindObject<UFunction>(L"/Script/FortniteGame.FortPawn.NetMulticast_Athena_BatchedDamageCues") ? FindObject<UFunction>(L"/Script/FortniteGame.FortPawn.NetMulticast_Athena_BatchedDamageCues") : FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerPawnAthena.NetMulticast_Athena_BatchedDamageCues");
|
||||
|
||||
Hooking::MinHook::Hook(FortPlayerPawnAthenaDefault, NetMulticast_Athena_BatchedDamageCuesFn,
|
||||
AFortPawn::NetMulticast_Athena_BatchedDamageCuesHook, (PVOID*)&AFortPawn::NetMulticast_Athena_BatchedDamageCuesOriginal, false, true);
|
||||
Hooking::MinHook::Hook(FortPlayerPawnAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerPawn.ServerSendZiplineState"),
|
||||
AFortPlayerPawn::ServerSendZiplineStateHook, nullptr, false);
|
||||
/* 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((PVOID)GetFunctionIdxOrPtr(FindObject<UFunction>("/Script/FortniteGame.FortPlayerPawn.ServerOnExitVehicle"), true), AFortPlayerPawn::ServerOnExitVehicleHook, (PVOID*)&AFortPlayerPawn::ServerOnExitVehicleOriginal);
|
||||
|
||||
bool bNativeHookRemoveFortItemFromPlayer = false;
|
||||
|
||||
if (bNativeHookRemoveFortItemFromPlayer)
|
||||
{
|
||||
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.K2_RemoveFortItemFromPlayer"),
|
||||
UFortKismetLibrary::K2_RemoveFortItemFromPlayerHook1, nullptr, false);
|
||||
}
|
||||
|
||||
if (Addresses::FrameStep) // put all non rpc exec hooks in this scope
|
||||
{
|
||||
@@ -412,8 +485,20 @@ DWORD WINAPI Main(LPVOID)
|
||||
UFortKismetLibrary::K2_RemoveItemFromPlayerByGuidHook, (PVOID*)&UFortKismetLibrary::K2_RemoveItemFromPlayerByGuidOriginal, false, true);
|
||||
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.K2_RemoveItemFromPlayer"),
|
||||
UFortKismetLibrary::K2_RemoveItemFromPlayerHook, (PVOID*)&UFortKismetLibrary::K2_RemoveItemFromPlayerOriginal, false, true);
|
||||
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.K2_RemoveFortItemFromPlayer"),
|
||||
UFortKismetLibrary::K2_RemoveFortItemFromPlayerHook, (PVOID*)&UFortKismetLibrary::K2_RemoveFortItemFromPlayerOriginal, false, true);
|
||||
|
||||
Hooking::MinHook::Hook(FortPlayerPawnAthenaDefault, NetMulticast_Athena_BatchedDamageCuesFn,
|
||||
AFortPawn::NetMulticast_Athena_BatchedDamageCuesHook, (PVOID*)&AFortPawn::NetMulticast_Athena_BatchedDamageCuesOriginal, false, true);
|
||||
Hooking::MinHook::Hook(FortPlayerPawnAthenaDefault, FindObject<UFunction>("/Script/FortniteGame.FortPawn.MovingEmoteStopped"),
|
||||
AFortPawn::MovingEmoteStoppedHook, (PVOID*)&AFortPawn::MovingEmoteStoppedOriginal, false, true);
|
||||
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);
|
||||
|
||||
if (!bNativeHookRemoveFortItemFromPlayer)
|
||||
{
|
||||
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.K2_RemoveFortItemFromPlayer"),
|
||||
UFortKismetLibrary::K2_RemoveFortItemFromPlayerHook, (PVOID*)&UFortKismetLibrary::K2_RemoveFortItemFromPlayerOriginal, false, true);
|
||||
}
|
||||
|
||||
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.K2_SpawnPickupInWorld"),
|
||||
UFortKismetLibrary::K2_SpawnPickupInWorldHook, (PVOID*)&UFortKismetLibrary::K2_SpawnPickupInWorldOriginal, false, true);
|
||||
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.K2_SpawnPickupInWorldWithLootTier"),
|
||||
@@ -537,13 +622,13 @@ DWORD WINAPI Main(LPVOID)
|
||||
}
|
||||
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::GetPlayerViewpoint, (PVOID)AFortPlayerControllerAthena::GetPlayerViewPointHook, (PVOID*)&AFortPlayerControllerAthena::GetPlayerViewPointOriginal);
|
||||
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::TickFlush, (PVOID)UNetDriver::TickFlushHook, (PVOID*)&UNetDriver::TickFlushOriginal);
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::OnDamageServer, (PVOID)ABuildingActor::OnDamageServerHook, (PVOID*)&ABuildingActor::OnDamageServerOriginal);
|
||||
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::GetMaxTickRate, GetMaxTickRateHook);
|
||||
// Hooking::MinHook::Hook((PVOID)Addresses::CollectGarbage, (PVOID)CollectGarbageHook, nullptr);
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::PickTeam, (PVOID)AFortGameModeAthena::Athena_PickTeamHook);
|
||||
// Hooking::MinHook::Hook((PVOID)Addresses::SetZoneToIndex, (PVOID)AFortGameModeAthena::SetZoneToIndexHook, (PVOID*)&AFortGameModeAthena::SetZoneToIndexOriginal);
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::CompletePickupAnimation, (PVOID)AFortPickup::CompletePickupAnimationHook, (PVOID*)&AFortPickup::CompletePickupAnimationOriginal);
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::CanActivateAbility, ReturnTrueHook); // ahhh wtf
|
||||
|
||||
@@ -581,7 +666,9 @@ DWORD WINAPI Main(LPVOID)
|
||||
if (Fortnite_Version >= 13)
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::SetZoneToIndex, (PVOID)SetZoneToIndexHook, (PVOID*)&SetZoneToIndexOriginal);
|
||||
|
||||
#ifndef PROD
|
||||
Hooking::MinHook::Hook((PVOID)Addresses::ProcessEvent, ProcessEventHook, (PVOID*)&UObject::ProcessEventOriginal);
|
||||
#endif
|
||||
|
||||
AddVehicleHook();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user