diff --git a/server/gameserver/buff/turnover.cc b/server/gameserver/buff/turnover.cc index 6e42bf06..c46cc9a0 100644 --- a/server/gameserver/buff/turnover.cc +++ b/server/gameserver/buff/turnover.cc @@ -40,7 +40,16 @@ void TurnOverBuff::Activate() })); #endif App::Instance()->verify_set_pos = 1; +#ifdef CLIENT_PREDICTION_POS + glm::vec3 target_pos = *caster_.Get()->GetClientCurrPos() + caster_.Get()->context_dir * distance; + Position pos; + pos.FromGlmVec3(target_pos); + owner->SetPos(pos); + owner->SyncServerPos(2); + //owner->SpecDirMove(distance); +#else owner->ForwardMove(distance); +#endif App::Instance()->verify_set_pos = 0; owner->SetMoveDir(old_dir); if (phase->phase_param2.GetInt() == 1) { diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 3c76bbcf..82816e16 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1275,6 +1275,7 @@ void Player::_CMMove(f8::MsgHdr* hdr, const cs::CMMove& msg) } else { skill_dir = GlmHelper::ZERO; } + TypeConvert::FromPb(*current_pos_.get(), &msg.current_pos()); skill_distance = msg.skill_distance(); } else { use_skill = false; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 4ed91e91..64aef82a 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -2152,6 +2152,6 @@ message SMDelBattleHint //同步服务器坐标 message SMServerSyncPos { - optional int32 reason = 1; //0:移动拉回 其他:直接设置坐标 + optional int32 reason = 1; //0:移动拉回 2:翻滚 其他:直接设置坐标 optional MFVec3 pos = 2; //坐标 } \ No newline at end of file