From 4ec90b2ed7668ac0e75d269e04bacab78e186d55 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 25 Aug 2022 14:35:42 +0800 Subject: [PATCH] 1 --- server/gameserver/hero.cc | 6 +++--- server/gameserver/pvedata.cc | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index 817702be..209cee2b 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -253,12 +253,12 @@ void Hero::DecHP(float dec_hp, int killer_id, const std::string& killer_name, in float old_health = GetHP(); float new_health = std::max(0.0f, GetHP() - dec_hp); SetHP(std::max(0.0f, new_health)); + if (new_health < old_health && room->IsPveRoom()) { + room->pve_data.AddDamageInfo(killer_id, GetUniId(), old_health - new_health); + } if (GetHP() <= 0.0001f && !IsDead(room)) { BeKill(killer_id, killer_name, weapon_id); } - if (new_health > old_health && room->IsPveRoom()) { - room->pve_data.AddDamageInfo(killer_id, GetUniId(), new_health - old_health); - } room->frame_event.AddHpChg(GetWeakPtrRef()); } diff --git a/server/gameserver/pvedata.cc b/server/gameserver/pvedata.cc index c654756b..69610470 100644 --- a/server/gameserver/pvedata.cc +++ b/server/gameserver/pvedata.cc @@ -13,6 +13,12 @@ void PveData::AddDamageInfo(int sender_id, int receiver_id, float dmg) damage_hash_[receiver_id] = std::map(); } itr = damage_hash_.find(receiver_id); + auto itr2 = itr->second.find(sender_id); + if (itr2 != itr->second.end()) { + itr2->second += dmg; + } else { + itr->second[sender_id] = dmg; + } } void PveData::OnBeKill(Hero* hero)