From 4b1ec487019e73d0f70b90f9cb9ee9b4995e0ced Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 2 Apr 2023 12:02:15 +0800 Subject: [PATCH] 1 --- server/gameserver/buff.cc | 3 ++- server/gameserver/frameevent.cc | 8 +++++++- server/gameserver/frameevent.h | 3 ++- server/gameserver/player.cc | 4 ++-- server/gameserver/shot.cc | 15 +++------------ 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 05e17734..e58eb5c9 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -323,7 +323,8 @@ void Buff::ProcSputteringFunc(Bullet* bullet) bullet_dir, 0, 0, - 0); + 0, + nullptr); VirtualBullet* p = new VirtualBullet(); p->bullet_uniid = bullet_uniid; p->weapon_uniid = bullet->weapon_uniid; diff --git a/server/gameserver/frameevent.cc b/server/gameserver/frameevent.cc index cf304732..ae0094a0 100644 --- a/server/gameserver/frameevent.cc +++ b/server/gameserver/frameevent.cc @@ -89,7 +89,8 @@ void FrameEvent::AddBullet(int bullet_uniid, const glm::vec3& dir, float fly_distance, int trace_target_id, - int hand) + int hand, + std::shared_ptr> reporter_list) { { auto& tuple = a8::FastAppend(room->frame_event_data->bullets_); @@ -108,6 +109,11 @@ void FrameEvent::AddBullet(int bullet_uniid, p.set_trace_target_uniid(trace_target_id); } p.set_hand(hand); + if (reporter_list) { + for (int reporter : *reporter_list.get()) { + p.add_reporter_list(reporter); + } + } } { int bullet_idx = room->frame_event_data->bullets_.size() - 1; diff --git a/server/gameserver/frameevent.h b/server/gameserver/frameevent.h index 12bdb5a9..ffda6485 100644 --- a/server/gameserver/frameevent.h +++ b/server/gameserver/frameevent.h @@ -25,7 +25,8 @@ public: const glm::vec3& dir, float fly_distance, int trace_target_id, - int hand); + int hand, + std::shared_ptr> reporter_list); void RemoveBullet(glm::vec3 pos, int bullet_uniid); void AddExplosion(Bullet* bullet, int item_id, Position bomb_pos); void AddSmoke(Bullet* bullet, int item_id, glm::vec3 pos, float time_addition); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 5ba0c108..d194e286 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1603,8 +1603,8 @@ void Player::UpdateThrowBomb() bomb_dir, throw_bomb->fly_distance(), 0, - 1 - ); + 1, + nullptr); pending_throw_bomb[throw_uniid] = throw_bomb; room->xtimer.SetTimeoutEx ( diff --git a/server/gameserver/shot.cc b/server/gameserver/shot.cc index 7cfd38cb..3c4725d7 100644 --- a/server/gameserver/shot.cc +++ b/server/gameserver/shot.cc @@ -216,7 +216,7 @@ static void InternalCreateBullet(BulletInfo& bullet_info) bullet_info.keep_shot_animi_timer_ptr, bullet_info.shot_animi_time, bullet_info.weapon_buff_id, - nullptr); + bullet_info.reporter_list); #ifdef DEBUG1 if (bullet_info.c.Get()->IsPlayer()) { bullet_info.c.Get()->SendDebugMsg(a8::Format("CreateBullet id:%d", @@ -247,16 +247,6 @@ static void InternalCreateBullet(BulletInfo& bullet_info) } #endif -#ifdef DEBUG1 - DebugCmd::CreateSphere(c, - glm::vec3( - bullet_info.bullet_born_pos.x, - bullet_info.bullet_born_pos.y, - bullet_info.bullet_born_pos.z), - glm::vec3(1, 1, 1), - c->room->AllocUniid()); -#endif - c->room->frame_event.AddBullet (bullet_uniid, c->GetWeakPtrRef(), @@ -266,7 +256,8 @@ static void InternalCreateBullet(BulletInfo& bullet_info) bullet_info.bullet_dir, bullet_info.fly_distance, bullet_info.trace_target_uniid, - bullet_info.hand); + bullet_info.hand, + bullet_info.reporter_list); if (bullet_uniid && (bullet_info.trace_target_uniid || bullet_info.reporter_list)) { c->room->AddReportBullet( bullet_uniid