From 4ad43ff7dad20114af10c8e974e3ee2ef9c28b6b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 1 Mar 2023 12:23:44 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/sprint.cc | 14 ++++++++++++++ server/gameserver/buff/sprint.h | 1 + server/gameserver/movement.cc | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/server/gameserver/buff/sprint.cc b/server/gameserver/buff/sprint.cc index 8913ba90..390cf7bd 100644 --- a/server/gameserver/buff/sprint.cc +++ b/server/gameserver/buff/sprint.cc @@ -105,8 +105,22 @@ void SprintBuff::CoCollisionCheck() void SprintBuff::Check(Position& pre_pos, std::map& hited_objects) { if (pre_pos.ManhattanDistance2D(owner->GetPos()) < 2) { + ++stop_times_; + if (stop_times_ > 3) { + owner->room->xtimer.SetTimeoutEx + ( + 1, + [this] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + owner->RemoveBuffByUniId(buff_uniid); + } + }, + &xtimer_attacher); + } return; } + stop_times_ = 0; glm::vec3 dir = owner->GetPos().ToGlmVec3() - pre_pos.ToGlmVec3(); dir.y = 0.0f; diff --git a/server/gameserver/buff/sprint.h b/server/gameserver/buff/sprint.h index c16cf4a6..01e9b084 100644 --- a/server/gameserver/buff/sprint.h +++ b/server/gameserver/buff/sprint.h @@ -16,4 +16,5 @@ class SprintBuff : public Buff void OnEnemyHit(Creature* enemy); void ProcSkill(); + int stop_times_ = 0; }; diff --git a/server/gameserver/movement.cc b/server/gameserver/movement.cc index 770455f3..0ffcc2e1 100644 --- a/server/gameserver/movement.cc +++ b/server/gameserver/movement.cc @@ -110,7 +110,7 @@ void Movement::CalcTargetPos(float distance) point.tar_pos.GetZ() < 0) { abort(); } -#ifdef DEBUG +#ifdef DEBUG1 if (owner_->IsPlayer()) { a8::XPrintf("CalcTargetPos src_pos:%f,%f,%f tar_pos:%f,%f,%f is_hit:%d start:%f,%f,%f end:%f,%f,%f distance:%f src_distance:%f\n", {