diff --git a/feature.cpp b/feature.cpp index 571e3d7..2e11d07 100644 --- a/feature.cpp +++ b/feature.cpp @@ -311,6 +311,24 @@ void RespawnLocalPlayer(bool bIsSafe) bIsSafe ? pPalPlayerController->TeleportToSafePoint_ToServer() : pPalPlayerState->RequestRespawn(); } +void SetPlayerHealth(__int32 newHealth) +{ + APalPlayerCharacter* pPalPlayerCharacter = Config.GetPalPlayerCharacter(); + if (!pPalPlayerCharacter) + return; + + UPalCharacterParameterComponent* pParams = pPalPlayerCharacter->CharacterParameterComponent; + if (!pParams) + return; + + FFixedPoint64 maxHP = pParams->GetMaxHP(); + if (newHealth > maxHP.Value) + newHealth = maxHP.Value; + + FFixedPoint newHealthPoint = FFixedPoint(newHealth); + pPalPlayerCharacter->ReviveCharacter_ToServer(newHealthPoint); +} + // void ReviveLocalPlayer() { @@ -318,10 +336,16 @@ void ReviveLocalPlayer() if (!pPalPlayerCharacter) return; - FFixedPoint newHealthPoint = FFixedPoint(99999999); - if (Config.GetPalPlayerCharacter()->CharacterParameterComponent->IsDying()) - Config.GetPalPlayerCharacter()->CharacterParameterComponent->ReviveFromDying(); - pPalPlayerCharacter->ReviveCharacter_ToServer(newHealthPoint); + UPalCharacterParameterComponent* pParams = pPalPlayerCharacter->CharacterParameterComponent; + if (!pParams) + return; + + if (pParams->IsDying()) + pParams->ReviveFromDying(); + + FFixedPoint64 maxHP = pParams->GetMaxHP(); + FFixedPoint newHealth = FFixedPoint(maxHP.Value); + pPalPlayerCharacter->ReviveCharacter_ToServer(newHealth); } // diff --git a/feature.h b/feature.h index fdf8fa3..f48d474 100644 --- a/feature.h +++ b/feature.h @@ -29,6 +29,8 @@ void SetDemiGodMode(bool bIsSet); void RespawnLocalPlayer(bool bIsSafe); +void SetPlayerHealth(__int32 newHealth); + void ReviveLocalPlayer(); void ResetStamina(); diff --git a/src/Menu.cpp b/src/Menu.cpp index 20e5ed4..84e746a 100644 --- a/src/Menu.cpp +++ b/src/Menu.cpp @@ -72,7 +72,8 @@ namespace DX11_Base ImGui::Checkbox("InfStamina", &Config.IsInfStamina); - ImGui::Checkbox("InfAmmo", &Config.IsInfinAmmo); + if (ImGui::Checkbox("InfAmmo", &Config.IsInfinAmmo)) + SetInfiniteAmmo(Config.IsInfinAmmo); ImGui::Checkbox("Godmode", &Config.IsGodMode); @@ -782,23 +783,11 @@ namespace DX11_Base if (Config.IsDeathAura) DeathAura(Config.mDeathAuraAmount, Config.mDeathAuraDistance, true); + // // SetDemiGodMode(Config.IsMuteki); - if (Config.GetPalPlayerCharacter() != NULL) - { - if (Config.GetPalPlayerCharacter()->ShooterComponent != NULL && Config.GetPalPlayerCharacter()->ShooterComponent->GetHasWeapon() != NULL && Config.GetPalPlayerCharacter()->ShooterComponent->CanShoot()) - { - Config.GetPalPlayerCharacter()->ShooterComponent->GetHasWeapon()->IsRequiredBullet = !Config.IsInfinAmmo; - } - } if (Config.IsGodMode) - { - if (Config.GetPalPlayerCharacter() && Config.GetPalPlayerCharacter()->CharacterParameterComponent && Config.GetPalPlayerCharacter()->CharacterParameterComponent->IndividualParameter) - { - if (Config.GetPalPlayerCharacter()->CharacterParameterComponent->IndividualParameter->GetHP().Value < INT_MAX) - Config.GetPalPlayerCharacter()->ReviveCharacter_ToServer(SDK::FFixedPoint(INT_MAX)); - } - } + SetPlayerHealth(INT_MAX); } } \ No newline at end of file