From 1bfdae9d7d01cae32bf04cf12a1caa106c2a2c29 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 14 Jul 2022 17:46:49 +0800 Subject: [PATCH] fix remove buff bug --- server/gameserver/creature.cc | 2 +- server/gameserver/frameevent.cc | 5 ++++- server/gameserver/frameevent.h | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index e56af8d8..540e4e32 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -695,7 +695,7 @@ void Creature::OnBuffRemove(Buff& buff) break; } if (!buff.meta->i->only_server()) { - room->frame_event.RemoveBuff(GetWeakPtrRef(), buff.meta->i->buff_id()); + room->frame_event.RemoveBuff(GetWeakPtrRef(), &buff); } } diff --git a/server/gameserver/frameevent.cc b/server/gameserver/frameevent.cc index 3dd70e6f..96deb742 100644 --- a/server/gameserver/frameevent.cc +++ b/server/gameserver/frameevent.cc @@ -310,13 +310,16 @@ void FrameEvent::AddBuff(CreatureWeakPtr& sender, Buff* buff) } } -void FrameEvent::RemoveBuff(CreatureWeakPtr& sender, int buff_id) +void FrameEvent::RemoveBuff(CreatureWeakPtr& sender, Buff* buff) { { cs::MFBuffChg chged_buff_pb; chged_buff_pb.set_obj_id(sender.Get()->GetUniId()); chged_buff_pb.set_chg(1); + buff->FillMFBuff(chged_buff_pb.mutable_buff()); + #if 0 chged_buff_pb.mutable_buff()->set_buff_id(buff_id); + #endif chged_buffs_.push_back(std::make_tuple(sender, chged_buff_pb)); } { diff --git a/server/gameserver/frameevent.h b/server/gameserver/frameevent.h index 54b0c75a..f8cf8b82 100644 --- a/server/gameserver/frameevent.h +++ b/server/gameserver/frameevent.h @@ -38,7 +38,7 @@ public: void AddHpChg(CreatureWeakPtr& sender); void AddWeaponAmmoChg(CreatureWeakPtr& sender); void AddBuff(CreatureWeakPtr& sender, Buff* buff); - void RemoveBuff(CreatureWeakPtr& sender, int buff_id); + void RemoveBuff(CreatureWeakPtr& sender, Buff* buff); void AddSkillCdChg(CreatureWeakPtr sender, int skill_id, int left_time); void AddSkillCurrTimesChg(CreatureWeakPtr sender, int skill_id, int curr_times); void AddItemChg(CreatureWeakPtr& sender, int item_id, int item_num);