mirror of
https://github.com/Milxnor/Project-Reboot-3.0.git
synced 2026-01-13 10:52:22 +01:00
a lot
fix looting s5, fix mcp skins on <S9, add team map markers to s8+, add nomcp to s5, add something that should fix some issues on a lot of versions
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
#include "AthenaMarkerComponent.h"
|
#include "AthenaMarkerComponent.h"
|
||||||
#include "FortPlayerControllerAthena.h"
|
#include "FortPlayerControllerAthena.h"
|
||||||
|
#include "Text.h"
|
||||||
|
#include "KismetTextLibrary.h"
|
||||||
|
|
||||||
void UAthenaMarkerComponent::ServerAddMapMarkerHook(UAthenaMarkerComponent* MarkerComponent, FFortClientMarkerRequest MarkerRequest)
|
void UAthenaMarkerComponent::ServerAddMapMarkerHook(UAthenaMarkerComponent* MarkerComponent, FFortClientMarkerRequest MarkerRequest)
|
||||||
{
|
{
|
||||||
@@ -23,6 +25,7 @@ void UAthenaMarkerComponent::ServerAddMapMarkerHook(UAthenaMarkerComponent* Mark
|
|||||||
auto MarkerData = Alloc<FFortWorldMarkerData>(FortWorldMarkerDataSize);
|
auto MarkerData = Alloc<FFortWorldMarkerData>(FortWorldMarkerDataSize);
|
||||||
|
|
||||||
static auto IconOffset = FindOffsetStruct("/Script/FortniteGame.MarkedActorDisplayInfo", "Icon");
|
static auto IconOffset = FindOffsetStruct("/Script/FortniteGame.MarkedActorDisplayInfo", "Icon");
|
||||||
|
static auto DisplayNameOffset = FindOffsetStruct("/Script/FortniteGame.MarkedActorDisplayInfo", "DisplayName");
|
||||||
static auto WorldPositionOffset = FindOffsetStruct("/Script/FortniteGame.FortWorldMarkerData", "WorldPosition", false);
|
static auto WorldPositionOffset = FindOffsetStruct("/Script/FortniteGame.FortWorldMarkerData", "WorldPosition", false);
|
||||||
static auto WorldPositionOffsetOffset = FindOffsetStruct("/Script/FortniteGame.FortWorldMarkerData", "WorldPositionOffset", false);
|
static auto WorldPositionOffsetOffset = FindOffsetStruct("/Script/FortniteGame.FortWorldMarkerData", "WorldPositionOffset", false);
|
||||||
|
|
||||||
@@ -39,14 +42,15 @@ void UAthenaMarkerComponent::ServerAddMapMarkerHook(UAthenaMarkerComponent* Mark
|
|||||||
MarkerData->GetWorldPositionOffset() = MarkerRequestPtr->GetWorldPositionOffset();
|
MarkerData->GetWorldPositionOffset() = MarkerRequestPtr->GetWorldPositionOffset();
|
||||||
MarkerData->GetMarkerID() = MarkerID;
|
MarkerData->GetMarkerID() = MarkerID;
|
||||||
MarkerData->GetMarkedActorClass().SoftObjectPtr.WeakPtr.ObjectIndex = -1;
|
MarkerData->GetMarkedActorClass().SoftObjectPtr.WeakPtr.ObjectIndex = -1;
|
||||||
MarkerData->GetMarkedActorClass().SoftObjectPtr.TagAtLastTest = -1;
|
MarkerData->GetMarkedActorClass().SoftObjectPtr.TagAtLastTest = 0;
|
||||||
MarkerData->GetMarkedActorClass().SoftObjectPtr.WeakPtr.ObjectSerialNumber = 0;
|
MarkerData->GetMarkedActorClass().SoftObjectPtr.WeakPtr.ObjectSerialNumber = 0;
|
||||||
MarkerData->GetMarkedActor().SoftObjectPtr.WeakPtr.ObjectIndex = -1;
|
MarkerData->GetMarkedActor().SoftObjectPtr.WeakPtr.ObjectIndex = -1;
|
||||||
MarkerData->GetMarkedActor().SoftObjectPtr.TagAtLastTest = -1;
|
MarkerData->GetMarkedActor().SoftObjectPtr.TagAtLastTest = 0;
|
||||||
MarkerData->GetMarkedActor().SoftObjectPtr.WeakPtr.ObjectSerialNumber = 0;
|
MarkerData->GetMarkedActor().SoftObjectPtr.WeakPtr.ObjectSerialNumber = 0;
|
||||||
((TSoftObjectPtr<UObject>*)(__int64(MarkerData->GetCustomDisplayInfo()) + IconOffset))->SoftObjectPtr.WeakPtr.ObjectIndex = -1;
|
((TSoftObjectPtr<UObject>*)(__int64(MarkerData->GetCustomDisplayInfo()) + IconOffset))->SoftObjectPtr.WeakPtr.ObjectIndex = -1;
|
||||||
((TSoftObjectPtr<UObject>*)(__int64(MarkerData->GetCustomDisplayInfo()) + IconOffset))->SoftObjectPtr.TagAtLastTest = -1;
|
((TSoftObjectPtr<UObject>*)(__int64(MarkerData->GetCustomDisplayInfo()) + IconOffset))->SoftObjectPtr.TagAtLastTest = 0;
|
||||||
((TSoftObjectPtr<UObject>*)(__int64(MarkerData->GetCustomDisplayInfo()) + IconOffset))->SoftObjectPtr.WeakPtr.ObjectSerialNumber = 0;
|
((TSoftObjectPtr<UObject>*)(__int64(MarkerData->GetCustomDisplayInfo()) + IconOffset))->SoftObjectPtr.WeakPtr.ObjectSerialNumber = 0;
|
||||||
|
*(FText*)(__int64(MarkerData->GetCustomDisplayInfo()) + DisplayNameOffset) = UKismetTextLibrary::Conv_StringToText(L"");
|
||||||
|
|
||||||
/* if (MarkerRequest.MarkedActor)
|
/* if (MarkerRequest.MarkedActor)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ struct FMarkerID { int PlayerID; int InstanceID; };
|
|||||||
|
|
||||||
struct FFortClientMarkerRequest
|
struct FFortClientMarkerRequest
|
||||||
{
|
{
|
||||||
|
char pad[0x20]; // real
|
||||||
|
|
||||||
int& GetInstanceID()
|
int& GetInstanceID()
|
||||||
{
|
{
|
||||||
static auto InstanceIDOffset = FindOffsetStruct("/Script/FortniteGame.FortClientMarkerRequest", "InstanceID");
|
static auto InstanceIDOffset = FindOffsetStruct("/Script/FortniteGame.FortClientMarkerRequest", "InstanceID");
|
||||||
|
|||||||
@@ -44,10 +44,12 @@ enum class EDynamicFoundationType : uint8_t
|
|||||||
|
|
||||||
std::string PlaylistName =
|
std::string PlaylistName =
|
||||||
"/Game/Athena/Playlists/Playlist_DefaultSolo.Playlist_DefaultSolo";
|
"/Game/Athena/Playlists/Playlist_DefaultSolo.Playlist_DefaultSolo";
|
||||||
|
// "/Game/Athena/Playlists/Playlist_DefaultDuo.Playlist_DefaultDuo";
|
||||||
// "/Game/Athena/Playlists/Playground/Playlist_Playground.Playlist_Playground";
|
// "/Game/Athena/Playlists/Playground/Playlist_Playground.Playlist_Playground";
|
||||||
// "/Game/Athena/Playlists/Carmine/Playlist_Carmine.Playlist_Carmine";
|
// "/Game/Athena/Playlists/Carmine/Playlist_Carmine.Playlist_Carmine";
|
||||||
// "/Game/Athena/Playlists/Fill/Playlist_Fill_Solo.Playlist_Fill_Solo";
|
// "/Game/Athena/Playlists/Fill/Playlist_Fill_Solo.Playlist_Fill_Solo";
|
||||||
// "/Game/Athena/Playlists/Low/Playlist_Low_Solo.Playlist_Low_Solo";
|
// "/Game/Athena/Playlists/Low/Playlist_Low_Solo.Playlist_Low_Solo";
|
||||||
|
// "/Game/Athena/Playlists/Bling/Playlist_Bling_Solo.Playlist_Bling_Solo";
|
||||||
|
|
||||||
static UFortPlaylist* GetPlaylistToUse()
|
static UFortPlaylist* GetPlaylistToUse()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -415,6 +415,12 @@ std::vector<LootDrop> PickLootDrops(FName TierGroupName, bool bPrint, int recurs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (LTDTables.size() <= 0 || LPTables.size() <= 0)
|
||||||
|
{
|
||||||
|
LOG_WARN(LogLoot, "Empty tables! ({} {})", LTDTables.size(), LPTables.size());
|
||||||
|
return LootDrops;
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<FFortLootTierData*> TierGroupLTDs;
|
std::vector<FFortLootTierData*> TierGroupLTDs;
|
||||||
|
|
||||||
for (int p = 0; p < LTDTables.size(); p++)
|
for (int p = 0; p < LTDTables.size(); p++)
|
||||||
@@ -426,7 +432,7 @@ std::vector<LootDrop> PickLootDrops(FName TierGroupName, bool bPrint, int recurs
|
|||||||
|
|
||||||
if (!LTD->IsValidLowLevel())
|
if (!LTD->IsValidLowLevel())
|
||||||
{
|
{
|
||||||
if (bPrint)
|
// if (bPrint)
|
||||||
LOG_INFO(LogLoot, "BadRead!");
|
LOG_INFO(LogLoot, "BadRead!");
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ void AFortPlayerControllerAthena::ServerAcknowledgePossessionHook(APlayerControl
|
|||||||
CopyStruct(PawnAsFort->GetPtr<__int64>(Pawn_CosmeticLoadoutOffset), CosmeticLoadout, FFortAthenaLoadout::GetStructSize());
|
CopyStruct(PawnAsFort->GetPtr<__int64>(Pawn_CosmeticLoadoutOffset), CosmeticLoadout, FFortAthenaLoadout::GetStructSize());
|
||||||
} */
|
} */
|
||||||
|
|
||||||
ApplyCID(PawnAsFort, CosmeticLoadout->GetCharacter(), true);
|
ApplyCID(PawnAsFort, CosmeticLoadout->GetCharacter(), false);
|
||||||
|
|
||||||
auto Backpack = CosmeticLoadout->GetBackpack();
|
auto Backpack = CosmeticLoadout->GetBackpack();
|
||||||
|
|
||||||
|
|||||||
25
Project Reboot 3.0/KismetTextLibrary.cpp
Normal file
25
Project Reboot 3.0/KismetTextLibrary.cpp
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#include "KismetTextLibrary.h"
|
||||||
|
|
||||||
|
#include "reboot.h"
|
||||||
|
|
||||||
|
FText UKismetTextLibrary::Conv_StringToText(const FString& inString)
|
||||||
|
{
|
||||||
|
static auto Conv_StringToTextFn = FindObject<UFunction>("/Script/Engine.KismetTextLibrary.Conv_StringToText");
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
FString inString; // (Parm, ZeroConstructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
|
||||||
|
FText ReturnValue; // (Parm, OutParm, ReturnParm, NativeAccessSpecifierPublic)
|
||||||
|
}UKismetTextLibrary_Conv_StringToText_Params{inString};
|
||||||
|
|
||||||
|
static auto Default__KismetTextLibrary = FindObject<UKismetTextLibrary>("/Script/Engine.Default__KismetTextLibrary");
|
||||||
|
Default__KismetTextLibrary->ProcessEvent(Conv_StringToTextFn, &UKismetTextLibrary_Conv_StringToText_Params);
|
||||||
|
|
||||||
|
return UKismetTextLibrary_Conv_StringToText_Params.ReturnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
UClass* UKismetTextLibrary::StaticClass()
|
||||||
|
{
|
||||||
|
static auto Class = FindObject<UClass>("/Script/Engine.KismetTextLibrary");
|
||||||
|
return Class;
|
||||||
|
}
|
||||||
13
Project Reboot 3.0/KismetTextLibrary.h
Normal file
13
Project Reboot 3.0/KismetTextLibrary.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Object.h"
|
||||||
|
#include "UnrealString.h"
|
||||||
|
#include "Text.h"
|
||||||
|
|
||||||
|
class UKismetTextLibrary : public UObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static FText Conv_StringToText(const FString& inString);
|
||||||
|
|
||||||
|
static UClass* StaticClass();
|
||||||
|
};
|
||||||
@@ -165,6 +165,9 @@ void UObject::AddToRoot()
|
|||||||
|
|
||||||
bool UObject::IsValidLowLevel()
|
bool UObject::IsValidLowLevel()
|
||||||
{
|
{
|
||||||
|
if (std::floor(Fortnite_Version) == 5) // real 1:1
|
||||||
|
return true;
|
||||||
|
|
||||||
if (this == nullptr)
|
if (this == nullptr)
|
||||||
{
|
{
|
||||||
// UE_LOG(LogUObjectBase, Warning, TEXT("NULL object"));
|
// UE_LOG(LogUObjectBase, Warning, TEXT("NULL object"));
|
||||||
|
|||||||
@@ -213,6 +213,7 @@
|
|||||||
<ClCompile Include="InventoryManagementLibrary.cpp" />
|
<ClCompile Include="InventoryManagementLibrary.cpp" />
|
||||||
<ClCompile Include="KismetMathLibrary.cpp" />
|
<ClCompile Include="KismetMathLibrary.cpp" />
|
||||||
<ClCompile Include="KismetStringLibrary.cpp" />
|
<ClCompile Include="KismetStringLibrary.cpp" />
|
||||||
|
<ClCompile Include="KismetTextLibrary.cpp" />
|
||||||
<ClCompile Include="Level.cpp" />
|
<ClCompile Include="Level.cpp" />
|
||||||
<ClCompile Include="LevelActor.cpp" />
|
<ClCompile Include="LevelActor.cpp" />
|
||||||
<ClCompile Include="NameTypes.cpp" />
|
<ClCompile Include="NameTypes.cpp" />
|
||||||
@@ -313,6 +314,7 @@
|
|||||||
<ClInclude Include="KismetMathLibrary.h" />
|
<ClInclude Include="KismetMathLibrary.h" />
|
||||||
<ClInclude Include="KismetStringLibrary.h" />
|
<ClInclude Include="KismetStringLibrary.h" />
|
||||||
<ClInclude Include="KismetSystemLibrary.h" />
|
<ClInclude Include="KismetSystemLibrary.h" />
|
||||||
|
<ClInclude Include="KismetTextLibrary.h" />
|
||||||
<ClInclude Include="Level.h" />
|
<ClInclude Include="Level.h" />
|
||||||
<ClInclude Include="log.h" />
|
<ClInclude Include="log.h" />
|
||||||
<ClInclude Include="Map.h" />
|
<ClInclude Include="Map.h" />
|
||||||
@@ -337,11 +339,13 @@
|
|||||||
<ClInclude Include="ScriptInterface.h" />
|
<ClInclude Include="ScriptInterface.h" />
|
||||||
<ClInclude Include="Set.h" />
|
<ClInclude Include="Set.h" />
|
||||||
<ClInclude Include="SharedPointer.h" />
|
<ClInclude Include="SharedPointer.h" />
|
||||||
|
<ClInclude Include="SharedPointerInternals.h" />
|
||||||
<ClInclude Include="SoftObjectPath.h" />
|
<ClInclude Include="SoftObjectPath.h" />
|
||||||
<ClInclude Include="SoftObjectPtr.h" />
|
<ClInclude Include="SoftObjectPtr.h" />
|
||||||
<ClInclude Include="SparseArray.h" />
|
<ClInclude Include="SparseArray.h" />
|
||||||
<ClInclude Include="Stack.h" />
|
<ClInclude Include="Stack.h" />
|
||||||
<ClInclude Include="StringAssetReference.h" />
|
<ClInclude Include="StringAssetReference.h" />
|
||||||
|
<ClInclude Include="Text.h" />
|
||||||
<ClInclude Include="Transform.h" />
|
<ClInclude Include="Transform.h" />
|
||||||
<ClInclude Include="Tuple.h" />
|
<ClInclude Include="Tuple.h" />
|
||||||
<ClInclude Include="UnrealMathUtility.h" />
|
<ClInclude Include="UnrealMathUtility.h" />
|
||||||
|
|||||||
@@ -185,6 +185,9 @@
|
|||||||
<ClCompile Include="FortGameplayAbilityAthena_PeriodicItemGrant.cpp">
|
<ClCompile Include="FortGameplayAbilityAthena_PeriodicItemGrant.cpp">
|
||||||
<Filter>FortniteGame\Source\FortniteGame\Private\Abilities</Filter>
|
<Filter>FortniteGame\Source\FortniteGame\Private\Abilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="KismetTextLibrary.cpp">
|
||||||
|
<Filter>Engine\Source\Runtime\Engine\Private</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="log.h" />
|
<ClInclude Include="log.h" />
|
||||||
@@ -557,6 +560,15 @@
|
|||||||
<ClInclude Include="DelegateBase.h">
|
<ClInclude Include="DelegateBase.h">
|
||||||
<Filter>Engine\Source\Runtime\Core\Public\Delegates</Filter>
|
<Filter>Engine\Source\Runtime\Core\Public\Delegates</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="Text.h">
|
||||||
|
<Filter>Engine\Source\Runtime\Core\Public\Internationalization</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="SharedPointerInternals.h">
|
||||||
|
<Filter>Engine\Source\Runtime\Core\Public\Templates</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="KismetTextLibrary.h">
|
||||||
|
<Filter>Engine\Source\Runtime\Engine\Classes\Kismet</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Filter Include="Engine">
|
<Filter Include="Engine">
|
||||||
@@ -754,6 +766,9 @@
|
|||||||
<Filter Include="Engine\Source\Runtime\Core\Public\Delegates">
|
<Filter Include="Engine\Source\Runtime\Core\Public\Delegates">
|
||||||
<UniqueIdentifier>{d01c7b5d-ef89-43ec-b94f-882c419aa74b}</UniqueIdentifier>
|
<UniqueIdentifier>{d01c7b5d-ef89-43ec-b94f-882c419aa74b}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Engine\Source\Runtime\Core\Public\Internationalization">
|
||||||
|
<UniqueIdentifier>{b00f4455-11e7-4fd9-aa6d-2d814788b544}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="UnrealEngine.cpp">
|
<None Include="UnrealEngine.cpp">
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "SharedPointerInternals.h"
|
||||||
|
|
||||||
template< class ObjectType>
|
template< class ObjectType>
|
||||||
class TSharedPtr
|
class TSharedPtr
|
||||||
{
|
{
|
||||||
@@ -34,3 +36,11 @@ public:
|
|||||||
return Object;
|
return Object;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template< class ObjectType, ESPMode Mode >
|
||||||
|
class TSharedRef
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ObjectType* Object;
|
||||||
|
FSharedReferencer<Mode> SharedReferenceCount;
|
||||||
|
};
|
||||||
47
Project Reboot 3.0/SharedPointerInternals.h
Normal file
47
Project Reboot 3.0/SharedPointerInternals.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef PLATFORM_CPU_ARM_FAMILY
|
||||||
|
#if (defined(__arm__) || defined(_M_ARM) || defined(__aarch64__) || defined(_M_ARM64))
|
||||||
|
#define PLATFORM_CPU_ARM_FAMILY 1
|
||||||
|
#else
|
||||||
|
#define PLATFORM_CPU_ARM_FAMILY 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#define PLATFORM_WEAKLY_CONSISTENT_MEMORY PLATFORM_CPU_ARM_FAMILY
|
||||||
|
#define FORCE_THREADSAFE_SHAREDPTRS PLATFORM_WEAKLY_CONSISTENT_MEMORY
|
||||||
|
|
||||||
|
enum class ESPMode
|
||||||
|
{
|
||||||
|
/** Forced to be not thread-safe. */
|
||||||
|
NotThreadSafe = 0,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fast, doesn't ever use atomic interlocks.
|
||||||
|
* Some code requires that all shared pointers are thread-safe.
|
||||||
|
* It's better to change it here, instead of replacing ESPMode::Fast to ESPMode::ThreadSafe throughout the code.
|
||||||
|
*/
|
||||||
|
Fast = FORCE_THREADSAFE_SHAREDPTRS ? 1 : 0,
|
||||||
|
|
||||||
|
/** Conditionally thread-safe, never spin locks, but slower */
|
||||||
|
ThreadSafe = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
class FReferenceControllerBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FORCEINLINE explicit FReferenceControllerBase()
|
||||||
|
: SharedReferenceCount(1)
|
||||||
|
, WeakReferenceCount(1)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int32 SharedReferenceCount;
|
||||||
|
int32 WeakReferenceCount;
|
||||||
|
};
|
||||||
|
|
||||||
|
template< ESPMode Mode >
|
||||||
|
class FSharedReferencer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FReferenceControllerBase* ReferenceController;
|
||||||
|
};
|
||||||
16
Project Reboot 3.0/Text.h
Normal file
16
Project Reboot 3.0/Text.h
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "SharedPointer.h"
|
||||||
|
#include "inc.h"
|
||||||
|
|
||||||
|
struct ITextData
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class FText
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TSharedRef<ITextData, ESPMode::ThreadSafe> TextData;
|
||||||
|
uint32 Flags;
|
||||||
|
};
|
||||||
@@ -163,7 +163,7 @@ extern inline FFixedUObjectArray* UnchunkedObjects = 0;
|
|||||||
|
|
||||||
FORCEINLINE UObject* GetObjectByIndex(int32 Index)
|
FORCEINLINE UObject* GetObjectByIndex(int32 Index)
|
||||||
{
|
{
|
||||||
return ChunkedObjects ? ChunkedObjects->GetObjectByIndex(Index) : UnchunkedObjects->GetObjectByIndex(Index);
|
return ChunkedObjects ? ChunkedObjects->GetObjectByIndex(Index) : UnchunkedObjects ? UnchunkedObjects->GetObjectByIndex(Index) : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCEINLINE FUObjectItem* GetItemByIndex(int32 Index)
|
FORCEINLINE FUObjectItem* GetItemByIndex(int32 Index)
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public:
|
|||||||
|
|
||||||
void Set(const wchar_t* NewStr) // by fischsalat
|
void Set(const wchar_t* NewStr) // by fischsalat
|
||||||
{
|
{
|
||||||
if (!NewStr || std::wcslen(NewStr) == 0) return;
|
if (!NewStr/* || std::wcslen(NewStr) == 0 */) return;
|
||||||
|
|
||||||
Data.ArrayMax = Data.ArrayNum = *NewStr ? (int)std::wcslen(NewStr) + 1 : 0;
|
Data.ArrayMax = Data.ArrayNum = *NewStr ? (int)std::wcslen(NewStr) + 1 : 0;
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,8 @@ static __int64 DispatchRequestHook(__int64 a1, __int64* a2, int a3)
|
|||||||
if (Engine_Version >= 423)
|
if (Engine_Version >= 423)
|
||||||
return DispatchRequestOriginal(a1, a2, 3);
|
return DispatchRequestOriginal(a1, a2, 3);
|
||||||
|
|
||||||
|
// LOG_INFO(LogDev, "Dispatch Request!");
|
||||||
|
|
||||||
static auto Offset = FindMcpIsDedicatedServerOffset();
|
static auto Offset = FindMcpIsDedicatedServerOffset();
|
||||||
|
|
||||||
*(int*)(__int64(a2) + Offset) = 3;
|
*(int*)(__int64(a2) + Offset) = 3;
|
||||||
@@ -523,7 +525,7 @@ DWORD WINAPI Main(LPVOID)
|
|||||||
AFortPlayerController::ServerAttemptAircraftJumpHook, nullptr, false);
|
AFortPlayerController::ServerAttemptAircraftJumpHook, nullptr, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (false)
|
// if (false)
|
||||||
{
|
{
|
||||||
if (Fortnite_Version >= 8.3) // I can't remember, so ServerAddMapMarker existed on like 8.0 or 8.1 or 8.2 but it didn't have the same params.
|
if (Fortnite_Version >= 8.3) // I can't remember, so ServerAddMapMarker existed on like 8.0 or 8.1 or 8.2 but it didn't have the same params.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -581,6 +581,9 @@ static inline uint64 FindNoMCP()
|
|||||||
if (std::floor(Fortnite_Version) == 4)
|
if (std::floor(Fortnite_Version) == 4)
|
||||||
return Memcury::Scanner::FindPattern("E8 ? ? ? ? 83 A7 ? ? ? ? ? 83 E0 01").RelativeOffset(1).Get();
|
return Memcury::Scanner::FindPattern("E8 ? ? ? ? 83 A7 ? ? ? ? ? 83 E0 01").RelativeOffset(1).Get();
|
||||||
|
|
||||||
|
if (std::floor(Fortnite_Version) == 5)
|
||||||
|
return Memcury::Scanner::FindPattern("E8 ? ? ? ? 84 C0 75 CE").RelativeOffset(1).Get();
|
||||||
|
|
||||||
auto fn = FindObject<UFunction>("/Script/FortniteGame.FortKismetLibrary.IsRunningNoMCP");
|
auto fn = FindObject<UFunction>("/Script/FortniteGame.FortKismetLibrary.IsRunningNoMCP");
|
||||||
LOG_INFO(LogDev, "fn: {}", __int64(fn));
|
LOG_INFO(LogDev, "fn: {}", __int64(fn));
|
||||||
|
|
||||||
@@ -979,7 +982,7 @@ static inline uint64 FindGIsClient()
|
|||||||
{
|
{
|
||||||
// if (Fortnite_Version == 2.5)
|
// if (Fortnite_Version == 2.5)
|
||||||
// return __int64(GetModuleHandleW(0)) + 0x46AD734;
|
// return __int64(GetModuleHandleW(0)) + 0x46AD734;
|
||||||
if (Fortnite_Version == 1.72)
|
/* if (Fortnite_Version == 1.72)
|
||||||
return __int64(GetModuleHandleW(0)) + 0x6536B65;
|
return __int64(GetModuleHandleW(0)) + 0x6536B65;
|
||||||
if (Fortnite_Version == 1.8)
|
if (Fortnite_Version == 1.8)
|
||||||
return __int64(GetModuleHandleW(0)) + 0x66637E5;
|
return __int64(GetModuleHandleW(0)) + 0x66637E5;
|
||||||
@@ -998,15 +1001,15 @@ static inline uint64 FindGIsClient()
|
|||||||
if (Fortnite_Version == 14.60)
|
if (Fortnite_Version == 14.60)
|
||||||
return __int64(GetModuleHandleW(0)) + 0x939930D;
|
return __int64(GetModuleHandleW(0)) + 0x939930D;
|
||||||
if (Fortnite_Version == 17.30)
|
if (Fortnite_Version == 17.30)
|
||||||
return __int64(GetModuleHandleW(0)) + 0x973E49B;
|
return __int64(GetModuleHandleW(0)) + 0x973E49B; */
|
||||||
|
|
||||||
return 0;
|
// return 0;
|
||||||
|
|
||||||
auto Addr = Memcury::Scanner::FindStringRef(L"AllowCommandletRendering");
|
auto Addr = Memcury::Scanner::FindStringRef(L"AllowCommandletRendering");
|
||||||
|
|
||||||
std::vector<std::vector<uint8_t>> BytesArray = { { 0xC6, 0x05 }, { 0x88, 0x1D } };
|
std::vector<std::vector<uint8_t>> BytesArray = {{0xC6, 0x05}, {0x88, 0x1D}, { 0x44, 0x88 } };
|
||||||
|
|
||||||
int Skip = 2;
|
int Skip = Engine_Version <= 420 ? 1 : 2;
|
||||||
|
|
||||||
uint64 Addy;
|
uint64 Addy;
|
||||||
|
|
||||||
@@ -1019,6 +1022,8 @@ static inline uint64 FindGIsClient()
|
|||||||
|
|
||||||
bool ShouldBreak = false;
|
bool ShouldBreak = false;
|
||||||
|
|
||||||
|
LOG_INFO(LogDev, "[{}] Byte: 0x{:x}", i, (int)CurrentByte);
|
||||||
|
|
||||||
for (auto& Bytes : BytesArray)
|
for (auto& Bytes : BytesArray)
|
||||||
{
|
{
|
||||||
if (CurrentByte == Bytes[0])
|
if (CurrentByte == Bytes[0])
|
||||||
@@ -1034,7 +1039,8 @@ static inline uint64 FindGIsClient()
|
|||||||
}
|
}
|
||||||
if (Found)
|
if (Found)
|
||||||
{
|
{
|
||||||
LOG_INFO(LogDev, "[{}] Skip: 0x{:x}", Skip, Memcury::Scanner(Addr.Get() - i).RelativeOffset(2).Get() - __int64(GetModuleHandleW(0)));
|
int Relative = Bytes[0] == 0x44 ? 3 : 2;
|
||||||
|
LOG_INFO(LogDev, "[{}] No Rel 0x{:x} Rel: 0x{:x}", Skip, Memcury::Scanner(Addr.Get() - i).Get() - __int64(GetModuleHandleW(0)), Memcury::Scanner(Addr.Get() - i).RelativeOffset(Relative).Get() - __int64(GetModuleHandleW(0)));
|
||||||
|
|
||||||
if (Skip > 0)
|
if (Skip > 0)
|
||||||
{
|
{
|
||||||
@@ -1042,7 +1048,7 @@ static inline uint64 FindGIsClient()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Addy = Addr.Get() - i;
|
Addy = Memcury::Scanner(Addr.Get() - i).RelativeOffset(Relative).Get();
|
||||||
ShouldBreak = true;
|
ShouldBreak = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1055,14 +1061,9 @@ static inline uint64 FindGIsClient()
|
|||||||
// std::cout << std::format("CurrentByte: 0x{:x}\n", (uint8_t)CurrentByte);
|
// std::cout << std::format("CurrentByte: 0x{:x}\n", (uint8_t)CurrentByte);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* int Skip = 2;
|
|
||||||
auto Addy = FindBytes(Addr, { 0xC6, 0x05 }, 50, 0, true, Skip);
|
|
||||||
Addy = Addy ? Addy : FindBytes(Addr, { 0x44, 0x88 }, 50, 0, true, Skip);
|
|
||||||
Addy = Addy ? Addy : FindBytes(Addr, { 0x88, 0x1D }, 50, 0, true, Skip); */
|
|
||||||
|
|
||||||
LOG_INFO(LogDev, "Addy: 0x{:x}", Addy - __int64(GetModuleHandleW(0)));
|
LOG_INFO(LogDev, "Addy: 0x{:x}", Addy - __int64(GetModuleHandleW(0)));
|
||||||
|
|
||||||
return Memcury::Scanner(Addy).RelativeOffset(2).Get();
|
return Addy; // 0; // Memcury::Scanner(Addy3).RelativeOffset(2).Get();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
auto Addr = Memcury::Scanner::FindStringRef(L"AllowCommandletRendering");
|
auto Addr = Memcury::Scanner::FindStringRef(L"AllowCommandletRendering");
|
||||||
|
|||||||
@@ -35,7 +35,14 @@ static inline T* LoadObject(const TCHAR* Name, UClass* Class = T::StaticClass(),
|
|||||||
return FindObject<T>(Name, Class, Outer);
|
return FindObject<T>(Name, Class, Outer);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (T*)StaticLoadObjectOriginal(Class, Outer, Name, nullptr, 0, nullptr, false);
|
auto Object = (T*)StaticLoadObjectOriginal(Class, Outer, Name, nullptr, 0, nullptr, false);
|
||||||
|
|
||||||
|
if (!Object)
|
||||||
|
{
|
||||||
|
LOG_WARN(LogDev, "Failed to load object!");
|
||||||
|
}
|
||||||
|
|
||||||
|
return Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T = UObject>
|
template <typename T = UObject>
|
||||||
|
|||||||
Reference in New Issue
Block a user