fix bugs with picking up + lategame loot

This commit is contained in:
Milxnor
2023-04-20 19:36:49 -04:00
parent 0ed3615415
commit 5b930c7328
9 changed files with 58 additions and 25 deletions

View File

@@ -496,6 +496,7 @@ bool AFortGameModeAthena::Athena_ReadyToStartMatchHook(AFortGameModeAthena* Game
// return false;
Globals::AmountOfListens++;
Globals::bStartedListening = true;
}

View File

@@ -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<UClass>(L"/Script/FortniteGame.FortPickup");
static auto FortPickupAthenaClass = FindObject<UClass>(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<UFortWeaponItemDefinition>(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;
}

View File

@@ -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,

View File

@@ -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)

View File

@@ -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<AFortPlayerControllerAthena>(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';

View File

@@ -609,7 +609,7 @@
<Filter>Engine\Source\Runtime\Engine\Classes\Kismet</Filter>
</ClInclude>
<ClInclude Include="FortOctopusVehicle.h">
<Filter>FortniteGame\Source\FortniteGame\Public\Vehicles</Filter>
<Filter>FortniteGame\Source\FortniteGame\Public\Athena\Vehicle</Filter>
</ClInclude>
<ClInclude Include="IntroSort.h">
<Filter>Engine\Source\Runtime\Core\Public\Algo</Filter>
@@ -687,16 +687,16 @@
<Filter>Reboot\Public\GUI</Filter>
</ClInclude>
<ClInclude Include="FortWeaponRangedMountedCannon.h">
<Filter>FortniteGame\Source\FortniteGame\Public\Vehicles</Filter>
<Filter>FortniteGame\Source\FortniteGame\Public\Athena\Vehicle</Filter>
</ClInclude>
<ClInclude Include="FortMountedCannon.h">
<Filter>FortniteGame\Source\FortniteGame\Public\Vehicles</Filter>
<Filter>FortniteGame\Source\FortniteGame\Public\Athena\Vehicle</Filter>
</ClInclude>
<ClInclude Include="FortAthenaSKPushCannon.h">
<Filter>FortniteGame\Source\FortniteGame\Public\Vehicles</Filter>
<Filter>FortniteGame\Source\FortniteGame\Public\Athena\Vehicle</Filter>
</ClInclude>
<ClInclude Include="FortAthenaVehicle.h">
<Filter>FortniteGame\Source\FortniteGame\Public\Vehicles</Filter>
<Filter>FortniteGame\Source\FortniteGame\Public\Athena\Vehicle</Filter>
</ClInclude>
<ClInclude Include="MemoryOps.h">
<Filter>Engine\Source\Runtime\Core\Public\Templates</Filter>
@@ -904,9 +904,6 @@
<Filter Include="Engine\Source\Runtime\Core\Public\Internationalization">
<UniqueIdentifier>{b00f4455-11e7-4fd9-aa6d-2d814788b544}</UniqueIdentifier>
</Filter>
<Filter Include="FortniteGame\Source\FortniteGame\Public\Vehicles">
<UniqueIdentifier>{b1cc2ad4-6196-455c-bda7-d0a2e7be2e70}</UniqueIdentifier>
</Filter>
<Filter Include="FortniteGame\Source\FortniteGame\Private\Vehicles">
<UniqueIdentifier>{702a4ab1-e5e1-46e1-b8cd-2fab1c4fb48c}</UniqueIdentifier>
</Filter>
@@ -931,6 +928,12 @@
<Filter Include="FortniteGame\Source\FortniteGame\Public\Private\Gameplay">
<UniqueIdentifier>{52d438db-beaf-44be-bddd-9aeb07c2459f}</UniqueIdentifier>
</Filter>
<Filter Include="FortniteGame\Source\FortniteGame\Public\Athena">
<UniqueIdentifier>{af212a31-57d1-4345-a73f-cd28dc4ebd2f}</UniqueIdentifier>
</Filter>
<Filter Include="FortniteGame\Source\FortniteGame\Public\Athena\Vehicle">
<UniqueIdentifier>{b1cc2ad4-6196-455c-bda7-d0a2e7be2e70}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="UnrealEngine.cpp">

View File

@@ -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;

View File

@@ -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 =

View File

@@ -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<TArray<AActor*>>(AircraftsOffset);
while (Aircrafts->Num() <= 0)
while (GameState->GetPtr<TArray<AActor*>>(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<FVector>(NextCenterOffset); // SafeZoneLocations.at(4);
FVector LocationToStartAircraft = GameState->Get(SafeZoneIndicatorOffset)->Get<FVector>(NextNextCenterOffset); // SafeZoneLocations.at(4);
LocationToStartAircraft.Z += 10000;
for (int i = 0; i < Aircrafts->Num(); i++)
for (int i = 0; i < GameState->GetPtr<TArray<AActor*>>(AircraftsOffset)->Num(); i++)
{
Aircrafts->at(i)->TeleportTo(LocationToStartAircraft, FRotator());
GameState->GetPtr<TArray<AActor*>>(AircraftsOffset)->at(i)->TeleportTo(LocationToStartAircraft, FRotator());
static auto FlightInfoOffset = Aircrafts->at(i)->GetOffset("FlightInfo");
auto FlightInfo = Aircrafts->at(i)->GetPtr<FAircraftFlightInfo>(FlightInfoOffset);
static auto FlightInfoOffset = GameState->GetPtr<TArray<AActor*>>(AircraftsOffset)->at(i)->GetOffset("FlightInfo");
auto FlightInfo = GameState->GetPtr<TArray<AActor*>>(AircraftsOffset)->at(i)->GetPtr<FAircraftFlightInfo>(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