mirror of
https://github.com/Milxnor/Project-Reboot-3.0.git
synced 2026-01-13 02:42:22 +01:00
Try editing again, fix 1.7.2 zone
This commit is contained in:
@@ -416,6 +416,12 @@ bool AFortGameModeAthena::Athena_ReadyToStartMatchHook(AFortGameModeAthena* Game
|
|||||||
// SpawnIsland->RepData->Soemthing = FoundationSetup->LobbyLocation;
|
// SpawnIsland->RepData->Soemthing = FoundationSetup->LobbyLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Fortnite_Version == 14.60 && Globals::bGoingToPlayEvent)
|
||||||
|
{
|
||||||
|
// Auto with SetDynamicFoundationEnabled
|
||||||
|
// ShowFoundation(FindObject<AActor>(L"/Game/Athena/Apollo/Maps/Apollo_POI_Foundations.Apollo_POI_Foundations.PersistentLevel.Lobby_Foundation3")); // Aircraft Carrier
|
||||||
|
}
|
||||||
|
|
||||||
if (Fortnite_Version == 12.41)
|
if (Fortnite_Version == 12.41)
|
||||||
{
|
{
|
||||||
ShowFoundation(FindObject<AActor>("/Game/Athena/Apollo/Maps/Apollo_POI_Foundations.Apollo_POI_Foundations.PersistentLevel.LF_Athena_POI_19x19_2"));
|
ShowFoundation(FindObject<AActor>("/Game/Athena/Apollo/Maps/Apollo_POI_Foundations.Apollo_POI_Foundations.PersistentLevel.LF_Athena_POI_19x19_2"));
|
||||||
@@ -542,11 +548,6 @@ bool AFortGameModeAthena::Athena_ReadyToStartMatchHook(AFortGameModeAthena* Game
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Fortnite_Version == 14.60 && Globals::bGoingToPlayEvent)
|
|
||||||
{
|
|
||||||
ShowFoundation(FindObject<AActor>(L"/Game/Athena/Apollo/Maps/Apollo_POI_Foundations.Apollo_POI_Foundations.PersistentLevel.Lobby_Foundation3")); // Aircraft Carrier
|
|
||||||
}
|
|
||||||
|
|
||||||
AActor* TheBlock = nullptr;
|
AActor* TheBlock = nullptr;
|
||||||
|
|
||||||
if (Fortnite_Version > 10) // todo only checked on 10.40
|
if (Fortnite_Version > 10) // todo only checked on 10.40
|
||||||
@@ -888,6 +889,10 @@ bool AFortGameModeAthena::Athena_ReadyToStartMatchHook(AFortGameModeAthena* Game
|
|||||||
WorldNamesToStreamAllFoundationsIn.push_back("/Temp/Game/Athena/Maps/POI/Athena_POI_CommunityPark_003_M_5c711338");
|
WorldNamesToStreamAllFoundationsIn.push_back("/Temp/Game/Athena/Maps/POI/Athena_POI_CommunityPark_003_M_5c711338");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static auto PawnClass = FindObject<UClass>(L"/Game/Athena/PlayerPawn_Athena.PlayerPawn_Athena_C");
|
||||||
|
static auto DefaultPawnClassOffset = GameMode->GetOffset("DefaultPawnClass");
|
||||||
|
GameMode->Get<UClass*>(DefaultPawnClassOffset) = PawnClass; // I think it would be better if we didn't talk about this.
|
||||||
|
|
||||||
if (WorldNamesToStreamAllFoundationsIn.size() > 0)
|
if (WorldNamesToStreamAllFoundationsIn.size() > 0)
|
||||||
{
|
{
|
||||||
auto ObjectNum = ChunkedObjects ? ChunkedObjects->Num() : UnchunkedObjects ? UnchunkedObjects->Num() : 0;
|
auto ObjectNum = ChunkedObjects ? ChunkedObjects->Num() : UnchunkedObjects ? UnchunkedObjects->Num() : 0;
|
||||||
@@ -1095,7 +1100,7 @@ int AFortGameModeAthena::Athena_PickTeamHook(AFortGameModeAthena* GameMode, uint
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_INFO(LogTeams, "Spreading Teams {} [{}] Player is going on team {} with {} members.", bShouldSpreadTeams, TeamsNum, NextTeamIndex, CurrentTeamMembers);
|
LOG_INFO(LogTeams, "Spreading Teams {} Player is going on team {}/{} with {} members.", bShouldSpreadTeams, NextTeamIndex, TeamsNum, CurrentTeamMembers);
|
||||||
|
|
||||||
CurrentTeamMembers++;
|
CurrentTeamMembers++;
|
||||||
|
|
||||||
|
|||||||
@@ -834,8 +834,8 @@ void AFortPlayerController::ServerCreateBuildingActorHook(UObject* Context, FFra
|
|||||||
{
|
{
|
||||||
auto PlayerController = (AFortPlayerController*)Context;
|
auto PlayerController = (AFortPlayerController*)Context;
|
||||||
|
|
||||||
if (!PlayerController) // ??
|
// if (!PlayerController) // ??
|
||||||
return ServerCreateBuildingActorOriginal(Context, Stack, Ret);
|
// return ServerCreateBuildingActorOriginal(Context, Stack, Ret);
|
||||||
|
|
||||||
auto WorldInventory = PlayerController->GetWorldInventory();
|
auto WorldInventory = PlayerController->GetWorldInventory();
|
||||||
|
|
||||||
@@ -862,7 +862,7 @@ void AFortPlayerController::ServerCreateBuildingActorHook(UObject* Context, FFra
|
|||||||
bMirrored = CreateBuildingData->bMirrored;
|
bMirrored = CreateBuildingData->bMirrored;
|
||||||
|
|
||||||
static auto BroadcastRemoteClientInfoOffset = PlayerController->GetOffset("BroadcastRemoteClientInfo");
|
static auto BroadcastRemoteClientInfoOffset = PlayerController->GetOffset("BroadcastRemoteClientInfo");
|
||||||
auto BroadcastRemoteClientInfo = PlayerController->Get(BroadcastRemoteClientInfoOffset);
|
UObject* BroadcastRemoteClientInfo = PlayerController->Get(BroadcastRemoteClientInfoOffset);
|
||||||
|
|
||||||
static auto RemoteBuildableClassOffset = BroadcastRemoteClientInfo->GetOffset("RemoteBuildableClass");
|
static auto RemoteBuildableClassOffset = BroadcastRemoteClientInfo->GetOffset("RemoteBuildableClass");
|
||||||
BuildingClass = BroadcastRemoteClientInfo->Get<UClass*>(RemoteBuildableClassOffset);
|
BuildingClass = BroadcastRemoteClientInfo->Get<UClass*>(RemoteBuildableClassOffset);
|
||||||
@@ -885,7 +885,7 @@ void AFortPlayerController::ServerCreateBuildingActorHook(UObject* Context, FFra
|
|||||||
if (!BuildingClass)
|
if (!BuildingClass)
|
||||||
return ServerCreateBuildingActorOriginal(Context, Stack, Ret);
|
return ServerCreateBuildingActorOriginal(Context, Stack, Ret);
|
||||||
|
|
||||||
auto GameState = Cast<AFortGameStateAthena>(((AFortGameMode*)GetWorld()->GetGameMode())->GetGameState());
|
auto GameState = Cast<AFortGameStateAthena>(Cast<AFortGameMode>(GetWorld()->GetGameMode(), false)->GetGameState(), false);
|
||||||
|
|
||||||
auto StructuralSupportSystem = GameState->GetStructuralSupportSystem();
|
auto StructuralSupportSystem = GameState->GetStructuralSupportSystem();
|
||||||
|
|
||||||
@@ -1766,13 +1766,18 @@ void AFortPlayerController::ServerEndEditingBuildingActorHook(AFortPlayerControl
|
|||||||
|
|
||||||
AFortWeap_EditingTool* EditTool = nullptr;
|
AFortWeap_EditingTool* EditTool = nullptr;
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
auto EditToolInstance = WorldInventory->FindItemInstance(EditToolDef);
|
auto EditToolInstance = WorldInventory->FindItemInstance(EditToolDef);
|
||||||
|
|
||||||
if (!EditToolInstance)
|
if (!EditToolInstance)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
#if 1
|
||||||
EditTool = Cast<AFortWeap_EditingTool>(Pawn->EquipWeaponDefinition(EditToolDef, EditToolInstance->GetItemEntry()->GetItemGuid())); // ERM
|
EditTool = Cast<AFortWeap_EditingTool>(Pawn->EquipWeaponDefinition(EditToolDef, EditToolInstance->GetItemEntry()->GetItemGuid())); // ERM
|
||||||
|
#else
|
||||||
|
Cast<AFortWeap_EditingTool>(Pawn->EquipWeaponDefinition(EditToolDef, EditToolInstance->GetItemEntry()->GetItemGuid())); // ERM
|
||||||
|
EditTool = Cast<AFortWeap_EditingTool>(Pawn->GetCurrentWeapon());
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
EditTool = Cast<AFortWeap_EditingTool>(Pawn->GetCurrentWeapon());
|
EditTool = Cast<AFortWeap_EditingTool>(Pawn->GetCurrentWeapon());
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -86,6 +86,22 @@ AActor* AGameModeBase::K2_FindPlayerStart(AController* Player, FString IncomingN
|
|||||||
return AGameModeBase_K2_FindPlayerStart_Params.ReturnValue;
|
return AGameModeBase_K2_FindPlayerStart_Params.ReturnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AGameModeBase::PlayerCanRestartHook(UObject* Context, FFrame& Stack, bool* Ret)
|
||||||
|
{
|
||||||
|
auto ret = PlayerCanRestartOriginal(Context, Stack, Ret);
|
||||||
|
|
||||||
|
LOG_INFO(LogDev, "PlayerCanRestartHook ret: {}", ret);
|
||||||
|
|
||||||
|
if (Globals::bGoingToPlayEvent && Fortnite_Version == 14.60)
|
||||||
|
{
|
||||||
|
// 1:1
|
||||||
|
ret = true;
|
||||||
|
*Ret = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
APawn* AGameModeBase::SpawnDefaultPawnForHook(AGameModeBase* GameMode, AController* NewPlayer, AActor* StartSpot)
|
APawn* AGameModeBase::SpawnDefaultPawnForHook(AGameModeBase* GameMode, AController* NewPlayer, AActor* StartSpot)
|
||||||
{
|
{
|
||||||
LOG_INFO(LogDev, "SpawnDefaultPawnForHook!");
|
LOG_INFO(LogDev, "SpawnDefaultPawnForHook!");
|
||||||
|
|||||||
@@ -5,10 +5,13 @@
|
|||||||
#include "Controller.h"
|
#include "Controller.h"
|
||||||
#include "Pawn.h"
|
#include "Pawn.h"
|
||||||
#include "UnrealString.h"
|
#include "UnrealString.h"
|
||||||
|
#include "Stack.h"
|
||||||
|
|
||||||
class AGameModeBase : public AActor // AInfo
|
class AGameModeBase : public AActor // AInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
static inline bool (*PlayerCanRestartOriginal)(UObject* Context, FFrame& Stack, bool* Ret);
|
||||||
|
|
||||||
UClass* GetDefaultPawnClassForController(AController* InController);
|
UClass* GetDefaultPawnClassForController(AController* InController);
|
||||||
void ChangeName(AController* Controller, const FString& NewName, bool bNameChange);
|
void ChangeName(AController* Controller, const FString& NewName, bool bNameChange);
|
||||||
AActor* K2_FindPlayerStart(AController* Player, FString IncomingName);
|
AActor* K2_FindPlayerStart(AController* Player, FString IncomingName);
|
||||||
@@ -16,5 +19,6 @@ public:
|
|||||||
void RestartPlayerAtPlayerStart(AController* NewPlayer, AActor* StartSpot);
|
void RestartPlayerAtPlayerStart(AController* NewPlayer, AActor* StartSpot);
|
||||||
void RestartPlayer(AController* NewPlayer);
|
void RestartPlayer(AController* NewPlayer);
|
||||||
|
|
||||||
|
static bool PlayerCanRestartHook(UObject* Context, FFrame& Stack, bool* Ret);
|
||||||
static APawn* SpawnDefaultPawnForHook(AGameModeBase* GameMode, AController* NewPlayer, AActor* StartSpot);
|
static APawn* SpawnDefaultPawnForHook(AGameModeBase* GameMode, AController* NewPlayer, AActor* StartSpot);
|
||||||
};
|
};
|
||||||
@@ -65,10 +65,13 @@ struct FActorSpawnParametersUE500
|
|||||||
TFunction<void(UObject*)> CustomPreSpawnInitalization; // my favorite
|
TFunction<void(UObject*)> CustomPreSpawnInitalization; // my favorite
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// #define USE_VIRTUALALLOC_SPAWNPARAMS
|
||||||
|
|
||||||
static inline void* CreateSpawnParameters(ESpawnActorCollisionHandlingMethod SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::Undefined, bool bDeferConstruction = false, UObject* Owner = nullptr)
|
static inline void* CreateSpawnParameters(ESpawnActorCollisionHandlingMethod SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::Undefined, bool bDeferConstruction = false, UObject* Owner = nullptr)
|
||||||
{
|
{
|
||||||
if (Engine_Version >= 500)
|
if (Engine_Version >= 500)
|
||||||
{
|
{
|
||||||
|
#ifdef USE_VIRTUALALLOC_SPAWNPARAMS
|
||||||
auto addr = (FActorSpawnParametersUE500*)VirtualAlloc(0, sizeof(FActorSpawnParametersUE500), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
auto addr = (FActorSpawnParametersUE500*)VirtualAlloc(0, sizeof(FActorSpawnParametersUE500), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||||
|
|
||||||
if (!addr)
|
if (!addr)
|
||||||
@@ -78,9 +81,18 @@ static inline void* CreateSpawnParameters(ESpawnActorCollisionHandlingMethod Spa
|
|||||||
addr->bDeferConstruction = bDeferConstruction;
|
addr->bDeferConstruction = bDeferConstruction;
|
||||||
addr->SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
|
addr->SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
|
||||||
return addr;
|
return addr;
|
||||||
|
#else
|
||||||
|
FActorSpawnParametersUE500 addr{};
|
||||||
|
|
||||||
|
addr.Owner = Owner;
|
||||||
|
addr.bDeferConstruction = bDeferConstruction;
|
||||||
|
addr.SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
|
||||||
|
return &addr;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#ifdef USE_VIRTUALALLOC_SPAWNPARAMS
|
||||||
auto addr = (FActorSpawnParameters*)VirtualAlloc(0, sizeof(FActorSpawnParameters), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
auto addr = (FActorSpawnParameters*)VirtualAlloc(0, sizeof(FActorSpawnParameters), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||||
|
|
||||||
if (!addr)
|
if (!addr)
|
||||||
@@ -90,6 +102,14 @@ static inline void* CreateSpawnParameters(ESpawnActorCollisionHandlingMethod Spa
|
|||||||
addr->bDeferConstruction = bDeferConstruction;
|
addr->bDeferConstruction = bDeferConstruction;
|
||||||
addr->SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
|
addr->SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
|
||||||
return addr;
|
return addr;
|
||||||
|
#else
|
||||||
|
FActorSpawnParameters addr{};
|
||||||
|
|
||||||
|
addr.Owner = Owner;
|
||||||
|
addr.bDeferConstruction = bDeferConstruction;
|
||||||
|
addr.SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
|
||||||
|
return &addr;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@@ -134,12 +154,21 @@ public:
|
|||||||
template <typename ActorType>
|
template <typename ActorType>
|
||||||
ActorType* SpawnActor(UClass* Class, FTransform UserTransformPtr = FTransform(), void* SpawnParameters = nullptr)
|
ActorType* SpawnActor(UClass* Class, FTransform UserTransformPtr = FTransform(), void* SpawnParameters = nullptr)
|
||||||
{
|
{
|
||||||
if (!SpawnParameters)
|
const bool bCreatedSpawnParameters = !SpawnParameters;
|
||||||
|
|
||||||
|
if (bCreatedSpawnParameters)
|
||||||
|
{
|
||||||
SpawnParameters = CreateSpawnParameters();
|
SpawnParameters = CreateSpawnParameters();
|
||||||
|
}
|
||||||
|
|
||||||
auto actor = (ActorType*)SpawnActorOriginal(this, Class, &UserTransformPtr, SpawnParameters);
|
auto actor = (ActorType*)SpawnActorOriginal(this, Class, &UserTransformPtr, SpawnParameters);
|
||||||
|
|
||||||
VirtualFree(SpawnParameters, 0, MEM_RELEASE);
|
// if (bCreatedSpawnParameters)
|
||||||
|
{
|
||||||
|
#ifdef USE_VIRTUALALLOC_SPAWNPARAMS
|
||||||
|
VirtualFree(SpawnParameters, 0, MEM_RELEASE);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
return actor;
|
return actor;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -156,7 +156,8 @@ static inline void ProcessEventHook(UObject* Object, UFunction* Function, void*
|
|||||||
!strstr(FunctionName.c_str(), "ServerTriggerCombatEvent") &&
|
!strstr(FunctionName.c_str(), "ServerTriggerCombatEvent") &&
|
||||||
!strstr(FunctionName.c_str(), "SpinCubeTimeline__UpdateFunc") &&
|
!strstr(FunctionName.c_str(), "SpinCubeTimeline__UpdateFunc") &&
|
||||||
!strstr(ObjectName.c_str(), "FortPhysicsObjectComponent") &&
|
!strstr(ObjectName.c_str(), "FortPhysicsObjectComponent") &&
|
||||||
!strstr(FunctionName.c_str(), "GetTextValue"))
|
!strstr(FunctionName.c_str(), "GetTextValue") &&
|
||||||
|
!strstr(FunctionName.c_str(), "ExecuteUbergraph_BGA_Petrol_Pickup"))
|
||||||
{
|
{
|
||||||
LOG_INFO(LogDev, "Function called: {} with {}", FunctionFullName, ObjectName);
|
LOG_INFO(LogDev, "Function called: {} with {}", FunctionFullName, ObjectName);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -978,6 +978,8 @@ DWORD WINAPI Main(LPVOID)
|
|||||||
|
|
||||||
Hooking::MinHook::Hook(GameModeDefault, FindObject<UFunction>(L"/Script/Engine.GameModeBase.SpawnDefaultPawnFor"),
|
Hooking::MinHook::Hook(GameModeDefault, FindObject<UFunction>(L"/Script/Engine.GameModeBase.SpawnDefaultPawnFor"),
|
||||||
AGameModeBase::SpawnDefaultPawnForHook, nullptr, false);
|
AGameModeBase::SpawnDefaultPawnForHook, nullptr, false);
|
||||||
|
// Hooking::MinHook::Hook(GameModeDefault, FindObject<UFunction>(L"/Script/Engine.GameModeBase.PlayerCanRestart"),
|
||||||
|
// AGameModeBase::PlayerCanRestartHook, (PVOID*)&AGameModeBase::PlayerCanRestartOriginal, false, true);
|
||||||
Hooking::MinHook::Hook(GameModeDefault, FindObject<UFunction>(L"/Script/Engine.GameModeBase.HandleStartingNewPlayer"), AFortGameModeAthena::Athena_HandleStartingNewPlayerHook,
|
Hooking::MinHook::Hook(GameModeDefault, FindObject<UFunction>(L"/Script/Engine.GameModeBase.HandleStartingNewPlayer"), AFortGameModeAthena::Athena_HandleStartingNewPlayerHook,
|
||||||
(PVOID*)&AFortGameModeAthena::Athena_HandleStartingNewPlayerOriginal, false);
|
(PVOID*)&AFortGameModeAthena::Athena_HandleStartingNewPlayerOriginal, false);
|
||||||
|
|
||||||
@@ -1405,9 +1407,11 @@ DWORD WINAPI Main(LPVOID)
|
|||||||
LOG_INFO(LogDev, "ClientOnPawnDiedCallAddr: 0x{:x}", ClientOnPawnDiedCallAddr - __int64(GetModuleHandleW(0)));
|
LOG_INFO(LogDev, "ClientOnPawnDiedCallAddr: 0x{:x}", ClientOnPawnDiedCallAddr - __int64(GetModuleHandleW(0)));
|
||||||
Hooking::MinHook::Hook((PVOID)ClientOnPawnDiedCallAddr, AFortPlayerController::ClientOnPawnDiedHook, (PVOID*)&AFortPlayerController::ClientOnPawnDiedOriginal);
|
Hooking::MinHook::Hook((PVOID)ClientOnPawnDiedCallAddr, AFortPlayerController::ClientOnPawnDiedHook, (PVOID*)&AFortPlayerController::ClientOnPawnDiedOriginal);
|
||||||
|
|
||||||
|
#if 0
|
||||||
auto OnSafeZoneStateChangeAddr = FindFunctionCall(L"OnSafeZoneStateChange", Engine_Version == 416 ? std::vector<uint8_t>{ 0x48, 0x89, 0x54 } : std::vector<uint8_t>{ 0x48, 0x89, 0x5C });
|
auto OnSafeZoneStateChangeAddr = FindFunctionCall(L"OnSafeZoneStateChange", Engine_Version == 416 ? std::vector<uint8_t>{ 0x48, 0x89, 0x54 } : std::vector<uint8_t>{ 0x48, 0x89, 0x5C });
|
||||||
LOG_INFO(LogDev, "OnSafeZoneStateChangeAddr: 0x{:x}", OnSafeZoneStateChangeAddr - __int64(GetModuleHandleW(0)));
|
LOG_INFO(LogDev, "OnSafeZoneStateChangeAddr: 0x{:x}", OnSafeZoneStateChangeAddr - __int64(GetModuleHandleW(0)));
|
||||||
Hooking::MinHook::Hook((PVOID)OnSafeZoneStateChangeAddr, AFortSafeZoneIndicator::OnSafeZoneStateChangeHook, (PVOID*)&AFortSafeZoneIndicator::OnSafeZoneStateChangeOriginal);
|
Hooking::MinHook::Hook((PVOID)OnSafeZoneStateChangeAddr, AFortSafeZoneIndicator::OnSafeZoneStateChangeHook, (PVOID*)&AFortSafeZoneIndicator::OnSafeZoneStateChangeOriginal);
|
||||||
|
#endif
|
||||||
|
|
||||||
LOG_INFO(LogDev, "PredictionKeySize: 0x{:x} {}", PredictionKeySize, PredictionKeySize);
|
LOG_INFO(LogDev, "PredictionKeySize: 0x{:x} {}", PredictionKeySize, PredictionKeySize);
|
||||||
|
|
||||||
|
|||||||
@@ -297,7 +297,7 @@ static inline std::vector<Event> Events =
|
|||||||
},
|
},
|
||||||
|
|
||||||
"/Junior/Blueprints/BP_Junior_Scripting.BP_Junior_Scripting_C",
|
"/Junior/Blueprints/BP_Junior_Scripting.BP_Junior_Scripting_C",
|
||||||
"/Game/Athena/Playlists/Music/Playlist_Junior_32.Playlist_Junior_32",
|
"/Game/Athena/Playlists/Music/Playlist_Junior_32.Playlist_Junior_32", // ?
|
||||||
14.60
|
14.60
|
||||||
),
|
),
|
||||||
Event(
|
Event(
|
||||||
|
|||||||
@@ -532,7 +532,7 @@ static inline uint64 FindStepExplicitProperty()
|
|||||||
|
|
||||||
static inline uint64 FindIsNetRelevantForOffset()
|
static inline uint64 FindIsNetRelevantForOffset()
|
||||||
{
|
{
|
||||||
if (Engine_Version == 416) // checked on 1.7.2 & 1.8
|
if (Engine_Version == 416 || Fortnite_Version == 3.3) // checked on 1.7.2 & 1.8 & 3.3
|
||||||
return 0x420 / 8;
|
return 0x420 / 8;
|
||||||
if (Fortnite_Version == 1.11 || (Fortnite_Version >= 2.42 && Fortnite_Version <= 3.2)) // checked 1.11, 2.4.2, 2.5, 3.0, 3.1
|
if (Fortnite_Version == 1.11 || (Fortnite_Version >= 2.42 && Fortnite_Version <= 3.2)) // checked 1.11, 2.4.2, 2.5, 3.0, 3.1
|
||||||
return 0x418 / 8;
|
return 0x418 / 8;
|
||||||
@@ -1476,7 +1476,7 @@ static inline uint64 FindDispatchRequest()
|
|||||||
|
|
||||||
static inline uint64 FindMcpIsDedicatedServerOffset()
|
static inline uint64 FindMcpIsDedicatedServerOffset()
|
||||||
{
|
{
|
||||||
if (Engine_Version == 421 || Engine_Version == 422) // checked on 5.41 & 6.21 & 7.30
|
if (Fortnite_Version >= 4.5 && Engine_Version <= 422) // checked on 4.5 & 5.41 & 6.21 & 7.30
|
||||||
return 0x28;
|
return 0x28;
|
||||||
|
|
||||||
return 0x60; // 1.7.2 & 1.11 3.3 & & 4.1
|
return 0x60; // 1.7.2 & 1.11 3.3 & & 4.1
|
||||||
|
|||||||
Reference in New Issue
Block a user