diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index ff1ca0e..3be5176 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -347,6 +347,35 @@ void Buff::ProcSprint() owner->SetMoveDir(owner->context_dir); owner->SetAttackDir(owner->context_dir); owner->SetDisableMoveDirTimes(old_times); +#ifdef DEBUG1 + { + owner->SendDebugMsg(a8::Format("xxxxxxxx move_dir:%d,%d attack_dir:%d,%d", + { + owner->GetMoveDir().x, + owner->GetMoveDir().y, + owner->GetAttackDir().x, + owner->GetAttackDir().y, + })); + owner->room->xtimer.AddRepeatTimerAndAttach + ( + 2, + a8::XParams() + .SetSender(owner), + [] (const a8::XParams& param) + { + Human* hum = (Human*)param.sender.GetUserData(); + hum->SendDebugMsg(a8::Format("xxxxxxxx move_dir:%d,%d attack_dir:%d,%d", + { + hum->GetMoveDir().x, + hum->GetMoveDir().y, + hum->GetAttackDir().x, + hum->GetAttackDir().y, + })); + }, + &xtimer_attacher.timer_list_ + ); + } +#endif } Player* hum = (Player*)caster_.Get(); std::set* hited_objects = new std::set; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 464f1e4..6e3912b 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -693,12 +693,14 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg) } } if (can_set) { - a8::Vec2 attack_dir; - TypeConvert::FromPb(attack_dir, &msg.attack_dir()); - attack_dir.Normalize(); - SetAttackDir(attack_dir); - if (GetCar() && GetCar()->IsDriver(this)) { - GetCar()->SetAttackDir(GetAttackDir()); + if (GetDisableMoveDirTimes() <= 0) { + a8::Vec2 attack_dir; + TypeConvert::FromPb(attack_dir, &msg.attack_dir()); + attack_dir.Normalize(); + SetAttackDir(attack_dir); + if (GetCar() && GetCar()->IsDriver(this)) { + GetCar()->SetAttackDir(GetAttackDir()); + } } } }