From 9142edc8f7258d0af834c95b2f7e03169aa6d296 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 28 Apr 2020 15:29:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=98=E5=9C=BA=E6=8E=89?= =?UTF-8?q?=E8=90=BD=E4=BC=AA=E8=A3=85=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/human.cc | 8 +++++++- server/gameserver/human.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 2c63e81..321bb9c 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2811,6 +2811,10 @@ void Human::AddItem(int item_id, int item_num) if (room->frame_no > join_frameno) { room->frame_event.AddItemChg(this, item_id, items_[item_id]); + } else { + if (item_num <= 0) { + battling_items_.insert(item_id); + } } } @@ -2821,7 +2825,9 @@ void Human::DecItem(int item_id, int item_num) itr->second -= item_num; room->frame_event.AddItemChg(this, item_id, std::max(0, itr->second)); if (itr->second <= 0) { - items_.erase(itr); + if (battling_items_.find(item_id) == battling_items_.end()) { + items_.erase(itr); + } } } } diff --git a/server/gameserver/human.h b/server/gameserver/human.h index eef2f7e..c744f4f 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -312,6 +312,7 @@ private: long long last_sync_gas_frameno = 0; std::list buff_list_; std::map items_; + std::set battling_items_; std::array buff_effect_ = {}; std::array buff_attr_abs_ = {};