From 72af10dc5f1b8cebb2bf48f9024bd392bd89f2d0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 15 Dec 2023 11:16:32 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 12 ++++++++++++ server/gameserver/bullet.h | 2 ++ server/gameserver/player.cc | 8 +++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 61c77841..ecd49bef 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -47,6 +47,11 @@ Bullet::Bullet():MoveableEntity() Bullet::~Bullet() { --PerfMonitor::Instance()->entity_num[ET_Bullet]; + if (IsFlyHook()) { + if (sender.Get()) { + sender.Get()->hook_hash.erase(GetUniId()); + } + } } void Bullet::Initialize() @@ -69,6 +74,7 @@ void Bullet::Initialize() } if (sender.Get()) { sender.Get()->GetTrigger()->FlyHookCreate(this); + sender.Get()->hook_hash[GetUniId()] = GetUniId(); } Raycast(); } @@ -1138,3 +1144,9 @@ bool Bullet::NoAdjustPos() } return false; } + + +void Bullet::ReportHookHitPos(const glm::vec3& hit_pos) +{ + +} diff --git a/server/gameserver/bullet.h b/server/gameserver/bullet.h index 61a47b87..2f40c389 100644 --- a/server/gameserver/bullet.h +++ b/server/gameserver/bullet.h @@ -62,6 +62,8 @@ class Bullet : public MoveableEntity, public IBullet virtual const Position& GetPos() override; virtual void ProcRequestBulletDmg(int shield_hit, int strength_wall_uniid, int target_uniid, const glm::vec3& pos) override; + void ReportHookHitPos(const glm::vec3& hit_pos); + protected: Bullet(); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 6abbbd45..99b97c86 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1808,7 +1808,13 @@ void Player::_CMGetSettlementTeamList(f8::MsgHdr* hdr, const cs::CMGetSettlement void Player::_CMReportHookHitPos(f8::MsgHdr* hdr, const cs::CMReportHookHitPos& msg) { - + Entity* e = room->GetEntityByUniId(msg.bullet_uniid()); + if (e && e->GetEntityType() == ET_Bullet) { + Bullet* b = (Bullet*)e; + glm::vec3 hit_pos; + TypeConvert::FromPb(hit_pos, &msg.pos()); + b->ReportHookHitPos(hit_pos); + } } void Player::SetShotHold(bool hold)