#include "FortWeapon.h" #include "FortPlayerPawn.h" #include "reboot.h" #include "FortPlayerController.h" void AFortWeapon::ServerReleaseWeaponAbilityHook(UObject* Context, FFrame* Stack, void* Ret) { // I don't know where to put this.. auto Weapon = (AFortWeapon*)Context; auto Pawn = Cast(Weapon->GetOwner()); // LOG_INFO(LogDev, "Owner: {}", Weapon->GetOwner() ? Weapon->GetOwner()->GetFullName() : "InvalidObject"); if (!Pawn) return ServerReleaseWeaponAbilityOriginal(Context, Stack, Ret); auto Controller = Cast(Pawn->GetController()); auto CurrentWeapon = Weapon; // Pawn->GetCurrentWeapon(); auto WorldInventory = Controller ? Controller->GetWorldInventory() : nullptr; if (!WorldInventory || !CurrentWeapon) return ServerReleaseWeaponAbilityOriginal(Context, Stack, Ret); static auto AmmoCountOffset = CurrentWeapon->GetOffset("AmmoCount"); auto AmmoCount = CurrentWeapon->Get(AmmoCountOffset); WorldInventory->CorrectLoadedAmmo(CurrentWeapon->GetItemEntryGuid(), AmmoCount); return ServerReleaseWeaponAbilityOriginal(Context, Stack, Ret); } UClass* AFortWeapon::StaticClass() { static auto Class = FindObject(L"/Script/FortniteGame.FortWeapon"); return Class; }