From 8d63f2dee88e79e2283d57f52f4fe157f2c9db76 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 2 Dec 2022 10:35:26 +0800 Subject: [PATCH] 1 --- server/gameserver/buff.cc | 2 ++ server/gameserver/movehelper.cc | 11 ++++++++++- server/gameserver/shot.cc | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 56c7a90f..f1ca2891 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -618,7 +618,9 @@ void Buff::ProcTurnOver() } } #endif + Global::Instance()->verify_set_pos = 1; owner->_UpdateMove(distance); + Global::Instance()->verify_set_pos = 0; owner->SetMoveDir(old_dir); if (phase->param2.GetInt() == 1) { ++owner->turn_over_times; diff --git a/server/gameserver/movehelper.cc b/server/gameserver/movehelper.cc index 727fede8..1ae651b3 100644 --- a/server/gameserver/movehelper.cc +++ b/server/gameserver/movehelper.cc @@ -28,19 +28,26 @@ bool MoveHelper::GetMovePosition(glm::vec3& out_pos) if (path_index_ < paths_.size()) { a8::Vec2 src_pos; a8::Vec2 tar_pos; + a8::Vec2 curr_pos; a8::Vec2 dir; auto& point = paths_[path_index_]; src_pos.x = point->src_pos.x; src_pos.y = point->src_pos.z; + curr_pos.x = point->curr_pos.x; + curr_pos.y = point->curr_pos.z; + tar_pos.x = point->tar_pos.x; tar_pos.y = point->tar_pos.z; dir.x = point->dir.x; dir.y = point->dir.z; - owner_->SetPos(src_pos + dir * owner_->GetSpeed() * 1); + curr_pos = (curr_pos + dir * owner_->GetSpeed() * 1); + point->curr_pos.x = curr_pos.x; + point->curr_pos.z = curr_pos.y; + owner_->SetPos(curr_pos); if (owner_->GetPos().Distance(src_pos) - point->distance >= 0.0001f) { owner_->SetPos(tar_pos); ++path_index_; @@ -116,6 +123,8 @@ void MoveHelper::CalcTargetPos(float distance) point->distance = v2.Distance(owner_->GetPos()); point->src_pos.x = owner_->GetPos().x; point->src_pos.z = owner_->GetPos().y; + point->curr_pos.x = owner_->GetPos().x; + point->curr_pos.z = owner_->GetPos().y; point->frameno = owner_->room->GetFrameNo() - 1; if (point->tar_pos.x < 0 || diff --git a/server/gameserver/shot.cc b/server/gameserver/shot.cc index 18bd8ea9..2f59448d 100644 --- a/server/gameserver/shot.cc +++ b/server/gameserver/shot.cc @@ -503,9 +503,11 @@ void InternalShot(Creature* c, } } c->GetTrigger()->Shot(weapon_meta); + #if 0 if (weapon_meta->i->recoil_force() > 0.000001) { c->DoRecoilForce(weapon_meta->i->recoil_force()); } + #endif if (c->HasBuffEffect(kBET_Hide)) { c->RemoveBuffByEffectId(kBET_Hide); }