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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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;
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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++;
|
||||
|
||||
|
||||
@@ -834,8 +834,8 @@ void AFortPlayerController::ServerCreateBuildingActorHook(UObject* Context, FFra
|
||||
{
|
||||
auto PlayerController = (AFortPlayerController*)Context;
|
||||
|
||||
if (!PlayerController) // ??
|
||||
return ServerCreateBuildingActorOriginal(Context, Stack, Ret);
|
||||
// if (!PlayerController) // ??
|
||||
// return ServerCreateBuildingActorOriginal(Context, Stack, Ret);
|
||||
|
||||
auto WorldInventory = PlayerController->GetWorldInventory();
|
||||
|
||||
@@ -862,7 +862,7 @@ void AFortPlayerController::ServerCreateBuildingActorHook(UObject* Context, FFra
|
||||
bMirrored = CreateBuildingData->bMirrored;
|
||||
|
||||
static auto BroadcastRemoteClientInfoOffset = PlayerController->GetOffset("BroadcastRemoteClientInfo");
|
||||
auto BroadcastRemoteClientInfo = PlayerController->Get(BroadcastRemoteClientInfoOffset);
|
||||
UObject* BroadcastRemoteClientInfo = PlayerController->Get(BroadcastRemoteClientInfoOffset);
|
||||
|
||||
static auto RemoteBuildableClassOffset = BroadcastRemoteClientInfo->GetOffset("RemoteBuildableClass");
|
||||
BuildingClass = BroadcastRemoteClientInfo->Get<UClass*>(RemoteBuildableClassOffset);
|
||||
@@ -885,7 +885,7 @@ void AFortPlayerController::ServerCreateBuildingActorHook(UObject* Context, FFra
|
||||
if (!BuildingClass)
|
||||
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();
|
||||
|
||||
@@ -1766,13 +1766,18 @@ void AFortPlayerController::ServerEndEditingBuildingActorHook(AFortPlayerControl
|
||||
|
||||
AFortWeap_EditingTool* EditTool = nullptr;
|
||||
|
||||
#if 0
|
||||
#if 1
|
||||
auto EditToolInstance = WorldInventory->FindItemInstance(EditToolDef);
|
||||
|
||||
if (!EditToolInstance)
|
||||
return;
|
||||
|
||||
#if 1
|
||||
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
|
||||
EditTool = Cast<AFortWeap_EditingTool>(Pawn->GetCurrentWeapon());
|
||||
#endif
|
||||
|
||||
@@ -86,6 +86,22 @@ AActor* AGameModeBase::K2_FindPlayerStart(AController* Player, FString IncomingN
|
||||
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)
|
||||
{
|
||||
LOG_INFO(LogDev, "SpawnDefaultPawnForHook!");
|
||||
|
||||
@@ -5,10 +5,13 @@
|
||||
#include "Controller.h"
|
||||
#include "Pawn.h"
|
||||
#include "UnrealString.h"
|
||||
#include "Stack.h"
|
||||
|
||||
class AGameModeBase : public AActor // AInfo
|
||||
{
|
||||
public:
|
||||
static inline bool (*PlayerCanRestartOriginal)(UObject* Context, FFrame& Stack, bool* Ret);
|
||||
|
||||
UClass* GetDefaultPawnClassForController(AController* InController);
|
||||
void ChangeName(AController* Controller, const FString& NewName, bool bNameChange);
|
||||
AActor* K2_FindPlayerStart(AController* Player, FString IncomingName);
|
||||
@@ -16,5 +19,6 @@ public:
|
||||
void RestartPlayerAtPlayerStart(AController* NewPlayer, AActor* StartSpot);
|
||||
void RestartPlayer(AController* NewPlayer);
|
||||
|
||||
static bool PlayerCanRestartHook(UObject* Context, FFrame& Stack, bool* Ret);
|
||||
static APawn* SpawnDefaultPawnForHook(AGameModeBase* GameMode, AController* NewPlayer, AActor* StartSpot);
|
||||
};
|
||||
@@ -65,10 +65,13 @@ struct FActorSpawnParametersUE500
|
||||
TFunction<void(UObject*)> CustomPreSpawnInitalization; // my favorite
|
||||
};
|
||||
|
||||
// #define USE_VIRTUALALLOC_SPAWNPARAMS
|
||||
|
||||
static inline void* CreateSpawnParameters(ESpawnActorCollisionHandlingMethod SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::Undefined, bool bDeferConstruction = false, UObject* Owner = nullptr)
|
||||
{
|
||||
if (Engine_Version >= 500)
|
||||
{
|
||||
#ifdef USE_VIRTUALALLOC_SPAWNPARAMS
|
||||
auto addr = (FActorSpawnParametersUE500*)VirtualAlloc(0, sizeof(FActorSpawnParametersUE500), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||
|
||||
if (!addr)
|
||||
@@ -78,9 +81,18 @@ static inline void* CreateSpawnParameters(ESpawnActorCollisionHandlingMethod Spa
|
||||
addr->bDeferConstruction = bDeferConstruction;
|
||||
addr->SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
|
||||
return addr;
|
||||
#else
|
||||
FActorSpawnParametersUE500 addr{};
|
||||
|
||||
addr.Owner = Owner;
|
||||
addr.bDeferConstruction = bDeferConstruction;
|
||||
addr.SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
|
||||
return &addr;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef USE_VIRTUALALLOC_SPAWNPARAMS
|
||||
auto addr = (FActorSpawnParameters*)VirtualAlloc(0, sizeof(FActorSpawnParameters), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||
|
||||
if (!addr)
|
||||
@@ -90,6 +102,14 @@ static inline void* CreateSpawnParameters(ESpawnActorCollisionHandlingMethod Spa
|
||||
addr->bDeferConstruction = bDeferConstruction;
|
||||
addr->SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
|
||||
return addr;
|
||||
#else
|
||||
FActorSpawnParameters addr{};
|
||||
|
||||
addr.Owner = Owner;
|
||||
addr.bDeferConstruction = bDeferConstruction;
|
||||
addr.SpawnCollisionHandlingOverride = SpawnCollisionHandlingOverride;
|
||||
return &addr;
|
||||
#endif
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
@@ -134,12 +154,21 @@ public:
|
||||
template <typename ActorType>
|
||||
ActorType* SpawnActor(UClass* Class, FTransform UserTransformPtr = FTransform(), void* SpawnParameters = nullptr)
|
||||
{
|
||||
if (!SpawnParameters)
|
||||
const bool bCreatedSpawnParameters = !SpawnParameters;
|
||||
|
||||
if (bCreatedSpawnParameters)
|
||||
{
|
||||
SpawnParameters = CreateSpawnParameters();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -156,7 +156,8 @@ static inline void ProcessEventHook(UObject* Object, UFunction* Function, void*
|
||||
!strstr(FunctionName.c_str(), "ServerTriggerCombatEvent") &&
|
||||
!strstr(FunctionName.c_str(), "SpinCubeTimeline__UpdateFunc") &&
|
||||
!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);
|
||||
}
|
||||
|
||||
@@ -978,6 +978,8 @@ DWORD WINAPI Main(LPVOID)
|
||||
|
||||
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"),
|
||||
// AGameModeBase::PlayerCanRestartHook, (PVOID*)&AGameModeBase::PlayerCanRestartOriginal, false, true);
|
||||
Hooking::MinHook::Hook(GameModeDefault, FindObject<UFunction>(L"/Script/Engine.GameModeBase.HandleStartingNewPlayer"), AFortGameModeAthena::Athena_HandleStartingNewPlayerHook,
|
||||
(PVOID*)&AFortGameModeAthena::Athena_HandleStartingNewPlayerOriginal, false);
|
||||
|
||||
@@ -1405,9 +1407,11 @@ DWORD WINAPI Main(LPVOID)
|
||||
LOG_INFO(LogDev, "ClientOnPawnDiedCallAddr: 0x{:x}", ClientOnPawnDiedCallAddr - __int64(GetModuleHandleW(0)));
|
||||
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 });
|
||||
LOG_INFO(LogDev, "OnSafeZoneStateChangeAddr: 0x{:x}", OnSafeZoneStateChangeAddr - __int64(GetModuleHandleW(0)));
|
||||
Hooking::MinHook::Hook((PVOID)OnSafeZoneStateChangeAddr, AFortSafeZoneIndicator::OnSafeZoneStateChangeHook, (PVOID*)&AFortSafeZoneIndicator::OnSafeZoneStateChangeOriginal);
|
||||
#endif
|
||||
|
||||
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",
|
||||
"/Game/Athena/Playlists/Music/Playlist_Junior_32.Playlist_Junior_32",
|
||||
"/Game/Athena/Playlists/Music/Playlist_Junior_32.Playlist_Junior_32", // ?
|
||||
14.60
|
||||
),
|
||||
Event(
|
||||
|
||||
@@ -532,7 +532,7 @@ static inline uint64 FindStepExplicitProperty()
|
||||
|
||||
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;
|
||||
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;
|
||||
@@ -1476,7 +1476,7 @@ static inline uint64 FindDispatchRequest()
|
||||
|
||||
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 0x60; // 1.7.2 & 1.11 3.3 & & 4.1
|
||||
|
||||
Reference in New Issue
Block a user