From 9912e197b78a158943c8037bc5560d26c3ab7bd8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 May 2023 13:37:06 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 26 +++++++++++++++++--------- server/gameserver/mt/Param.cc | 1 + server/gameserver/mt/Param.h | 2 ++ server/gameserver/player.cc | 3 +++ 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index e87983c0..f2cfb2de 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -2301,16 +2301,20 @@ void Creature::UpdateMove() if (GetMovement()->UpdatePosition()) { } else { if (!GetMovement()->IsFindPath()) { - GetMovement()->CalcTargetPos(mt::Param::s().move_step_len); - if (!GetMovement()->UpdatePosition()) { - if (IsPlayer()) { - if (HasBuffEffect(kBET_Sprint)) { - SprintBuff* buff = (SprintBuff*)GetBuffByEffectId(kBET_Sprint); - if (buff) { - buff->SprintEnd(); + if (room->GetGasData().GetGasMode() == GasInactive && + room->IsSandTableRoom()) { + } else { + GetMovement()->CalcTargetPos(mt::Param::s().move_step_len); + if (!GetMovement()->UpdatePosition()) { + if (IsPlayer()) { + if (HasBuffEffect(kBET_Sprint)) { + SprintBuff* buff = (SprintBuff*)GetBuffByEffectId(kBET_Sprint); + if (buff) { + buff->SprintEnd(); + } + } else { + ShortFindPath(); } - } else { - ShortFindPath(); } } } @@ -2961,6 +2965,10 @@ float Creature::GetSpeed() } */ + if (room->GetGasData().GetGasMode() == GasInactive && + room->IsSandTableRoom()) { + return mt::Param::s().sand_table_move_speed / SERVER_FRAME_RATE; + } if (HasBuffEffect(kBET_Jump)) { finaly_speed = GetHeroMeta()->jump_speed(); } else if (HasBuffEffect(kBET_Down)) { diff --git a/server/gameserver/mt/Param.cc b/server/gameserver/mt/Param.cc index 0a30e7ae..2503e70d 100644 --- a/server/gameserver/mt/Param.cc +++ b/server/gameserver/mt/Param.cc @@ -37,6 +37,7 @@ namespace mt s_.match_choose_time = GetIntParam("match_choose_time", 0); s_.match_lock_time = GetIntParam("match_lock_time", 0); s_.pickup_weapon_replace_type = GetIntParam("pickup_weapon_replace_type", 0); + s_.sand_table_move_speed = GetIntParam("sand_table_move_speed", 500); #if 1 s_.match_lock_time++; #endif diff --git a/server/gameserver/mt/Param.h b/server/gameserver/mt/Param.h index 6793cbe3..71bfef5e 100644 --- a/server/gameserver/mt/Param.h +++ b/server/gameserver/mt/Param.h @@ -99,6 +99,8 @@ namespace mt int box_open_delay = 0; int compose_mode = 1; + float sand_table_move_speed = 500; + }; static void StaticPostInit(); static const S& s() { return s_; }; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index fc9a8dc6..d7c5c535 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -172,6 +172,9 @@ void Player::InternalUpdate(int delta_time) if (!GlmHelper::IsEqual2D(*sand_table_target_pos, GetPos().ToGlmVec3())) { moving = true; moved_frames = 0; + } else { + moving = false; + GetMovement()->ClearPath(); } } else { moving = false;