diff --git a/feature.cpp b/feature.cpp index 82459c3..33cf89c 100644 --- a/feature.cpp +++ b/feature.cpp @@ -531,6 +531,27 @@ void ForgeActor(SDK::AActor* pTarget, float mDistance, float mHeight, float mAng pTarget->K2_SetActorRotation(targetRotation, true); } +// credit: +void SendDamageToActor(APalCharacter* character, int32 damage, bool bSpoofAttacker) +{ + APalPlayerState* pPalPlayerState = Config.GetPalPlayerState(); + APalPlayerCharacter* pPalPlayerCharacter = Config.GetPalPlayerCharacter(); + if (!pPalPlayerState || !pPalPlayerCharacter) + return; + + FPalDamageInfo info = FPalDamageInfo(); + info.AttackElementType = EPalElementType::Normal; + info.Attacker = pPalPlayerCharacter; // @TODO: spoof attacker + info.AttackerGroupID = Config.GetPalPlayerState()->IndividualHandleId.PlayerUId; + info.AttackerLevel = 50; + info.AttackType = EPalAttackType::Weapon; + info.bApplyNativeDamageValue = true; + info.bAttackableToFriend = true; + info.IgnoreShield = true; + info.NativeDamageValue = damage; + pPalPlayerState->SendDamage_ToServer(character, info); +} + // credit: xCENTx void TeleportAllPalsToCrosshair(float mDistance) { diff --git a/feature.h b/feature.h index fefa0cb..6902d90 100644 --- a/feature.h +++ b/feature.h @@ -55,6 +55,8 @@ float GetDistanceToActor(SDK::AActor* pLocal, SDK::AActor* pTarget); void ForgeActor(SDK::AActor* pTarget, float mDistance, float mHeight = 0.0f, float mAngle = 0.0f); +void SendDamageToActor(SDK::APalCharacter* character, int32 damage, bool bSpoofAttacker = false); + void TeleportAllPalsToCrosshair(float mDistance); void AddWaypointLocation(std::string wpName); diff --git a/src/Menu.cpp b/src/Menu.cpp index 8b31213..3214850 100644 --- a/src/Menu.cpp +++ b/src/Menu.cpp @@ -15,20 +15,6 @@ std::string rand_str(const int len) } return str; } -void Damage(SDK::APalCharacter* character, int32 damage) -{ - SDK::FPalDamageInfo info = SDK::FPalDamageInfo(); - info.AttackElementType = SDK::EPalElementType::Normal; - info.Attacker = Config.GetPalPlayerCharacter(); - info.AttackerGroupID = Config.GetPalPlayerState()->IndividualHandleId.PlayerUId; - info.AttackerLevel = 50; - info.AttackType = SDK::EPalAttackType::Weapon; - info.bApplyNativeDamageValue = true; - info.bAttackableToFriend = true; - info.IgnoreShield = true; - info.NativeDamageValue = damage; - Config.GetPalPlayerState()->SendDamage_ToServer(character, info); -} int InputTextCallback(ImGuiInputTextCallbackData* data) { char inputChar = data->EventChar; @@ -547,7 +533,7 @@ namespace DX11_Base if (ImGui::Button("Kill")) { if (T[i]->IsA(SDK::APalCharacter::StaticClass())) - Damage(Character, 99999999999); + SendDamageToActor(Character, 99999999999); } ImGui::SameLine(); if (ImGui::Button("TP"))