Implement CMSG_MOVE_TIME_SKIPPED packet!

NOTE: This is a WIP, Research still needed but this will sync the player's movement to the server's time by doing a "Skip/Jump" in the time.

This may show symptoms of a freeze, eventually smoothing out.

A sync may trigger with high latency.
This commit is contained in:
jaxx56 2016-04-12 23:10:28 -05:00
parent a3dfe7b4fc
commit 5e2d880c37
2 changed files with 9 additions and 23 deletions

View File

@ -890,29 +890,6 @@ void WorldSession::HandleNextCinematicCamera(WorldPacket& /*recv_data*/)
DEBUG_LOG("WORLD: Received opcode CMSG_NEXT_CINEMATIC_CAMERA");
}
void WorldSession::HandleMoveTimeSkippedOpcode(WorldPacket& recv_data)
{
/* WorldSession::Update( WorldTimer::getMSTime() );*/
DEBUG_LOG("WORLD: Received opcode CMSG_MOVE_TIME_SKIPPED");
recv_data >> Unused<uint64>();
recv_data >> Unused<uint32>();
/*
ObjectGuid guid;
uint32 time_skipped;
recv_data >> guid;
recv_data >> time_skipped;
DEBUG_LOG("WORLD: Received opcode CMSG_MOVE_TIME_SKIPPED");
/// TODO
must be need use in mangos
We substract server Lags to move time ( AntiLags )
for exmaple
GetPlayer()->ModifyLastMoveTime( -int32(time_skipped) );
*/
}
void WorldSession::HandleFeatherFallAck(WorldPacket& recv_data)
{
DEBUG_LOG("WORLD: Received opcode CMSG_MOVE_FEATHER_FALL_ACK");

View File

@ -496,6 +496,15 @@ void WorldSession::HandleSummonResponseOpcode(WorldPacket& recv_data)
_player->SummonIfPossible(true);
}
void WorldSession::HandleMoveTimeSkippedOpcode(WorldPacket& recv_data)
{
ObjectGuid guid;
uint32 time_skipped;
recv_data >> guid;
recv_data >> time_skipped;
DEBUG_LOG("WORLD: Received opcode CMSG_MOVE_TIME_SKIPPED, guid: %u, time_skipped: %u", guid, time_skipped);
}
bool WorldSession::VerifyMovementInfo(MovementInfo const& movementInfo, ObjectGuid const& guid) const
{
// ignore wrong guid (player attempt cheating own session for not own guid possible...)