From 498f7350d98d658d1119457de7a93c3eec398eaa Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 29 Dec 2022 15:25:35 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/sprint.cc | 41 +++++++++++++++++--------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/server/gameserver/buff/sprint.cc b/server/gameserver/buff/sprint.cc index 9ee1cc1c..2093bc1c 100644 --- a/server/gameserver/buff/sprint.cc +++ b/server/gameserver/buff/sprint.cc @@ -92,34 +92,37 @@ void SprintBuff::CoCollisionCheck() void SprintBuff::Check(Position& pre_pos, std::map& hited_objects) { + if (pre_pos.ManhattanDistance2D(owner->GetPos()) < 2) { + pre_pos = owner->GetPos(); + return; + } + std::set enemys; Position old_pos = owner->GetPos(); - if (pre_pos.ManhattanDistance2D(owner->GetPos()) > 2) { - a8::Vec2 dir = owner->GetPos().CalcDir2D(pre_pos); - dir.Normalize(); - float distance = owner->GetPos().Distance2D2(pre_pos); - for (int i = 0; i < (distance + 6); i += 5) { - // 999 + a8::Vec2 dir = owner->GetPos().CalcDir2D(pre_pos); + dir.Normalize(); + float distance = owner->GetPos().Distance2D2(pre_pos); + for (int i = 0; i < (distance + 6); i += 5) { + // 999 #if 1 #else - owner->MutablePos.FromVec2((pre_pos) + (dir * i)); + owner->MutablePos.FromVec2((pre_pos) + (dir * i)); #endif - owner->GetHitEnemys(enemys, meta->_param4); - for (auto& enemy : enemys) { - if (enemy->IsEntityType(ET_Car)) { + owner->GetHitEnemys(enemys, meta->_param4); + for (auto& enemy : enemys) { + if (enemy->IsEntityType(ET_Car)) { + continue; + } + auto itr = hited_objects.find(enemy->GetUniId()); + if (itr != hited_objects.end()) { + if ((owner->room->GetFrameNo() - itr->second) * FRAME_RATE_MS < + meta->_int_param5) { continue; } - auto itr = hited_objects.find(enemy->GetUniId()); - if (itr != hited_objects.end()) { - if ((owner->room->GetFrameNo() - itr->second) * FRAME_RATE_MS < - meta->_int_param5) { - continue; - } - } - hited_objects[enemy->GetUniId()] = owner->room->GetFrameNo(); - OnEnemyHit(enemy); } + hited_objects[enemy->GetUniId()] = owner->room->GetFrameNo(); + OnEnemyHit(enemy); } }