Skip to content
This repository has been archived by the owner on Feb 29, 2024. It is now read-only.

Commit

Permalink
Add CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK and structure
Browse files Browse the repository at this point in the history
Signed-off-by: AlterEgo <[email protected]>
  • Loading branch information
SkyFire committed Dec 5, 2023
1 parent 472f5a6 commit a5cf23d
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 1 deletion.
18 changes: 18 additions & 0 deletions src/server/game/Handlers/MovementHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -650,3 +650,21 @@ void WorldSession::HandleSetCollisionHeightAck(WorldPacket& recvPacket)
MovementInfo movementInfo;
GetPlayer()->ReadMovementInfo(recvPacket, &movementInfo, &extra);
}

void WorldSession::HandleMovementForceAck(WorldPacket& recvPacket)
{
SF_LOG_DEBUG("network", "%s", recvPacket.GetOpcode() == CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK ? "CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK" : "CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK");

if (recvPacket.GetOpcode() == CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK)
{
static MovementStatusElements const unkElements[] = { MSEExtraFloat, MSEExtraInt32, MSEExtraFloat };
Movement::ExtraMovementStatusElement extra(unkElements);
MovementInfo movementInfo;
GetPlayer()->ReadMovementInfo(recvPacket, &movementInfo, &extra);
}
else
{
MovementInfo movementInfo;
GetPlayer()->ReadMovementInfo(recvPacket, &movementInfo);
}
}
85 changes: 85 additions & 0 deletions src/server/game/Movement/MovementStructures.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2520,6 +2520,89 @@ MovementStatusElements const MovementSetCanTransitionBetweenSwimAndFlyAck[] =
MSEEnd,
};

MovementStatusElements const MovementApplyMovementForceAck[] = // 5.4.8 18414
{
MSECount, // 176
MSEExtraElement, // 196
MSECount, // 188 (unk)
MSEPositionX, // 36
MSEPositionY, // 40
MSEPositionZ, // 44
MSEExtraElement, // 184
MSEExtraElement, // 192
MSEHasGuidByte3, // 19
MSEZeroBit, // 148
MSEHasOrientation, // 48 30h
MSEHasTimestamp, // 32
MSEHasGuidByte2, // 18
MSEHasGuidByte1, // 17
MSEHasGuidByte0, // 16
MSEHasMovementFlags2, // 28
MSEZeroBit, // 172
MSEHasCounter, // 168
MSEHasMovementFlags, // 24
MSEHasGuidByte4, // 20
MSEHasGuidByte5, // 21
MSEHasGuidByte7, // 23
MSEHasSplineElevation, // 144 90h
MSEForcesCount, // 152
MSEHasGuidByte6, // 22
MSEHasPitch, // 112 70h
MSEZeroBit, // 149
MSEHasFallData, // 140
MSEHasTransportData, // 104
MSEHasTransportGuidByte7, // 63
MSEHasTransportGuidByte6, // 62
MSEHasTransportGuidByte2, // 58
MSEHasTransportGuidByte0, // 56
MSEHasTransportTime2, // 92
MSEHasTransportTime3, // 100
MSEHasTransportGuidByte1, // 57
MSEHasTransportGuidByte5, // 61
MSEHasTransportGuidByte3, // 59
MSEHasTransportGuidByte4, // 60
MSEMovementFlags2, // 28
MSEMovementFlags, // 24
MSEHasFallDirection, // 136

MSEGuidByte3, // 19
MSEGuidByte1, // 17
MSEGuidByte7, // 23
MSEGuidByte0, // 16
MSEGuidByte6, // 22
MSEGuidByte4, // 20
MSEGuidByte5, // 21
MSEForces, // 156
MSEGuidByte2, // 18
MSETransportGuidByte0, // 56
MSETransportPositionX, // 64
MSETransportTime, // 84
MSETransportSeat, // 80
MSETransportGuidByte5, // 61
MSETransportTime2, // 88
MSETransportGuidByte1, // 57
MSETransportGuidByte3, // 59
MSETransportGuidByte2, // 58
MSETransportGuidByte4, // 60
MSETransportGuidByte7, // 63
MSETransportOrientation, // 76
MSETransportPositionZ, // 72
MSETransportTime3, // 96
MSETransportPositionY, // 68
MSETransportGuidByte6, // 62
MSEPitch, // 112 70h
MSEFallCosAngle, // 124
MSEFallHorizontalSpeed, // 132
MSEFallSinAngle, // 128
MSEFallTime, // 116
MSEFallVerticalSpeed, // 120
MSESplineElevation, // 144 90h
MSETimestamp, // 32
MSECounter, // 168
MSEOrientation, // 48 30h
MSEEnd
};

