print mutators, fix clear aircraft on 4.1, do a scuffed fix for pickup animation on s3-s5
This commit is contained in:
Milxnor
2023-04-23 19:18:51 -04:00
parent f24c9d8aa7
commit 94dc2a0907
11 changed files with 49 additions and 24 deletions

View File

@@ -124,13 +124,13 @@ FRotator AActor::GetActorRotation()
void AActor::FlushNetDormancy() void AActor::FlushNetDormancy()
{ {
static auto fn = FindObject<UFunction>("/Script/Engine.Actor.FlushNetDormancy"); static auto fn = FindObject<UFunction>(L"/Script/Engine.Actor.FlushNetDormancy");
this->ProcessEvent(fn); this->ProcessEvent(fn);
} }
bool AActor::TeleportTo(const FVector& DestLocation, const FRotator& DestRotation) bool AActor::TeleportTo(const FVector& DestLocation, const FRotator& DestRotation)
{ {
static auto fn = FindObject<UFunction>("/Script/Engine.Actor.K2_TeleportTo"); static auto fn = FindObject<UFunction>(L"/Script/Engine.Actor.K2_TeleportTo");
struct struct
{ {
struct FVector DestLocation; // (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic) struct FVector DestLocation; // (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
@@ -157,13 +157,13 @@ bool AActor::IsNetStartup()
void AActor::SetOwner(AActor* Owner) void AActor::SetOwner(AActor* Owner)
{ {
static auto SetOwnerFn = FindObject<UFunction>("/Script/Engine.Actor.SetOwner"); static auto SetOwnerFn = FindObject<UFunction>(L"/Script/Engine.Actor.SetOwner");
this->ProcessEvent(SetOwnerFn, &Owner); this->ProcessEvent(SetOwnerFn, &Owner);
} }
void AActor::ForceNetUpdate() void AActor::ForceNetUpdate()
{ {
static auto ForceNetUpdateFn = FindObject<UFunction>("/Script/Engine.Actor.ForceNetUpdate"); static auto ForceNetUpdateFn = FindObject<UFunction>(L"/Script/Engine.Actor.ForceNetUpdate");
this->ProcessEvent(ForceNetUpdateFn); this->ProcessEvent(ForceNetUpdateFn);
} }
@@ -198,7 +198,7 @@ const AActor* AActor::GetNetOwner() const
void AActor::GetActorEyesViewPoint(FVector* OutLocation, FRotator* OutRotation) const void AActor::GetActorEyesViewPoint(FVector* OutLocation, FRotator* OutRotation) const
{ {
static auto GetActorEyesViewPointFn = FindObject<UFunction>("/Script/Engine.Actor.GetActorEyesViewPoint"); static auto GetActorEyesViewPointFn = FindObject<UFunction>(L"/Script/Engine.Actor.GetActorEyesViewPoint");
struct struct
{ {
struct FVector OutLocation; // (Parm, OutParm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic) struct FVector OutLocation; // (Parm, OutParm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

View File

@@ -553,6 +553,8 @@ bool AFortGameModeAthena::Athena_ReadyToStartMatchHook(AFortGameModeAthena* Game
// return false; // return false;
LoopMutators([&](AFortAthenaMutator* Mutator) { LOG_INFO(LogGame, "Mutator {}", Mutator->GetPathName()); });
Globals::AmountOfListens++; Globals::AmountOfListens++;
Globals::bStartedListening = true; Globals::bStartedListening = true;
} }

View File

@@ -145,7 +145,7 @@ static void ShowFoundation(AActor* BuildingFoundation, bool bShow = true)
if (FoundationEnabledStateOffset != -1) if (FoundationEnabledStateOffset != -1)
BuildingFoundation->Get<uint8_t>(FoundationEnabledStateOffset) = bShow ? Enabled : Disabled; BuildingFoundation->Get<uint8_t>(FoundationEnabledStateOffset) = bShow ? Enabled : Disabled;
SetFoundationTransform(BuildingFoundation, BuildingFoundation->GetTransform()); // idk // SetFoundationTransform(BuildingFoundation, BuildingFoundation->GetTransform()); // idk
static auto LevelToStreamOffset = BuildingFoundation->GetOffset("LevelToStream"); static auto LevelToStreamOffset = BuildingFoundation->GetOffset("LevelToStream");
auto& LevelToStream = BuildingFoundation->Get<FName>(LevelToStreamOffset); auto& LevelToStream = BuildingFoundation->Get<FName>(LevelToStreamOffset);

View File

@@ -140,6 +140,7 @@ struct FFortItemEntry : FFastArraySerializerItem
Entry->GetItemDefinition() = ItemDefinition; Entry->GetItemDefinition() = ItemDefinition;
Entry->GetCount() = Count; Entry->GetCount() = Count;
Entry->GetLoadedAmmo() = LoadedAmmo; Entry->GetLoadedAmmo() = LoadedAmmo;
// Entry->bUpdateStatsOnCollection = true; // Idk what this does but fortnite does it soo
return Entry; return Entry;
} }

View File

@@ -5,7 +5,7 @@
UFortItem* UFortItemDefinition::CreateTemporaryItemInstanceBP(int Count, int Level) UFortItem* UFortItemDefinition::CreateTemporaryItemInstanceBP(int Count, int Level)
{ {
static auto CreateTemporaryItemInstanceBPFunction = FindObject<UFunction>(L"/Script/FortniteGame.FortItemDefinition.CreateTemporaryItemInstanceBP"); static auto CreateTemporaryItemInstanceBPFunction = FindObject<UFunction>(L"/Script/FortniteGame.FortItemDefinition.CreateTemporaryItemInstanceBP");
struct { int Count; int Level; UFortItem* ReturnValue; } CreateTemporaryItemInstanceBP_Params{ Count, 1 }; struct { int Count; int Level; UFortItem* ReturnValue; } CreateTemporaryItemInstanceBP_Params{ Count, Level };
ProcessEvent(CreateTemporaryItemInstanceBPFunction, &CreateTemporaryItemInstanceBP_Params); ProcessEvent(CreateTemporaryItemInstanceBPFunction, &CreateTemporaryItemInstanceBP_Params);

View File

@@ -9,7 +9,7 @@
class UFortItemDefinition : public UObject class UFortItemDefinition : public UObject
{ {
public: public:
UFortItem* CreateTemporaryItemInstanceBP(int Count, int Level = 1); UFortItem* CreateTemporaryItemInstanceBP(int Count, int Level = 1); // Should Level be 20?
float GetMaxStackSize(); float GetMaxStackSize();
bool DoesAllowMultipleStacks() bool DoesAllowMultipleStacks()

View File

@@ -7,6 +7,7 @@
#include "FortGameModePickup.h" #include "FortGameModePickup.h"
#include "FortPlayerController.h" #include "FortPlayerController.h"
#include <memcury.h> #include <memcury.h>
#include "GameplayStatics.h"
void AFortPickup::TossPickup(FVector FinalLocation, AFortPawn* ItemOwner, int OverrideMaxStackCount, bool bToss, EFortPickupSourceTypeFlag InPickupSourceTypeFlags, EFortPickupSpawnSource InPickupSpawnSource) void AFortPickup::TossPickup(FVector FinalLocation, AFortPawn* ItemOwner, int OverrideMaxStackCount, bool bToss, EFortPickupSourceTypeFlag InPickupSourceTypeFlags, EFortPickupSpawnSource InPickupSpawnSource)
{ {
@@ -19,10 +20,23 @@ void AFortPickup::TossPickup(FVector FinalLocation, AFortPawn* ItemOwner, int Ov
this->ProcessEvent(fn, &AFortPickup_TossPickup_Params); this->ProcessEvent(fn, &AFortPickup_TossPickup_Params);
} }
void AFortPickup::SpawnMovementComponent()
{
static auto ProjectileMovementComponentClass = FindObject<UClass>("/Script/Engine.ProjectileMovementComponent"); // UFortProjectileMovementComponent
static auto MovementComponentOffset = this->GetOffset("MovementComponent");
this->Get(MovementComponentOffset) = UGameplayStatics::SpawnObject(ProjectileMovementComponentClass, this);
}
AFortPickup* AFortPickup::SpawnPickup(FFortItemEntry* ItemEntry, FVector Location, AFortPickup* AFortPickup::SpawnPickup(FFortItemEntry* ItemEntry, FVector Location,
EFortPickupSourceTypeFlag PickupSource, EFortPickupSpawnSource SpawnSource, EFortPickupSourceTypeFlag PickupSource, EFortPickupSpawnSource SpawnSource,
class AFortPawn* Pawn, UClass* OverrideClass, bool bToss, int OverrideCount) class AFortPawn* Pawn, UClass* OverrideClass, bool bToss, int OverrideCount)
{ {
if (bToss)
{
PickupSource |= EFortPickupSourceTypeFlag::Tossed;
}
// static auto FortPickupClass = FindObject<UClass>(L"/Script/FortniteGame.FortPickup"); // static auto FortPickupClass = FindObject<UClass>(L"/Script/FortniteGame.FortPickup");
static auto FortPickupAthenaClass = FindObject<UClass>(L"/Script/FortniteGame.FortPickupAthena"); static auto FortPickupAthenaClass = FindObject<UClass>(L"/Script/FortniteGame.FortPickupAthena");
auto PlayerState = Pawn ? Cast<AFortPlayerState>(Pawn->GetPlayerState()) : nullptr; auto PlayerState = Pawn ? Cast<AFortPlayerState>(Pawn->GetPlayerState()) : nullptr;
@@ -44,6 +58,7 @@ AFortPickup* AFortPickup::SpawnPickup(FFortItemEntry* ItemEntry, FVector Locatio
TArray<__int64> MultiItemPickupEntriesIGuess{}; TArray<__int64> MultiItemPickupEntriesIGuess{};
SetupPickup(Pickup, __int64(ItemEntry), MultiItemPickupEntriesIGuess, false); SetupPickup(Pickup, __int64(ItemEntry), MultiItemPickupEntriesIGuess, false);
MultiItemPickupEntriesIGuess.Free();
} }
else else
{ {
@@ -60,6 +75,11 @@ AFortPickup* AFortPickup::SpawnPickup(FFortItemEntry* ItemEntry, FVector Locatio
} }
} }
static auto PickupSourceTypeFlagsOffset = Pickup->GetOffset("PickupSourceTypeFlags", false);
if (PickupSourceTypeFlagsOffset != -1)
Pickup->Get<int32>(PickupSourceTypeFlagsOffset) |= (int)PickupSource;
PrimaryPickupItemEntry->GetCount() = OverrideCount == -1 ? ItemEntry->GetCount() : OverrideCount; PrimaryPickupItemEntry->GetCount() = OverrideCount == -1 ? ItemEntry->GetCount() : OverrideCount;
// PrimaryPickupItemEntry->GetItemGuid() = OldGuid; // PrimaryPickupItemEntry->GetItemGuid() = OldGuid;
@@ -69,11 +89,6 @@ AFortPickup* AFortPickup::SpawnPickup(FFortItemEntry* ItemEntry, FVector Locatio
// static auto OptionalOwnerIDOffset = Pickup->GetOffset("OptionalOwnerID"); // static auto OptionalOwnerIDOffset = Pickup->GetOffset("OptionalOwnerID");
// Pickup->Get<int>(OptionalOwnerIDOffset) = PlayerState ? PlayerState->GetWorldPlayerId() : -1; // Pickup->Get<int>(OptionalOwnerIDOffset) = PlayerState ? PlayerState->GetWorldPlayerId() : -1;
if (bToss)
{
PickupSource |= EFortPickupSourceTypeFlag::Tossed;
}
Pickup->TossPickup(Location, Pawn, 0, bToss, PickupSource, SpawnSource); Pickup->TossPickup(Location, Pawn, 0, bToss, PickupSource, SpawnSource);
if (PickupSource == EFortPickupSourceTypeFlag::Container) // crashes if we do this then tosspickup if (PickupSource == EFortPickupSourceTypeFlag::Container) // crashes if we do this then tosspickup
@@ -83,6 +98,11 @@ AFortPickup* AFortPickup::SpawnPickup(FFortItemEntry* ItemEntry, FVector Locatio
// Pickup->OnRep_TossedFromContainer(); // Pickup->OnRep_TossedFromContainer();
} }
if (Fortnite_Version < 6)
{
Pickup->SpawnMovementComponent();
}
return Pickup; return Pickup;
} }

View File

@@ -68,6 +68,7 @@ public:
static inline char (*CompletePickupAnimationOriginal)(AFortPickup* Pickup); static inline char (*CompletePickupAnimationOriginal)(AFortPickup* Pickup);
void TossPickup(FVector FinalLocation, class AFortPawn* ItemOwner, int OverrideMaxStackCount, bool bToss, EFortPickupSourceTypeFlag InPickupSourceTypeFlags, EFortPickupSpawnSource InPickupSpawnSource); void TossPickup(FVector FinalLocation, class AFortPawn* ItemOwner, int OverrideMaxStackCount, bool bToss, EFortPickupSourceTypeFlag InPickupSourceTypeFlags, EFortPickupSpawnSource InPickupSpawnSource);
void SpawnMovementComponent(); // BAD You probably don't wanna use unless absolutely necessary
void OnRep_PrimaryPickupItemEntry() void OnRep_PrimaryPickupItemEntry()
{ {

View File

@@ -440,8 +440,8 @@ DWORD WINAPI Main(LPVOID)
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerDropAllItems"), Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerDropAllItems"),
AFortPlayerController::ServerDropAllItemsHook, nullptr, false); AFortPlayerController::ServerDropAllItemsHook, nullptr, false);
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault,
FindObject<UFunction>("/Script/FortniteGame.FortPlayerController.ServerSpawnInventoryDrop") FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerSpawnInventoryDrop")
? FindObject<UFunction>("/Script/FortniteGame.FortPlayerController.ServerSpawnInventoryDrop") : FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerAttemptInventoryDrop"), ? FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerSpawnInventoryDrop") : FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerAttemptInventoryDrop"),
AFortPlayerController::ServerAttemptInventoryDropHook, nullptr, false); AFortPlayerController::ServerAttemptInventoryDropHook, nullptr, false);
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerCheat"), Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.ServerCheat"),
ServerCheatHook, nullptr, false); ServerCheatHook, nullptr, false);
@@ -510,11 +510,11 @@ DWORD WINAPI Main(LPVOID)
Hooking::MinHook::Hook(FortGameplayAbilityAthena_PeriodicItemGrantDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortGameplayAbilityAthena_PeriodicItemGrant.StartItemAwardTimers"), Hooking::MinHook::Hook(FortGameplayAbilityAthena_PeriodicItemGrantDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortGameplayAbilityAthena_PeriodicItemGrant.StartItemAwardTimers"),
UFortGameplayAbilityAthena_PeriodicItemGrant::StartItemAwardTimersHook, (PVOID*)&UFortGameplayAbilityAthena_PeriodicItemGrant::StartItemAwardTimersOriginal, false, true); UFortGameplayAbilityAthena_PeriodicItemGrant::StartItemAwardTimersHook, (PVOID*)&UFortGameplayAbilityAthena_PeriodicItemGrant::StartItemAwardTimersOriginal, false, true);
Hooking::MinHook::Hook(FindObject<AFortAthenaMutator_Barrier>("/Script/FortniteGame.Default__FortAthenaMutator_Barrier"), FindObject<UFunction>(L"/Script/FortniteGame.FortAthenaMutator_Barrier.OnGamePhaseStepChanged"), Hooking::MinHook::Hook(FindObject<AFortAthenaMutator_Barrier>(L"/Script/FortniteGame.Default__FortAthenaMutator_Barrier"), FindObject<UFunction>(L"/Script/FortniteGame.FortAthenaMutator_Barrier.OnGamePhaseStepChanged"),
AFortAthenaMutator_Barrier::OnGamePhaseStepChangedHook, (PVOID*)&AFortAthenaMutator_Barrier::OnGamePhaseStepChangedOriginal, false, true); AFortAthenaMutator_Barrier::OnGamePhaseStepChangedHook, (PVOID*)&AFortAthenaMutator_Barrier::OnGamePhaseStepChangedOriginal, false, true);
Hooking::MinHook::Hook(FindObject<AFortAthenaMutator_Disco>("/Script/FortniteGame.Default__FortAthenaMutator_Disco"), FindObject<UFunction>(L"/Script/FortniteGame.FortAthenaMutator_Disco.OnGamePhaseStepChanged"), Hooking::MinHook::Hook(FindObject<AFortAthenaMutator_Disco>(L"/Script/FortniteGame.Default__FortAthenaMutator_Disco"), FindObject<UFunction>(L"/Script/FortniteGame.FortAthenaMutator_Disco.OnGamePhaseStepChanged"),
AFortAthenaMutator_Disco::OnGamePhaseStepChangedHook, (PVOID*)&AFortAthenaMutator_Disco::OnGamePhaseStepChangedOriginal, false, true); AFortAthenaMutator_Disco::OnGamePhaseStepChangedHook, (PVOID*)&AFortAthenaMutator_Disco::OnGamePhaseStepChangedOriginal, false, true);
Hooking::MinHook::Hook(FindObject<AFortAthenaMutator_GiveItemsAtGamePhaseStep>("/Script/FortniteGame.Default__FortAthenaMutator_GiveItemsAtGamePhaseStep"), FindObject<UFunction>(L"/Script/FortniteGame.FortAthenaMutator_GiveItemsAtGamePhaseStep.OnGamePhaseStepChanged"), Hooking::MinHook::Hook(FindObject<AFortAthenaMutator_GiveItemsAtGamePhaseStep>(L"/Script/FortniteGame.Default__FortAthenaMutator_GiveItemsAtGamePhaseStep"), FindObject<UFunction>(L"/Script/FortniteGame.FortAthenaMutator_GiveItemsAtGamePhaseStep.OnGamePhaseStepChanged"),
AFortAthenaMutator_GiveItemsAtGamePhaseStep::OnGamePhaseStepChangedHook, (PVOID*)&AFortAthenaMutator_GiveItemsAtGamePhaseStep::OnGamePhaseStepChangedOriginal, false, true); AFortAthenaMutator_GiveItemsAtGamePhaseStep::OnGamePhaseStepChangedHook, (PVOID*)&AFortAthenaMutator_GiveItemsAtGamePhaseStep::OnGamePhaseStepChangedOriginal, false, true);
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.K2_GiveItemToPlayer"), Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.K2_GiveItemToPlayer"),
@@ -530,7 +530,7 @@ DWORD WINAPI Main(LPVOID)
Hooking::MinHook::Hook(FortPlayerPawnAthenaDefault, NetMulticast_Athena_BatchedDamageCuesFn, Hooking::MinHook::Hook(FortPlayerPawnAthenaDefault, NetMulticast_Athena_BatchedDamageCuesFn,
AFortPawn::NetMulticast_Athena_BatchedDamageCuesHook, (PVOID*)&AFortPawn::NetMulticast_Athena_BatchedDamageCuesOriginal, false, true); AFortPawn::NetMulticast_Athena_BatchedDamageCuesHook, (PVOID*)&AFortPawn::NetMulticast_Athena_BatchedDamageCuesOriginal, false, true);
Hooking::MinHook::Hook(FortPlayerPawnAthenaDefault, FindObject<UFunction>("/Script/FortniteGame.FortPawn.MovingEmoteStopped"), Hooking::MinHook::Hook(FortPlayerPawnAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPawn.MovingEmoteStopped"),
AFortPawn::MovingEmoteStoppedHook, (PVOID*)&AFortPawn::MovingEmoteStoppedOriginal, false, true); 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"), 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); AFortPlayerPawnAthena::OnCapsuleBeginOverlapHook, (PVOID*)&AFortPlayerPawnAthena::OnCapsuleBeginOverlapOriginal, false, true);
@@ -603,7 +603,7 @@ DWORD WINAPI Main(LPVOID)
Hooking::MinHook::Hook(InventoryManagementLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.InventoryManagementLibrary.SwapItems"), Hooking::MinHook::Hook(InventoryManagementLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.InventoryManagementLibrary.SwapItems"),
UInventoryManagementLibrary::SwapItemsHook, (PVOID*)&UInventoryManagementLibrary::SwapItemsOriginal, false, true); UInventoryManagementLibrary::SwapItemsHook, (PVOID*)&UInventoryManagementLibrary::SwapItemsOriginal, false, true);
static auto ServerHandlePickupInfoFn = FindObject<UFunction>("/Script/FortniteGame.FortPlayerPawn.ServerHandlePickupInfo"); static auto ServerHandlePickupInfoFn = FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerPawn.ServerHandlePickupInfo");
if (ServerHandlePickupInfoFn) if (ServerHandlePickupInfoFn)
{ {
@@ -615,7 +615,7 @@ DWORD WINAPI Main(LPVOID)
AFortPlayerPawn::ServerHandlePickupHook, nullptr, false); AFortPlayerPawn::ServerHandlePickupHook, nullptr, false);
} }
static auto PredictionKeyStruct = FindObject<UStruct>("/Script/GameplayAbilities.PredictionKey"); static auto PredictionKeyStruct = FindObject<UStruct>(L"/Script/GameplayAbilities.PredictionKey");
static auto PredictionKeySize = PredictionKeyStruct->GetPropertiesSize(); static auto PredictionKeySize = PredictionKeyStruct->GetPropertiesSize();
{ {
@@ -623,7 +623,7 @@ DWORD WINAPI Main(LPVOID)
if (Engine_Version > 420) if (Engine_Version > 420)
{ {
static auto OnRep_ReplicatedAnimMontageFn = FindObject<UFunction>("/Script/GameplayAbilities.AbilitySystemComponent.OnRep_ReplicatedAnimMontage"); static auto OnRep_ReplicatedAnimMontageFn = FindObject<UFunction>(L"/Script/GameplayAbilities.AbilitySystemComponent.OnRep_ReplicatedAnimMontage");
InternalServerTryActivateAbilityIndex = (GetFunctionIdxOrPtr(OnRep_ReplicatedAnimMontageFn) - 8) / 8; InternalServerTryActivateAbilityIndex = (GetFunctionIdxOrPtr(OnRep_ReplicatedAnimMontageFn) - 8) / 8;
} }
else else

View File

@@ -722,7 +722,7 @@ static inline uint64 FindEnterAircraft()
return Addr - i; return Addr - i;
} */ } */
if (*(uint8_t*)(uint8_t*)(Addr - i) == 0x48 && *(uint8_t*)(uint8_t*)(Addr - i + 1) == 0x89 && *(uint8_t*)(uint8_t*)(Addr - i + 2) == 0x5C && *(uint8_t*)(uint8_t*)(Addr - i + 3) == 0x74) // 4.1 if (*(uint8_t*)(uint8_t*)(Addr - i) == 0x48 && *(uint8_t*)(uint8_t*)(Addr - i + 1) == 0x89 && *(uint8_t*)(uint8_t*)(Addr - i + 2) == 0x74) // 4.1
{ {
return Addr - i; return Addr - i;
} }

View File

@@ -79,6 +79,7 @@ inline void InitLogger()
MakeLogger("LogCreative"); MakeLogger("LogCreative");
MakeLogger("LogZone"); MakeLogger("LogZone");
MakeLogger("LogReplication"); MakeLogger("LogReplication");
MakeLogger("LogMutator");
MakeLogger("LogVehicles"); MakeLogger("LogVehicles");
} }