From 2e428dbb1b5ec66eba16db9dc4ce009ecb811fcb Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 9 Sep 2024 14:23:45 +0800 Subject: [PATCH] 1 --- server/gameserver/player.cc | 16 ++++++++++++++++ server/gameserver/player.h | 1 + 2 files changed, 17 insertions(+) diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index dd7f098e..f2fbd1f1 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1023,6 +1023,15 @@ void Player::_CMMove(f8::MsgHdr* hdr, const cs::CMMove& msg) ){ glm::vec3 tmp_pos; TypeConvert::FromPb(tmp_pos, &msg.move_target_pos()); + if (GetPos().Distance2D2(tmp_pos) < 200) { + if (!GetMovement()->MoveToPos(tmp_pos)) { + Pullback(); + } else { + move_target_pos_ = tmp_pos; + } + } else { + Pullback(); + } } } else { ((cs::CMMove*)&msg)->clear_move_dir(); @@ -1998,3 +2007,10 @@ void Player::SetShotHold(bool hold) } shot_hold = hold; } + +void Player::Pullback() +{ + cs::SMPullback msg; + TypeConvert::ToPb(GetPos().ToGlmVec3(), msg.mutable_pos()); + SendNotifyMsg(msg); +} diff --git a/server/gameserver/player.h b/server/gameserver/player.h index 732a3979..f3cb6702 100644 --- a/server/gameserver/player.h +++ b/server/gameserver/player.h @@ -151,6 +151,7 @@ class Player : public Human void _CMMobaBattleData(f8::MsgHdr* hdr, const cs::CMMobaBattleData& msg); virtual void SetAttackDir(const glm::vec3& attack_dir) override; void AsyncRequestWatchWar(bool send_rsp_msg); + void Pullback(); protected: Player();