MovementStatusElements const MovementUpdateSwimBackSpeed[] = // 5.4.8 18414
{
MSEHasGuidByte3, // 27
Expand Down Expand Up @@ -6254,6 +6337,8 @@ MovementStatusElements const* GetMovementStatusElementsSequence(Opcodes opcode)
return MovementSetCanFlyAck;
//case CMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY_ACK:
// return MovementSetCanTransitionBetweenSwimAndFlyAck;
case CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK:
return MovementApplyMovementForceAck;
case SMSG_MOVE_SET_COLLISION_HEIGHT:
return MoveSetCollisionHeight;
case CMSG_MOVE_SET_COLLISION_HEIGHT_ACK:
Expand Down
2 changes: 1 addition & 1 deletion src/server/game/Server/Protocol/Opcodes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@ void OpcodeTable::InitializeClientTable()
DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_YELL, 0x04AA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMessagechatOpcode ); // 5.4.8 18414
DEFINE_OPCODE_HANDLER(CMSG_MINIMAP_PING, 0x0837, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMinimapPingOpcode ); // 5.4.8 18414
DEFINE_OPCODE_HANDLER(CMSG_MOUNTSPECIAL_ANIM, 0x0082, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSpecialAnimOpcode ); // 5.4.8 18414
DEFINE_OPCODE_HANDLER(CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, 0x08D3, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementForceAck ); // 5.4.8 18414
DEFINE_OPCODE_HANDLER(CMSG_MOVE_CHNG_TRANSPORT, 0x09DB, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); // 5.4.8 18414
DEFINE_OPCODE_HANDLER(CMSG_MOVE_FALL_RESET, 0x00D9, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); // 5.4.8 18414
DEFINE_OPCODE_HANDLER(CMSG_MOVE_FEATHER_FALL_ACK, 0x08D0, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleFeatherFallAck ); // 5.4.8 18414
Expand Down Expand Up @@ -510,7 +511,6 @@ void OpcodeTable::InitializeClientTable()
DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_ADDON_OFFICER, 0x0000, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAddonMessagechatOpcode);
DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_ADDON_PARTY, 0x0000, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAddonMessagechatOpcode);
DEFINE_OPCODE_HANDLER(CMSG_MESSAGECHAT_ADDON_RAID, 0x0000, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAddonMessagechatOpcode);
DEFINE_OPCODE_HANDLER(CMSG_MOVE_FALL_RESET, 0x0000, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes);
DEFINE_OPCODE_HANDLER(CMSG_MOVE_NOT_ACTIVE_MOVER, 0x0000, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveNotActiveMover);
DEFINE_OPCODE_HANDLER(CMSG_MOVE_SET_COLLISION_HEIGHT_ACK, 0x09FB, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleSetCollisionHeightAck);
DEFINE_OPCODE_HANDLER(CMSG_NEXT_CINEMATIC_CAMERA, 0x1124, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleNextCinematicCamera);
Expand Down
1 change: 1 addition & 0 deletions src/server/game/Server/Protocol/Opcodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ enum Opcodes
CMSG_MINIMAP_PING,
CMSG_MOUNTSPECIAL_ANIM,
CMSG_MOVE_CHARM_TELEPORT_CHEAT,
CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK,
CMSG_MOVE_CHNG_TRANSPORT,
CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK,
CMSG_MOVE_FALL_RESET,
Expand Down
1 change: 1 addition & 0 deletions src/server/game/Server/WorldSession.h
Original file line number Diff line number Diff line change
Expand Up @@ -578,6 +578,7 @@ class WorldSession
void HandleMoveTeleportAck(WorldPacket& recvPacket);
void HandleForceSpeedChangeAck(WorldPacket& recvData);
void HandleSetCollisionHeightAck(WorldPacket& recvPacket);
void HandleMovementForceAck(WorldPacket& recvPacket);

void HandleRepopRequestOpcode(WorldPacket& recvPacket);
void HandleAutostoreLootItemOpcode(WorldPacket& recvPacket);
Expand Down

0 comments on commit a5cf23d

Please sign in to comment.