From 16c743f12d370a6d87fb43360af422b0d8d987de Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 31 Jul 2024 15:13:59 +0800 Subject: [PATCH] 1 --- server/gameserver/boxdrop.cc | 8 ++++++++ server/gameserver/boxdrop.h | 1 + server/gameserver/obstacle.cc | 3 +++ 3 files changed, 12 insertions(+) diff --git a/server/gameserver/boxdrop.cc b/server/gameserver/boxdrop.cc index 77554620..c8261a8b 100644 --- a/server/gameserver/boxdrop.cc +++ b/server/gameserver/boxdrop.cc @@ -313,3 +313,11 @@ bool BoxDrop::GetNextBoxPos(glm::vec3& pos) } return false; } + +void BoxDrop::DropByUuid(int obj_uniid, const glm::vec3& center) +{ + int box_num = GetAndDecObjBoxNum(obj_uniid); + if (box_num > 0) { + Drop(box_num, center); + } +} diff --git a/server/gameserver/boxdrop.h b/server/gameserver/boxdrop.h index 10b9ab2f..5d0477a6 100644 --- a/server/gameserver/boxdrop.h +++ b/server/gameserver/boxdrop.h @@ -16,6 +16,7 @@ class BoxDrop : public std::enable_shared_from_this void OnObstacleDeadDrop(Obstacle* ob); void RequestReturnBoxNum(); bool GetNextBoxPos(glm::vec3& pos); + void DropByUuid(int obj_uniid, const glm::vec3& center); private: diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 60816fe3..de4a3239 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -318,6 +318,9 @@ bool Obstacle::DoInteraction(Human* sender) if (a8::TIMER_EXEC_EVENT == event) { #if 1 sender->DropItems(center, drops); + if (!empty(drops)) { + sender->room->GetBoxDrop()->DropByUuid(obj_uniid, center); + } #else Entity* entity = sender->room->GetEntityByUniId(obj_uniid); if (entity && entity->IsEntityType(ET_Obstacle)) {