diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index 7c0607d6..3a59ea03 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -426,7 +426,7 @@ void Car::DecHP(float dec_hp, int killer_id, const std::string killer_name, int GetUniId(), real_dmg_out, 0, - 0, + killer->GetUniId(), true); } else if (killer->IsHero() && killer->AsHero()->master.Get() && @@ -438,7 +438,7 @@ void Car::DecHP(float dec_hp, int killer_id, const std::string killer_name, int GetUniId(), real_dmg_out, 0, - 0, + killer->AsHero()->master.Get()->GetUniId(), true); } } diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index 71a7c0d3..5aa531d9 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -295,7 +295,7 @@ void Hero::DecHP(float dec_hp, int killer_id, const std::string killer_name, int GetUniId(), real_dmg_out, 0, - 0, + killer->GetUniId(), true); } else if (killer->IsHero() && killer->AsHero()->master.Get() && @@ -307,7 +307,7 @@ void Hero::DecHP(float dec_hp, int killer_id, const std::string killer_name, int GetUniId(), real_dmg_out, 0, - 0, + killer->AsHero()->master.Get()->GetUniId(), true); } } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index e1dbfb8e..d4e855dd 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -363,7 +363,7 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string killer_name, in } Creature* killer = room->GetCreatureByUniId(real_killer_id); if (killer && real_dmg_out > 0.999) { - if (killer->IsPlayer()) { + if (killer->IsHuman()) { room->frame_event.AddPropChgEx ( killer->GetWeakPtrRef(), @@ -371,20 +371,44 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string killer_name, in GetUniId(), real_dmg_out, 0, - 0, - true); - } else if (killer->IsHero() && - killer->AsHero()->master.Get() && - killer->AsHero()->master.Get()->IsPlayer()) { - room->frame_event.AddPropChgEx - ( - killer->AsHero()->master.Get()->GetWeakPtrRef(), - kPropDmgShow, - GetUniId(), - real_dmg_out, - 0, - 0, + killer->GetUniId(), true); + if (IsPlayer()) { + room->frame_event.AddPropChgEx + ( + GetWeakPtrRef(), + kPropDmgShow, + GetUniId(), + real_dmg_out, + 0, + killer->GetUniId(), + true); + } + } else if (killer->IsHero()) { + if (killer->AsHero()->master.Get() && + killer->AsHero()->master.Get()->IsPlayer()) { + room->frame_event.AddPropChgEx + ( + killer->AsHero()->master.Get()->GetWeakPtrRef(), + kPropDmgShow, + GetUniId(), + real_dmg_out, + 0, + killer->AsHero()->master.Get()->GetUniId(), + true); + } + if (IsPlayer()) { + room->frame_event.AddPropChgEx + ( + GetWeakPtrRef(), + kPropDmgShow, + GetUniId(), + real_dmg_out, + 0, + killer->AsHero()->master.Get() ? + killer->AsHero()->master.Get()->GetUniId() : killer->GetUniId(), + true); + } } } GetTrigger()->HpChg(); diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index b9f169b8..a68941d4 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -230,9 +230,10 @@ message MFVec3 property_type: 50 淘汰倒计时(只有在读取里才会发送) value: 倒计时(秒) property_type: 51 伤害数值 - property_subtype: 目标对象uniid + property_subtype: 受击方uniid value: 造成伤害 value2: 0: 普通伤害 1:暴击 + value3: 攻击方uniid */ message MFPropertyChg {