mirror of
https://github.com/Milxnor/Project-Reboot-3.0.git
synced 2026-01-13 02:42:22 +01:00
can sopmeone test the fishing on s17
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
#include "ScriptInterface.h"
|
#include "ScriptInterface.h"
|
||||||
#include "FortPickup.h"
|
#include "FortPickup.h"
|
||||||
#include "FortLootPackage.h"
|
#include "FortLootPackage.h"
|
||||||
|
#include "AbilitySystemComponent.h"
|
||||||
|
|
||||||
UFortResourceItemDefinition* UFortKismetLibrary::K2_GetResourceItemDefinition(EFortResourceType ResourceType)
|
UFortResourceItemDefinition* UFortKismetLibrary::K2_GetResourceItemDefinition(EFortResourceType ResourceType)
|
||||||
{
|
{
|
||||||
@@ -65,6 +66,64 @@ void UFortKismetLibrary::ApplyCharacterCosmetics(UObject* WorldContextObject, co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UFortKismetLibrary::SpawnItemVariantPickupInWorldHook(UObject* Context, FFrame& Stack, void* Ret)
|
||||||
|
{
|
||||||
|
UObject* WorldContextObject; // 0x0(0x8)(Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||||
|
PadHexB0 Params; // = *Alloc<FSpawnItemVariantParams>(FSpawnItemVariantParams::GetStructSize());
|
||||||
|
|
||||||
|
Stack.StepCompiledIn(&WorldContextObject);
|
||||||
|
Stack.StepCompiledIn(&Params);
|
||||||
|
|
||||||
|
LOG_INFO(LogDev, __FUNCTION__);
|
||||||
|
|
||||||
|
auto ParamsPtr = (FSpawnItemVariantParams*)&Params;
|
||||||
|
|
||||||
|
auto ItemDefinition = ParamsPtr->GetWorldItemDefinition();
|
||||||
|
|
||||||
|
LOG_INFO(LogDev, "ItemDefinition: {}", ItemDefinition ? ItemDefinition->GetFullName() : "InvalidObject");
|
||||||
|
|
||||||
|
if (!ItemDefinition)
|
||||||
|
return SpawnItemVariantPickupInWorldOriginal(Context, Stack, Ret);
|
||||||
|
|
||||||
|
auto& Position = ParamsPtr->GetPosition();
|
||||||
|
|
||||||
|
LOG_INFO(LogDev, "{} {} {}", Position.X, Position.Y, Position.Z);
|
||||||
|
|
||||||
|
auto Pickup = AFortPickup::SpawnPickup(ItemDefinition, Position, ParamsPtr->GetNumberToSpawn(), ParamsPtr->GetSourceType(), ParamsPtr->GetSource());
|
||||||
|
|
||||||
|
return SpawnItemVariantPickupInWorldOriginal(Context, Stack, Ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UFortKismetLibrary::SpawnInstancedPickupInWorldHook(UObject* Context, FFrame& Stack, bool* Ret)
|
||||||
|
{
|
||||||
|
UObject* WorldContextObject; // 0x0(0x8)(Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||||
|
UFortWorldItemDefinition* ItemDefinition; // 0x8(0x8)(Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||||
|
int32 NumberToSpawn; // 0x10(0x4)(Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||||
|
FVector Position; // 0x14(0xC)(Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||||
|
FVector Direction; // 0x20(0xC)(Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||||
|
int32 OverrideMaxStackCount; // 0x2C(0x4)(Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||||
|
bool bToss; // 0x30(0x1)(Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||||
|
bool bRandomRotation; // 0x31(0x1)(Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||||
|
bool bBlockedFromAutoPickup;
|
||||||
|
|
||||||
|
LOG_INFO(LogDev, __FUNCTION__);
|
||||||
|
|
||||||
|
Stack.StepCompiledIn(&WorldContextObject);
|
||||||
|
Stack.StepCompiledIn(&ItemDefinition);
|
||||||
|
Stack.StepCompiledIn(&NumberToSpawn);
|
||||||
|
Stack.StepCompiledIn(&Position);
|
||||||
|
Stack.StepCompiledIn(&Direction);
|
||||||
|
Stack.StepCompiledIn(&OverrideMaxStackCount);
|
||||||
|
Stack.StepCompiledIn(&bToss);
|
||||||
|
Stack.StepCompiledIn(&bRandomRotation);
|
||||||
|
Stack.StepCompiledIn(&bBlockedFromAutoPickup);
|
||||||
|
|
||||||
|
auto Pickup = AFortPickup::SpawnPickup(ItemDefinition, Position, NumberToSpawn);
|
||||||
|
|
||||||
|
*Ret = Pickup;
|
||||||
|
return *Ret;
|
||||||
|
}
|
||||||
|
|
||||||
void UFortKismetLibrary::K2_SpawnPickupInWorldWithLootTierHook(UObject* Context, FFrame& Stack, void* Ret)
|
void UFortKismetLibrary::K2_SpawnPickupInWorldWithLootTierHook(UObject* Context, FFrame& Stack, void* Ret)
|
||||||
{
|
{
|
||||||
LOG_INFO(LogDev, __FUNCTION__);
|
LOG_INFO(LogDev, __FUNCTION__);
|
||||||
|
|||||||
@@ -9,6 +9,61 @@
|
|||||||
|
|
||||||
using UFortInventoryOwnerInterface = UObject;
|
using UFortInventoryOwnerInterface = UObject;
|
||||||
|
|
||||||
|
struct FSpawnItemVariantParams
|
||||||
|
{
|
||||||
|
static UStruct* GetStruct()
|
||||||
|
{
|
||||||
|
static auto SpawnItemVariantsParamsStruct = FindObject<UStruct>("/Script/FortniteGame.SpawnItemVariantParams");
|
||||||
|
return SpawnItemVariantsParamsStruct;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int GetStructSize()
|
||||||
|
{
|
||||||
|
static auto StructSize = GetStruct()->GetPropertiesSize();
|
||||||
|
return StructSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
UFortWorldItemDefinition*& GetWorldItemDefinition()
|
||||||
|
{
|
||||||
|
static auto WorldItemDefinitionOffset = FindOffsetStruct("/Script/FortniteGame.SpawnItemVariantParams", "WorldItemDefinition");
|
||||||
|
return *(UFortWorldItemDefinition**)(__int64(this) + WorldItemDefinitionOffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
int& GetNumberToSpawn()
|
||||||
|
{
|
||||||
|
static auto NumberToSpawnOffset = FindOffsetStruct("/Script/FortniteGame.SpawnItemVariantParams", "NumberToSpawn");
|
||||||
|
return *(int*)(__int64(this) + NumberToSpawnOffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
EFortPickupSourceTypeFlag& GetSourceType()
|
||||||
|
{
|
||||||
|
static auto SourceTypeOffset = FindOffsetStruct("/Script/FortniteGame.SpawnItemVariantParams", "SourceType");
|
||||||
|
return *(EFortPickupSourceTypeFlag*)(__int64(this) + SourceTypeOffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
EFortPickupSpawnSource& GetSource()
|
||||||
|
{
|
||||||
|
static auto SourceOffset = FindOffsetStruct("/Script/FortniteGame.SpawnItemVariantParams", "Source");
|
||||||
|
return *(EFortPickupSpawnSource*)(__int64(this) + SourceOffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
FVector& GetDirection()
|
||||||
|
{
|
||||||
|
static auto DirectionOffset = FindOffsetStruct("/Script/FortniteGame.SpawnItemVariantParams", "Direction");
|
||||||
|
return *(FVector*)(__int64(this) + DirectionOffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
FVector& GetPosition()
|
||||||
|
{
|
||||||
|
static auto PositionOffset = FindOffsetStruct("/Script/FortniteGame.SpawnItemVariantParams", "Position");
|
||||||
|
|
||||||
|
if (PositionOffset == -1)
|
||||||
|
PositionOffset = 0x2C; // wtf
|
||||||
|
|
||||||
|
return *(FVector*)(__int64(this) + PositionOffset);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class UFortKismetLibrary : public UObject
|
class UFortKismetLibrary : public UObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -22,10 +77,14 @@ public:
|
|||||||
static inline AFortPickup* (*K2_SpawnPickupInWorldWithClassOriginal)(UObject* Context, FFrame& Stack, AFortPickup** Ret);
|
static inline AFortPickup* (*K2_SpawnPickupInWorldWithClassOriginal)(UObject* Context, FFrame& Stack, AFortPickup** Ret);
|
||||||
static inline void (*CreateTossAmmoPickupForWeaponItemDefinitionAtLocationOriginal)(UObject* Context, FFrame& Stack, void* Ret);
|
static inline void (*CreateTossAmmoPickupForWeaponItemDefinitionAtLocationOriginal)(UObject* Context, FFrame& Stack, void* Ret);
|
||||||
static inline void (*K2_SpawnPickupInWorldWithLootTierOriginal)(UObject* Context, FFrame& Stack, void* Ret);
|
static inline void (*K2_SpawnPickupInWorldWithLootTierOriginal)(UObject* Context, FFrame& Stack, void* Ret);
|
||||||
|
static inline bool (*SpawnInstancedPickupInWorldOriginal)(UObject* Context, FFrame& Stack, bool* Ret);
|
||||||
|
static inline void (*SpawnItemVariantPickupInWorldOriginal)(UObject* Context, FFrame& Stack, void* Ret);
|
||||||
|
|
||||||
static UFortResourceItemDefinition* K2_GetResourceItemDefinition(EFortResourceType ResourceType);
|
static UFortResourceItemDefinition* K2_GetResourceItemDefinition(EFortResourceType ResourceType);
|
||||||
static void ApplyCharacterCosmetics(UObject* WorldContextObject, const TArray<UObject*>& CharacterParts, UObject* PlayerState, bool* bSuccess);
|
static void ApplyCharacterCosmetics(UObject* WorldContextObject, const TArray<UObject*>& CharacterParts, UObject* PlayerState, bool* bSuccess);
|
||||||
|
|
||||||
|
static void SpawnItemVariantPickupInWorldHook(UObject* Context, FFrame& Stack, void* Ret);
|
||||||
|
static bool SpawnInstancedPickupInWorldHook(UObject* Context, FFrame& Stack, bool* Ret);
|
||||||
static void K2_SpawnPickupInWorldWithLootTierHook(UObject* Context, FFrame& Stack, void* Ret);
|
static void K2_SpawnPickupInWorldWithLootTierHook(UObject* Context, FFrame& Stack, void* Ret);
|
||||||
static void CreateTossAmmoPickupForWeaponItemDefinitionAtLocationHook(UObject* Context, FFrame& Stack, void* Ret);
|
static void CreateTossAmmoPickupForWeaponItemDefinitionAtLocationHook(UObject* Context, FFrame& Stack, void* Ret);
|
||||||
static void GiveItemToInventoryOwnerHook(UObject* Context, FFrame& Stack, void* Ret);
|
static void GiveItemToInventoryOwnerHook(UObject* Context, FFrame& Stack, void* Ret);
|
||||||
|
|||||||
@@ -261,6 +261,10 @@ DWORD WINAPI Main(LPVOID)
|
|||||||
UFortKismetLibrary::PickLootDropsHook, (PVOID*)&UFortKismetLibrary::PickLootDropsOriginal, false, true);
|
UFortKismetLibrary::PickLootDropsHook, (PVOID*)&UFortKismetLibrary::PickLootDropsOriginal, false, true);
|
||||||
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.CreateTossAmmoPickupForWeaponItemDefinitionAtLocation"),
|
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.CreateTossAmmoPickupForWeaponItemDefinitionAtLocation"),
|
||||||
UFortKismetLibrary::CreateTossAmmoPickupForWeaponItemDefinitionAtLocationHook, (PVOID*)&UFortKismetLibrary::CreateTossAmmoPickupForWeaponItemDefinitionAtLocationOriginal, false, true);
|
UFortKismetLibrary::CreateTossAmmoPickupForWeaponItemDefinitionAtLocationHook, (PVOID*)&UFortKismetLibrary::CreateTossAmmoPickupForWeaponItemDefinitionAtLocationOriginal, false, true);
|
||||||
|
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.SpawnInstancedPickupInWorld"),
|
||||||
|
UFortKismetLibrary::SpawnInstancedPickupInWorldHook, (PVOID*)&UFortKismetLibrary::SpawnInstancedPickupInWorldOriginal, false, true);
|
||||||
|
Hooking::MinHook::Hook(FortKismetLibraryDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortKismetLibrary.SpawnItemVariantPickupInWorld"),
|
||||||
|
UFortKismetLibrary::SpawnItemVariantPickupInWorldHook, (PVOID*)&UFortKismetLibrary::SpawnItemVariantPickupInWorldOriginal, false, true);
|
||||||
|
|
||||||
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.DropSpecificItem"),
|
Hooking::MinHook::Hook(FortPlayerControllerAthenaDefault, FindObject<UFunction>(L"/Script/FortniteGame.FortPlayerController.DropSpecificItem"),
|
||||||
AFortPlayerController::DropSpecificItemHook, (PVOID*)&AFortPlayerController::DropSpecificItemOriginal, false, true);
|
AFortPlayerController::DropSpecificItemHook, (PVOID*)&AFortPlayerController::DropSpecificItemOriginal, false, true);
|
||||||
|
|||||||
Reference in New Issue
Block a user