From 2abae9c0f3ab3ca204bff4db107c712fb7237067 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 30 Jul 2024 11:38:55 +0800 Subject: [PATCH] 1 --- server/gameserver/obstacle.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 60ae43f7..d004b791 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -494,5 +494,24 @@ void Obstacle::SetRotate(float rotate) void Obstacle::DoTreasureBoxInteraction(Human* sender) { - + if (!IsDead(sender->room)) { + Die(sender->room); + BroadcastFullState(sender->room); + sender->room->xtimer.SetTimeoutEx + (meta->delay_destroy() / FRAME_RATE_MS, + [sender, obj_uniid = GetUniId()] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + Entity* entity = sender->room->GetEntityByUniId(obj_uniid); + if (entity && entity->IsEntityType(ET_Obstacle)) { + Obstacle* ob = (Obstacle*)entity; + if (ob->IsRoomObstacle()) { + sender->room->RemoveObjectLater((RoomObstacle*)entity); + } + } + return; + } + }, + &sender->xtimer_attacher); + } }