mirror of
https://github.com/Milxnor/Project-Reboot-3.0.git
synced 2026-01-13 02:42:22 +01:00
blow up
This commit is contained in:
@@ -15,3 +15,9 @@ void AController::Possess(class APawn* Pawn)
|
||||
auto PossessFn = FindFunction("Possess");
|
||||
this->ProcessEvent(PossessFn, &Pawn);
|
||||
}
|
||||
|
||||
void AController::UnPossess()
|
||||
{
|
||||
auto UnPossessFn = FindFunction("UnPossess");
|
||||
this->ProcessEvent(UnPossessFn);
|
||||
}
|
||||
@@ -7,6 +7,7 @@ class AController : public AActor
|
||||
public:
|
||||
AActor* GetViewTarget();
|
||||
void Possess(class APawn* Pawn);
|
||||
void UnPossess();
|
||||
|
||||
FName& GetStateName()
|
||||
{
|
||||
|
||||
@@ -27,6 +27,8 @@ UFortWeaponItemDefinition* AFortAthenaVehicle::GetVehicleWeaponForSeat(int SeatI
|
||||
static auto WeaponSeatDefinitionsOffset = WeaponComponent->GetOffset("WeaponSeatDefinitions");
|
||||
auto& WeaponSeatDefinitions = WeaponComponent->Get<TArray<__int64>>(WeaponSeatDefinitionsOffset);
|
||||
|
||||
// VehicleWeaponDefinition = *(UFortWeaponItemDefinition**)(__int64(WeaponSeatDefinitions.at(SeatIdx)) + VehicleWeaponOffset);
|
||||
|
||||
for (int i = 0; i < WeaponSeatDefinitions.Num(); i++)
|
||||
{
|
||||
auto WeaponSeat = WeaponSeatDefinitions.AtPtr(i, WeaponSeatDefinitionStructSize);
|
||||
|
||||
@@ -65,6 +65,8 @@ static UFortPlaylistAthena* GetPlaylistToUse()
|
||||
if (Globals::bCreative)
|
||||
Playlist = FindObject<UFortPlaylistAthena>(L"/Game/Athena/Playlists/Creative/Playlist_PlaygroundV2.Playlist_PlaygroundV2");
|
||||
|
||||
// Playlist = FindObject<UFortPlaylistAthena>(L"/Game/Athena/Playlists/Respawn/Variants/Respawn_Vamp/Playlist_Respawn_Vamp_Solo.Playlist_Respawn_Vamp_Solo");
|
||||
|
||||
return Playlist;
|
||||
}
|
||||
|
||||
|
||||
@@ -499,54 +499,30 @@ void AFortPlayerController::ServerAttemptInteractHook(UObject* Context, FFrame*
|
||||
if (!WorldInventory)
|
||||
return;
|
||||
|
||||
auto NewAndModifiedInstances = WorldInventory->AddItem(VehicleWeaponDefinition, nullptr);
|
||||
auto NewAndModifiedInstances = WorldInventory->AddItem(VehicleWeaponDefinition, nullptr, 1, 9999);
|
||||
|
||||
auto NewVehicleInstance = NewAndModifiedInstances.first[0];
|
||||
|
||||
if (!NewVehicleInstance)
|
||||
return;
|
||||
|
||||
WorldInventory->Update();
|
||||
static auto FortItemEntrySize = FFortItemEntry::GetStructSize();
|
||||
|
||||
auto VehicleWeapon = Pawn->EquipWeaponDefinition(VehicleWeaponDefinition, NewVehicleInstance->GetItemEntry()->GetItemGuid());
|
||||
// PlayerController->ServerExecuteInventoryItemHook(PlayerController, newitem->GetItemEntry()->GetItemGuid());
|
||||
auto& ReplicatedEntries = WorldInventory->GetItemList().GetReplicatedEntries();
|
||||
|
||||
/* static auto GetSeatWeaponComponentFn = FindObject<UFunction>("/Script/FortniteGame.FortAthenaVehicle.GetSeatWeaponComponent");
|
||||
|
||||
if (GetSeatWeaponComponentFn)
|
||||
for (int i = 0; i < ReplicatedEntries.Num(); i++)
|
||||
{
|
||||
struct { int SeatIndex; UObject* ReturnValue; } AFortAthenaVehicle_GetSeatWeaponComponent_Params{};
|
||||
auto ReplicatedEntry = ReplicatedEntries.AtPtr(i, FortItemEntrySize);
|
||||
|
||||
Vehicle->ProcessEvent(GetSeatWeaponComponentFn, &AFortAthenaVehicle_GetSeatWeaponComponent_Params);
|
||||
|
||||
UObject* WeaponComponent = AFortAthenaVehicle_GetSeatWeaponComponent_Params.ReturnValue;
|
||||
|
||||
if (!WeaponComponent)
|
||||
return;
|
||||
|
||||
static auto WeaponSeatDefinitionStructSize = FindObject<UClass>("/Script/FortniteGame.WeaponSeatDefinition")->GetPropertiesSize();
|
||||
static auto VehicleWeaponOffset = FindOffsetStruct("/Script/FortniteGame.WeaponSeatDefinition", "VehicleWeapon");
|
||||
static auto SeatIndexOffset = FindOffsetStruct("/Script/FortniteGame.WeaponSeatDefinition", "SeatIndex");
|
||||
static auto WeaponSeatDefinitionsOffset = WeaponComponent->GetOffset("WeaponSeatDefinitions");
|
||||
auto& WeaponSeatDefinitions = WeaponComponent->Get<TArray<__int64>>(WeaponSeatDefinitionsOffset);
|
||||
|
||||
for (int i = 0; i < WeaponSeatDefinitions.Num(); ++i)
|
||||
if (ReplicatedEntry->GetItemGuid() == NewVehicleInstance->GetItemEntry()->GetItemGuid())
|
||||
{
|
||||
auto WeaponSeat = WeaponSeatDefinitions.AtPtr(i, WeaponSeatDefinitionStructSize);
|
||||
WorldInventory->GetItemList().MarkItemDirty(ReplicatedEntry);
|
||||
WorldInventory->GetItemList().MarkItemDirty(NewVehicleInstance->GetItemEntry());
|
||||
WorldInventory->HandleInventoryLocalUpdate();
|
||||
|
||||
if (*(int*)(__int64(WeaponSeat) + SeatIndexOffset) != Vehicle->FindSeatIndex(Pawn))
|
||||
continue;
|
||||
|
||||
auto VehicleGrantedWeaponItem = (TWeakObjectPtr<UFortItem>*)(__int64(WeaponSeat) + 0x20);
|
||||
|
||||
VehicleGrantedWeaponItem->ObjectIndex = NewVehicleInstance->InternalIndex;
|
||||
VehicleGrantedWeaponItem->ObjectSerialNumber = GetItemByIndex(NewVehicleInstance->InternalIndex)->SerialNumber;
|
||||
|
||||
static auto bWeaponEquippedOffset = WeaponComponent->GetOffset("bWeaponEquipped");
|
||||
WeaponComponent->Get<bool>(bWeaponEquippedOffset) = true;
|
||||
|
||||
break;
|
||||
PlayerController->ServerExecuteInventoryItemHook(PlayerController, NewVehicleInstance->GetItemEntry()->GetItemGuid());
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -776,7 +752,7 @@ void AFortPlayerController::ServerAttemptAircraftJumpHook(AFortPlayerController*
|
||||
{
|
||||
if (false)
|
||||
{
|
||||
// honestly idk why this doesnt work
|
||||
// honestly idk why this doesnt work ( ithink its suppsoed to be spectator)
|
||||
|
||||
auto NAME_Inactive = UKismetStringLibrary::Conv_StringToName(L"NAME_Inactive");
|
||||
|
||||
|
||||
@@ -334,6 +334,13 @@ void AFortPlayerControllerAthena::ServerRestartPlayerHook(AFortPlayerControllerA
|
||||
static auto ZoneServerRestartPlayer = __int64(FortPlayerControllerZoneDefault->VFTable[GetFunctionIdxOrPtr(ServerRestartPlayerFn) / 8]);
|
||||
static void (*ZoneServerRestartPlayerOriginal)(AFortPlayerController*) = decltype(ZoneServerRestartPlayerOriginal)(__int64(ZoneServerRestartPlayer));
|
||||
|
||||
// auto NAME_Spectating = UKismetStringLibrary::Conv_StringToName(L"NAME_Spectating");
|
||||
|
||||
// LOG_INFO(LogDev, "ISplayerwaiting: {}", Controller->IsPlayerWaiting());
|
||||
|
||||
// Controller->GetStateName() = NAME_Spectating;
|
||||
// Controller->SetPlayerIsWaiting(true);
|
||||
|
||||
LOG_INFO(LogDev, "ServerRestartPlayerHook Call 0x{:x} returning with 0x{:x}!", ZoneServerRestartPlayer - __int64(_ReturnAddress()), __int64(ZoneServerRestartPlayerOriginal) - __int64(GetModuleHandleW(0)));
|
||||
return ZoneServerRestartPlayerOriginal(Controller);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,13 @@ void APlayerController::SetPlayerIsWaiting(bool NewValue)
|
||||
this->SetBitfieldValue(bPlayerIsWaitingOffset, bPlayerIsWaitingFieldMask, NewValue);
|
||||
}
|
||||
|
||||
bool APlayerController::IsPlayerWaiting()
|
||||
{
|
||||
static auto bPlayerIsWaitingOffset = GetOffset("bPlayerIsWaiting");
|
||||
static auto bPlayerIsWaitingFieldMask = GetFieldMask(this->GetProperty("bPlayerIsWaiting"));
|
||||
return this->ReadBitfieldValue(bPlayerIsWaitingOffset, bPlayerIsWaitingFieldMask);
|
||||
}
|
||||
|
||||
UCheatManager*& APlayerController::SpawnCheatManager(UClass* CheatManagerClass)
|
||||
{
|
||||
GetCheatManager() = UGameplayStatics::SpawnObject<UCheatManager>(CheatManagerClass, this, true);
|
||||
|
||||
@@ -23,6 +23,7 @@ public:
|
||||
}
|
||||
|
||||
void SetPlayerIsWaiting(bool NewValue);
|
||||
bool IsPlayerWaiting();
|
||||
void ServerChangeName(FString& S);
|
||||
UCheatManager*& SpawnCheatManager(UClass* CheatManagerClass);
|
||||
FRotator GetControlRotation();
|
||||
|
||||
@@ -79,6 +79,7 @@ static ENetMode GetNetModeHook2() { return NetMode; }
|
||||
static bool ReturnTrueHook() { return true; }
|
||||
static bool ReturnFalseHook() { return false; }
|
||||
static int Return2Hook() { return 2; }
|
||||
static void EmptyHook() { return; }
|
||||
|
||||
static bool NoMCPHook() { return Globals::bNoMCP; }
|
||||
static void CollectGarbageHook() { return; }
|
||||
@@ -305,7 +306,7 @@ void ActivatePhaseAtIndexHook(UObject* SpecialEventScript, int Index)
|
||||
auto WorldInventory = CurrentController->GetWorldInventory();
|
||||
|
||||
bool bShouldUpdate = false;
|
||||
WorldInventory->AddItem(WID, &bShouldUpdate, 1);
|
||||
WorldInventory->AddItem(WID, &bShouldUpdate, 1, 9999);
|
||||
|
||||
if (bShouldUpdate)
|
||||
WorldInventory->Update();
|
||||
@@ -808,6 +809,8 @@ DWORD WINAPI Main(LPVOID)
|
||||
|
||||
if (Fortnite_Version == 17.30) // Rift Tour stuff
|
||||
{
|
||||
auto busCrash = Hooking::MinHook::Hook(Memcury::Scanner::FindPattern("48 89 5C 24 ? 48 89 6C 24 ? 56 57 41 54 41 56 41 57 48 83 EC 40 48 8B 59 28 45 33 E4").GetAs<PVOID>(), (PVOID)EmptyHook);
|
||||
|
||||
Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x3E07910), (PVOID)GetMeshNetworkNodeTypeHook, nullptr);
|
||||
Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x3DED158), (PVOID)ReturnTrueHook, nullptr); // 7FF7E556D158
|
||||
Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x3DECFC8), (PVOID)ReturnTrueHook, nullptr); // 7FF7E556CFC8
|
||||
|
||||
Reference in New Issue
Block a user