diff --git a/Project Reboot 3.0/FortGameModeAthena.cpp b/Project Reboot 3.0/FortGameModeAthena.cpp index 8d8df64..0d82d94 100644 --- a/Project Reboot 3.0/FortGameModeAthena.cpp +++ b/Project Reboot 3.0/FortGameModeAthena.cpp @@ -496,6 +496,7 @@ bool AFortGameModeAthena::Athena_ReadyToStartMatchHook(AFortGameModeAthena* Game // return false; + Globals::AmountOfListens++; Globals::bStartedListening = true; } diff --git a/Project Reboot 3.0/FortPickup.cpp b/Project Reboot 3.0/FortPickup.cpp index ecf758f..2976363 100644 --- a/Project Reboot 3.0/FortPickup.cpp +++ b/Project Reboot 3.0/FortPickup.cpp @@ -20,7 +20,7 @@ void AFortPickup::TossPickup(FVector FinalLocation, AFortPawn* ItemOwner, int Ov AFortPickup* AFortPickup::SpawnPickup(FFortItemEntry* ItemEntry, FVector Location, EFortPickupSourceTypeFlag PickupSource, EFortPickupSpawnSource SpawnSource, - class AFortPawn* Pawn, UClass* OverrideClass, bool bToss) + class AFortPawn* Pawn, UClass* OverrideClass, bool bToss, int OverrideCount) { // static auto FortPickupClass = FindObject(L"/Script/FortniteGame.FortPickup"); static auto FortPickupAthenaClass = FindObject(L"/Script/FortniteGame.FortPickupAthena"); @@ -54,10 +54,11 @@ AFortPickup* AFortPickup::SpawnPickup(FFortItemEntry* ItemEntry, FVector Locatio else { PrimaryPickupItemEntry->GetItemDefinition() = ItemEntry->GetItemDefinition(); - PrimaryPickupItemEntry->GetCount() = ItemEntry->GetCount(); PrimaryPickupItemEntry->GetLoadedAmmo() = ItemEntry->GetLoadedAmmo(); } + PrimaryPickupItemEntry->GetCount() = OverrideCount == -1 ? ItemEntry->GetCount() : OverrideCount; + PrimaryPickupItemEntry->GetItemGuid() = OldGuid; // Pickup->OnRep_PrimaryPickupItemEntry(); @@ -88,6 +89,14 @@ AFortPickup* AFortPickup::SpawnPickup(FFortItemEntry* ItemEntry, FVector Locatio AFortPickup* AFortPickup::SpawnPickup(UFortItemDefinition* ItemDef, FVector Location, int Count, EFortPickupSourceTypeFlag PickupSource, EFortPickupSpawnSource SpawnSource, int LoadedAmmo, AFortPawn* Pawn, UClass* OverrideClass, bool bToss) { + if (LoadedAmmo == -1) + { + if (auto WeaponDef = Cast(ItemDef)) // bPreventDefaultPreload ? + LoadedAmmo = WeaponDef->GetClipSize(); + else + LoadedAmmo = 0; + } + auto ItemEntry = FFortItemEntry::MakeItemEntry(ItemDef, Count, LoadedAmmo); auto Pickup = SpawnPickup(ItemEntry, Location, PickupSource, SpawnSource, Pawn, OverrideClass, bToss); // VirtualFree(ItemEntry); @@ -236,7 +245,10 @@ char AFortPickup::CompletePickupAnimationHook(AFortPickup* Pickup) UFortWorldItemDefinition* ItemDefinitionToSpawn = PickupItemDefinition; int AmountToSpawn = cpyCount > PickupItemDefinition->GetMaxStackSize() ? PickupItemDefinition->GetMaxStackSize() : cpyCount; - SpawnPickup(ItemDefinitionToSpawn, PawnLoc, AmountToSpawn, EFortPickupSourceTypeFlag::Player, EFortPickupSpawnSource::Unset, -1, Pawn); + int LoadedAmmo = 0; + + // SpawnPickup(ItemDefinitionToSpawn, PawnLoc, AmountToSpawn, EFortPickupSourceTypeFlag::Player, EFortPickupSpawnSource::Unset, -1, Pawn); + SpawnPickup(PickupEntry, PawnLoc, EFortPickupSourceTypeFlag::Player, EFortPickupSpawnSource::Unset, Pawn, nullptr, true, AmountToSpawn); cpyCount -= AmountToSpawn; bForceOverflow = false; } diff --git a/Project Reboot 3.0/FortPickup.h b/Project Reboot 3.0/FortPickup.h index 910e680..983f8d7 100644 --- a/Project Reboot 3.0/FortPickup.h +++ b/Project Reboot 3.0/FortPickup.h @@ -89,7 +89,7 @@ public: static AFortPickup* SpawnPickup(FFortItemEntry* ItemEntry, FVector Location, EFortPickupSourceTypeFlag PickupSource = EFortPickupSourceTypeFlag::Other, EFortPickupSpawnSource SpawnSource = EFortPickupSpawnSource::Unset, - class AFortPawn* Pawn = nullptr, UClass* OverrideClass = nullptr, bool bToss = true); + class AFortPawn* Pawn = nullptr, UClass* OverrideClass = nullptr, bool bToss = true, int OverrideCount = -1); static AFortPickup* SpawnPickup(class UFortItemDefinition* ItemDef, FVector Location, int Count, EFortPickupSourceTypeFlag PickupSource = EFortPickupSourceTypeFlag::Other, EFortPickupSpawnSource SpawnSource = EFortPickupSpawnSource::Unset, diff --git a/Project Reboot 3.0/FortPlayerController.cpp b/Project Reboot 3.0/FortPlayerController.cpp index 0fed8cc..f2bbb33 100644 --- a/Project Reboot 3.0/FortPlayerController.cpp +++ b/Project Reboot 3.0/FortPlayerController.cpp @@ -20,6 +20,7 @@ #include "FortGadgetItemDefinition.h" #include "FortAbilitySet.h" #include "vendingmachine.h" +#include "KismetSystemLibrary.h" void AFortPlayerController::ClientReportDamagedResourceBuilding(ABuildingSMActor* BuildingSMActor, EFortResourceType PotentialResourceType, int PotentialResourceCount, bool bDestroyed, bool bJustHitWeakspot) { @@ -635,6 +636,16 @@ void AFortPlayerController::ServerAttemptAircraftJumpHook(AFortPlayerController* WorldInventory->Update(); } + + static int LastNum1 = 124; + + if (LastNum1 != AmountOfRestarts) + { + LastNum1 = AmountOfRestarts; + + UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"skipshrinksafezone", nullptr); + UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"skipshrinksafezone", nullptr); + } } void AFortPlayerController::ServerDropAllItemsHook(AFortPlayerController* PlayerController, UFortItemDefinition* IgnoreItemDef) diff --git a/Project Reboot 3.0/FortPlayerStateAthena.cpp b/Project Reboot 3.0/FortPlayerStateAthena.cpp index f8b441b..4b7841d 100644 --- a/Project Reboot 3.0/FortPlayerStateAthena.cpp +++ b/Project Reboot 3.0/FortPlayerStateAthena.cpp @@ -4,8 +4,10 @@ void AFortPlayerStateAthena::ServerSetInAircraftHook(UObject* Context, FFrame& Stack, void* Ret) { + /* LOG_INFO(LogDev, "bLateGame: {}", Globals::bLateGame) + if (Globals::bLateGame) - return ServerSetInAircraftOriginal(Context, Stack, Ret); + return ServerSetInAircraftOriginal(Context, Stack, Ret); */ auto PlayerState = (AFortPlayerStateAthena*)Context; auto PlayerController = Cast(PlayerState->GetOwner()); @@ -24,7 +26,7 @@ void AFortPlayerStateAthena::ServerSetInAircraftHook(UObject* Context, FFrame& S auto& ItemInstances = InventoryList.GetItemInstances(); - if (/* (bNewInAircraft && !PlayerController->IsInAircraft()) || */ /* (Globals::bLateGame ? bNewInAircraft : true)) && */ ItemInstances.Num()) + if (/* (bNewInAircraft && !PlayerController->IsInAircraft()) || */ /* (Globals::bLateGame ? bNewInAircraft : true)) && */ !Globals::bLateGame && ItemInstances.Num()) { // std::cout << "InventoryList.ItemInstances.Num(): " << InventoryList.ItemInstances.Num() << '\n'; diff --git a/Project Reboot 3.0/Project Reboot 3.0.vcxproj.filters b/Project Reboot 3.0/Project Reboot 3.0.vcxproj.filters index 366a032..4d1a152 100644 --- a/Project Reboot 3.0/Project Reboot 3.0.vcxproj.filters +++ b/Project Reboot 3.0/Project Reboot 3.0.vcxproj.filters @@ -609,7 +609,7 @@ Engine\Source\Runtime\Engine\Classes\Kismet - FortniteGame\Source\FortniteGame\Public\Vehicles + FortniteGame\Source\FortniteGame\Public\Athena\Vehicle Engine\Source\Runtime\Core\Public\Algo @@ -687,16 +687,16 @@ Reboot\Public\GUI - FortniteGame\Source\FortniteGame\Public\Vehicles + FortniteGame\Source\FortniteGame\Public\Athena\Vehicle - FortniteGame\Source\FortniteGame\Public\Vehicles + FortniteGame\Source\FortniteGame\Public\Athena\Vehicle - FortniteGame\Source\FortniteGame\Public\Vehicles + FortniteGame\Source\FortniteGame\Public\Athena\Vehicle - FortniteGame\Source\FortniteGame\Public\Vehicles + FortniteGame\Source\FortniteGame\Public\Athena\Vehicle Engine\Source\Runtime\Core\Public\Templates @@ -904,9 +904,6 @@ {b00f4455-11e7-4fd9-aa6d-2d814788b544} - - {b1cc2ad4-6196-455c-bda7-d0a2e7be2e70} - {702a4ab1-e5e1-46e1-b8cd-2fab1c4fb48c} @@ -931,6 +928,12 @@ {52d438db-beaf-44be-bddd-9aeb07c2459f} + + {af212a31-57d1-4345-a73f-cd28dc4ebd2f} + + + {b1cc2ad4-6196-455c-bda7-d0a2e7be2e70} + diff --git a/Project Reboot 3.0/events.h b/Project Reboot 3.0/events.h index 9732ffc..203b366 100644 --- a/Project Reboot 3.0/events.h +++ b/Project Reboot 3.0/events.h @@ -287,6 +287,11 @@ static inline bool HasEvent() return GetOurEvent().Version == Fortnite_Version; } +static inline bool RequiresEventPlaylist() +{ + return false; // todo +} + static inline UObject* GetEventScripting() { Event OurEvent; diff --git a/Project Reboot 3.0/globals.h b/Project Reboot 3.0/globals.h index 5085950..9deae63 100644 --- a/Project Reboot 3.0/globals.h +++ b/Project Reboot 3.0/globals.h @@ -17,6 +17,8 @@ namespace Globals extern inline bool bHitReadyToStartMatch = false; extern inline bool bInitializedPlaylist = false; extern inline bool bStartedListening = false; + + extern inline int AmountOfListens = 0; // TODO: Switch to this for LastNum } extern inline std::string PlaylistName = diff --git a/Project Reboot 3.0/gui.h b/Project Reboot 3.0/gui.h index 222dd82..cf8d2d6 100644 --- a/Project Reboot 3.0/gui.h +++ b/Project Reboot 3.0/gui.h @@ -384,7 +384,7 @@ void MainUI() if (ImGui::Button("Restart")) { - if (Engine_Version < 424) + if (true) // Engine_Version < 424) { FString LevelA = Engine_Version < 424 ? L"open Athena_Terrain" : Engine_Version >= 500 ? Engine_Version >= 501 @@ -453,23 +453,22 @@ void MainUI() Sleep(500); } - auto Aircrafts = GameState->GetPtr>(AircraftsOffset); - - while (Aircrafts->Num() <= 0) + while (GameState->GetPtr>(AircraftsOffset)->Num() <= 0) // hmm { Sleep(500); } + static auto NextNextCenterOffset = GameState->Get(SafeZoneIndicatorOffset)->GetOffset("NextNextCenter"); static auto NextCenterOffset = GameState->Get(SafeZoneIndicatorOffset)->GetOffset("NextCenter"); - FVector LocationToStartAircraft = GameState->Get(SafeZoneIndicatorOffset)->Get(NextCenterOffset); // SafeZoneLocations.at(4); + FVector LocationToStartAircraft = GameState->Get(SafeZoneIndicatorOffset)->Get(NextNextCenterOffset); // SafeZoneLocations.at(4); LocationToStartAircraft.Z += 10000; - for (int i = 0; i < Aircrafts->Num(); i++) + for (int i = 0; i < GameState->GetPtr>(AircraftsOffset)->Num(); i++) { - Aircrafts->at(i)->TeleportTo(LocationToStartAircraft, FRotator()); + GameState->GetPtr>(AircraftsOffset)->at(i)->TeleportTo(LocationToStartAircraft, FRotator()); - static auto FlightInfoOffset = Aircrafts->at(i)->GetOffset("FlightInfo"); - auto FlightInfo = Aircrafts->at(i)->GetPtr(FlightInfoOffset); + static auto FlightInfoOffset = GameState->GetPtr>(AircraftsOffset)->at(i)->GetOffset("FlightInfo"); + auto FlightInfo = GameState->GetPtr>(AircraftsOffset)->at(i)->GetPtr(FlightInfoOffset); FlightInfo->GetFlightSpeed() = 0; FlightInfo->GetFlightStartLocation() = LocationToStartAircraft; @@ -499,8 +498,6 @@ void MainUI() static auto bAircraftIsLockedOffset = GameState->GetOffset("bAircraftIsLocked"); static auto bAircraftIsLockedFieldMask = GetFieldMask(GameState->GetProperty("bAircraftIsLocked")); GameState->SetBitfieldValue(bAircraftIsLockedOffset, bAircraftIsLockedFieldMask, false); - - UKismetSystemLibrary::ExecuteConsoleCommand(GetWorld(), L"skipshrinksafezone", nullptr); } } else