From 28b8b144ef78f5e18f5e942f4e9e08b1f4f633a3 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 27 Jun 2023 15:25:59 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 25 ++++++++++++++++++++----- server/gameserver/room.cc | 5 +++++ server/gameserver/room.h | 1 + 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 830b1c57..86ebd418 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -125,11 +125,26 @@ void Bullet::OnHit(std::set& objects) } } else { for (auto& target : objects) { - bool old_is_dead = target->IsDead(room); - TriggerHitBuff(target); - target->OnBulletHit(this); - if (target->IsDead(room) && !old_is_dead) { - OnKillTarget(target); + bool eat = false; + if (!trace_target_id && !reporter_list) { + if (mt::Param::s().bullet_through_wall_check) { + if (!room->BulletCanReach(born_pos.ToGlmVec3(), target->GetPos().ToGlmVec3())) { + eat = true; + } + if (sender.Get() && sender.Get()->IsPlayer()) { +#ifdef DEBUG + a8::XPrintf("eat %d xxxxxxxxxxxxxxxxxxxxxxxx\n", {eat}); +#endif + } + } + } + if (!eat) { + bool old_is_dead = target->IsDead(room); + TriggerHitBuff(target); + target->OnBulletHit(this); + if (target->IsDead(room) && !old_is_dead) { + OnKillTarget(target); + } } } } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 78366c14..055ec304 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -3492,3 +3492,8 @@ void Room::LockRoom() lock_room_ = true; lock_room_frameno_ = GetFrameNo(); } + +bool Room::BulletCanReach(const glm::vec3& start, const glm::vec3& end) +{ + +} diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 6de69b7f..d1b20a49 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -260,6 +260,7 @@ public: std::shared_ptr GetAirRaid() { return air_raid_; } std::shared_ptr GetBatchSync() { return batch_sync_; } void GMFastForward(); + bool BulletCanReach(const glm::vec3& start, const glm::vec3& end); private: void ShuaAndroid();