mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 10:37:03 +00:00
[0006] Fix most of movement opcodes. Thx Strawberry & Trinity for MovementStatusElements idea.
Signed-off-by: Yaki Khadafi <elsoldollo@gmail.com>
This commit is contained in:
parent
0e630a3639
commit
4409188546
14 changed files with 2540 additions and 176 deletions
|
|
@ -32,7 +32,7 @@ Corpse::Corpse(CorpseType type) : WorldObject()
|
||||||
m_objectType |= TYPEMASK_CORPSE;
|
m_objectType |= TYPEMASK_CORPSE;
|
||||||
m_objectTypeId = TYPEID_CORPSE;
|
m_objectTypeId = TYPEID_CORPSE;
|
||||||
|
|
||||||
m_updateFlag = UPDATEFLAG_POSITION;
|
m_updateFlag = UPDATEFLAG_HAS_POSITION;
|
||||||
|
|
||||||
m_valuesCount = CORPSE_END;
|
m_valuesCount = CORPSE_END;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1033,31 +1033,16 @@ void WorldSession::HandleFeatherFallAck(WorldPacket& recv_data)
|
||||||
{
|
{
|
||||||
DEBUG_LOG("WORLD: CMSG_MOVE_FEATHER_FALL_ACK");
|
DEBUG_LOG("WORLD: CMSG_MOVE_FEATHER_FALL_ACK");
|
||||||
|
|
||||||
// no used
|
// not used
|
||||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldSession::HandleMoveUnRootAck(WorldPacket& recv_data)
|
void WorldSession::HandleMoveUnRootAck(WorldPacket& recv_data)
|
||||||
{
|
{
|
||||||
// no used
|
// not used
|
||||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
||||||
/*
|
/*
|
||||||
ObjectGuid guid;
|
bitsream packet
|
||||||
recv_data >> guid;
|
|
||||||
|
|
||||||
// now can skip not our packet
|
|
||||||
if(_player->GetGUID() != guid)
|
|
||||||
{
|
|
||||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DEBUG_LOG( "WORLD: CMSG_FORCE_MOVE_UNROOT_ACK" );
|
|
||||||
|
|
||||||
recv_data.read_skip<uint32>(); // unk
|
|
||||||
|
|
||||||
MovementInfo movementInfo;
|
|
||||||
ReadMovementInfo(recv_data, &movementInfo);
|
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1066,22 +1051,7 @@ void WorldSession::HandleMoveRootAck(WorldPacket& recv_data)
|
||||||
// no used
|
// no used
|
||||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
||||||
/*
|
/*
|
||||||
ObjectGuid guid;
|
bitsream packet
|
||||||
recv_data >> guid;
|
|
||||||
|
|
||||||
// now can skip not our packet
|
|
||||||
if(_player->GetObjectGuid() != guid)
|
|
||||||
{
|
|
||||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DEBUG_LOG( "WORLD: CMSG_FORCE_MOVE_ROOT_ACK" );
|
|
||||||
|
|
||||||
recv_data.read_skip<uint32>(); // unk
|
|
||||||
|
|
||||||
MovementInfo movementInfo;
|
|
||||||
ReadMovementInfo(recv_data, &movementInfo);
|
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -266,18 +266,15 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recv_data)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* extract packet */
|
/* extract packet */
|
||||||
ObjectGuid guid;
|
|
||||||
MovementInfo movementInfo;
|
MovementInfo movementInfo;
|
||||||
|
|
||||||
recv_data >> guid.ReadAsPacked();
|
|
||||||
recv_data >> movementInfo;
|
recv_data >> movementInfo;
|
||||||
/*----------------*/
|
/*----------------*/
|
||||||
|
|
||||||
if (!VerifyMovementInfo(movementInfo, guid))
|
if (!VerifyMovementInfo(movementInfo, movementInfo.GetGuid()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// fall damage generation (ignore in flight case that can be triggered also at lags in moment teleportation to another map).
|
// fall damage generation (ignore in flight case that can be triggered also at lags in moment teleportation to another map).
|
||||||
if (opcode == MSG_MOVE_FALL_LAND && plMover && !plMover->IsTaxiFlying())
|
if (opcode == CMSG_MOVE_FALL_LAND && plMover && !plMover->IsTaxiFlying())
|
||||||
plMover->HandleFall(movementInfo);
|
plMover->HandleFall(movementInfo);
|
||||||
|
|
||||||
/* process position-change */
|
/* process position-change */
|
||||||
|
|
@ -286,9 +283,8 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recv_data)
|
||||||
if (plMover)
|
if (plMover)
|
||||||
plMover->UpdateFallInformationIfNeed(movementInfo, opcode);
|
plMover->UpdateFallInformationIfNeed(movementInfo, opcode);
|
||||||
|
|
||||||
WorldPacket data(opcode, recv_data.size());
|
WorldPacket data(SMSG_PLAYER_MOVE, recv_data.size());
|
||||||
data << mover->GetPackGUID(); // write guid
|
data << movementInfo;
|
||||||
movementInfo.Write(data); // write data
|
|
||||||
mover->SendMessageToSetExcept(&data, _player);
|
mover->SendMessageToSetExcept(&data, _player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
2100
src/game/MovementStructures.h
Normal file
2100
src/game/MovementStructures.h
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -383,7 +383,6 @@ void Object::BuildMovementUpdate(ByteBuffer * data, uint16 updateFlags) const
|
||||||
if (hasTransport)
|
if (hasTransport)
|
||||||
{
|
{
|
||||||
ObjectGuid tGuid = unit->m_movementInfo.GetTransportGuid();
|
ObjectGuid tGuid = unit->m_movementInfo.GetTransportGuid();
|
||||||
uint8 guidBytes[] = { 5, 7, 3, 0, 1, 6, 2, 4 };
|
|
||||||
|
|
||||||
data->WriteGuidBytes<5, 7>(tGuid);
|
data->WriteGuidBytes<5, 7>(tGuid);
|
||||||
*data << unit->m_movementInfo.GetTransportTime();
|
*data << unit->m_movementInfo.GetTransportTime();
|
||||||
|
|
|
||||||
|
|
@ -226,29 +226,29 @@ void InitializeOpcodes()
|
||||||
//OPCODE(CMSG_DESTROY_ITEMS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(CMSG_DESTROY_ITEMS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(SMSG_GAMEOBJECT_CUSTOM_ANIM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_GAMEOBJECT_CUSTOM_ANIM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_AREATRIGGER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaTriggerOpcode );
|
//OPCODE(CMSG_AREATRIGGER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaTriggerOpcode );
|
||||||
//OPCODE(MSG_MOVE_START_FORWARD, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_FORWARD, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_START_BACKWARD, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_BACKWARD, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_STOP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_STOP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_START_STRAFE_LEFT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_STRAFE_LEFT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_START_STRAFE_RIGHT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_STRAFE_RIGHT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_STOP_STRAFE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_STOP_STRAFE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_JUMP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_JUMP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_START_TURN_LEFT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_TURN_LEFT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_START_TURN_RIGHT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_TURN_RIGHT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_STOP_TURN, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_STOP_TURN, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_START_PITCH_UP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_PITCH_UP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_START_PITCH_DOWN, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_PITCH_DOWN, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_STOP_PITCH, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_STOP_PITCH, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_SET_RUN_MODE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_SET_RUN_MODE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_SET_WALK_MODE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_SET_WALK_MODE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_TOGGLE_LOGGING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_TOGGLE_LOGGING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
OPCODE(MSG_MOVE_TELEPORT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
OPCODE(MSG_MOVE_TELEPORT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_TELEPORT_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_TELEPORT_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_TELEPORT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveTeleportAckOpcode );
|
//OPCODE(MSG_MOVE_TELEPORT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveTeleportAckOpcode );
|
||||||
//OPCODE(MSG_MOVE_TOGGLE_FALL_LOGGING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_TOGGLE_FALL_LOGGING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_FALL_LAND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_FALL_LAND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_START_SWIM, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_SWIM, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_STOP_SWIM, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_STOP_SWIM, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_SET_RUN_SPEED_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_SET_RUN_SPEED_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_SET_RUN_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_SET_RUN_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
|
|
@ -263,8 +263,8 @@ void InitializeOpcodes()
|
||||||
//OPCODE(MSG_MOVE_SET_TURN_RATE_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_SET_TURN_RATE_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_SET_TURN_RATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_SET_TURN_RATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_TOGGLE_COLLISION_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_TOGGLE_COLLISION_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_SET_FACING, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_SET_FACING, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_SET_PITCH, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_SET_PITCH, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_WORLDPORT_ACK, STATUS_TRANSFER, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode );
|
//OPCODE(MSG_MOVE_WORLDPORT_ACK, STATUS_TRANSFER, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode );
|
||||||
//OPCODE(SMSG_MONSTER_MOVE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_MONSTER_MOVE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_MOVE_WATER_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_MOVE_WATER_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
|
|
@ -283,7 +283,7 @@ void InitializeOpcodes()
|
||||||
//OPCODE(CMSG_FORCE_MOVE_UNROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveUnRootAck );
|
//OPCODE(CMSG_FORCE_MOVE_UNROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveUnRootAck );
|
||||||
//OPCODE(MSG_MOVE_ROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_ROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_UNROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_UNROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_HEARTBEAT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(MSG_MOVE_HEARTBEAT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(SMSG_MOVE_KNOCK_BACK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_MOVE_KNOCK_BACK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_MOVE_KNOCK_BACK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveKnockBackAck );
|
//OPCODE(CMSG_MOVE_KNOCK_BACK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveKnockBackAck );
|
||||||
//OPCODE(MSG_MOVE_KNOCK_BACK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_KNOCK_BACK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
|
|
@ -756,7 +756,7 @@ void InitializeOpcodes()
|
||||||
//OPCODE(CMSG_CHAR_RENAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharRenameOpcode );
|
//OPCODE(CMSG_CHAR_RENAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharRenameOpcode );
|
||||||
//OPCODE(SMSG_CHAR_RENAME, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_CHAR_RENAME, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_MOVE_SPLINE_DONE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveSplineDoneOpcode );
|
//OPCODE(CMSG_MOVE_SPLINE_DONE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveSplineDoneOpcode );
|
||||||
//OPCODE(CMSG_MOVE_FALL_RESET, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_FALL_RESET, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(SMSG_INSTANCE_SAVE_CREATED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_INSTANCE_SAVE_CREATED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_RAID_INSTANCE_INFO, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_RAID_INSTANCE_INFO, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_REQUEST_RAID_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRaidInfoOpcode );
|
//OPCODE(CMSG_REQUEST_RAID_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRaidInfoOpcode );
|
||||||
|
|
@ -899,8 +899,8 @@ void InitializeOpcodes()
|
||||||
//OPCODE(CMSG_ARENA_TEAM_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleArenaTeamLeaderOpcode );
|
//OPCODE(CMSG_ARENA_TEAM_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleArenaTeamLeaderOpcode );
|
||||||
//OPCODE(SMSG_ARENA_TEAM_EVENT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_ARENA_TEAM_EVENT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_BATTLEMASTER_JOIN_ARENA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlemasterJoinArena );
|
//OPCODE(CMSG_BATTLEMASTER_JOIN_ARENA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlemasterJoinArena );
|
||||||
//OPCODE(MSG_MOVE_START_ASCEND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_ASCEND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_STOP_ASCEND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_STOP_ASCEND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(SMSG_ARENA_TEAM_STATS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_ARENA_TEAM_STATS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_LFG_JOIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgJoinOpcode );
|
//OPCODE(CMSG_LFG_JOIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgJoinOpcode );
|
||||||
//OPCODE(CMSG_LFG_LEAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgLeaveOpcode );
|
//OPCODE(CMSG_LFG_LEAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgLeaveOpcode );
|
||||||
|
|
@ -951,7 +951,7 @@ void InitializeOpcodes()
|
||||||
//OPCODE(SMSG_JOINED_BATTLEGROUND_QUEUE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_JOINED_BATTLEGROUND_QUEUE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_REALM_SPLIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_REALM_SPLIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_REALM_SPLIT, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRealmSplitOpcode );
|
//OPCODE(CMSG_REALM_SPLIT, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRealmSplitOpcode );
|
||||||
//OPCODE(CMSG_MOVE_CHNG_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_CHNG_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_PARTY_ASSIGNMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyAssignmentOpcode );
|
//OPCODE(MSG_PARTY_ASSIGNMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyAssignmentOpcode );
|
||||||
//OPCODE(SMSG_OFFER_PETITION_ERROR, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_OFFER_PETITION_ERROR, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
OPCODE(SMSG_TIME_SYNC_REQ, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
OPCODE(SMSG_TIME_SYNC_REQ, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
|
|
@ -977,7 +977,7 @@ void InitializeOpcodes()
|
||||||
//OPCODE(SMSG_SET_EXTRA_AURA_INFO_OBSOLETE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_SET_EXTRA_AURA_INFO_OBSOLETE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_SET_EXTRA_AURA_INFO_NEED_UPDATE_OBSOLETE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_SET_EXTRA_AURA_INFO_NEED_UPDATE_OBSOLETE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_CLEAR_EXTRA_AURA_INFO_OBSOLETE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_CLEAR_EXTRA_AURA_INFO_OBSOLETE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(MSG_MOVE_START_DESCEND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_START_DESCEND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(CMSG_IGNORE_REQUIREMENTS_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(CMSG_IGNORE_REQUIREMENTS_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(SMSG_IGNORE_REQUIREMENTS_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_IGNORE_REQUIREMENTS_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_SPELL_CHANCE_PROC_LOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_SPELL_CHANCE_PROC_LOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
|
|
@ -1353,4 +1353,5 @@ void InitializeOpcodes()
|
||||||
//OPCODE(SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT1, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT1, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT2, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT2, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_COMPRESSED_UNKNOWN_1310, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_COMPRESSED_UNKNOWN_1310, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
|
OPCODE(SMSG_PLAYER_MOVE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -220,29 +220,29 @@ enum Opcodes
|
||||||
CMSG_DESTROY_ITEMS = 0x10B3,
|
CMSG_DESTROY_ITEMS = 0x10B3,
|
||||||
SMSG_GAMEOBJECT_CUSTOM_ANIM = 0x10B4,
|
SMSG_GAMEOBJECT_CUSTOM_ANIM = 0x10B4,
|
||||||
CMSG_AREATRIGGER = 0x10B5,
|
CMSG_AREATRIGGER = 0x10B5,
|
||||||
MSG_MOVE_START_FORWARD = 0x10B6,
|
CMSG_MOVE_START_FORWARD = 0x7814,
|
||||||
MSG_MOVE_START_BACKWARD = 0x10B7,
|
CMSG_MOVE_START_BACKWARD = 0x330A,
|
||||||
MSG_MOVE_STOP = 0x10B8,
|
CMSG_MOVE_STOP = 0x320A,
|
||||||
MSG_MOVE_START_STRAFE_LEFT = 0x10B9,
|
CMSG_MOVE_START_STRAFE_LEFT = 0x3A16,
|
||||||
MSG_MOVE_START_STRAFE_RIGHT = 0x10BA,
|
CMSG_MOVE_START_STRAFE_RIGHT = 0x3A02,
|
||||||
MSG_MOVE_STOP_STRAFE = 0x10BB,
|
CMSG_MOVE_STOP_STRAFE = 0x3002,
|
||||||
MSG_MOVE_JUMP = 0x10BC,
|
CMSG_MOVE_JUMP = 0x7A06,
|
||||||
MSG_MOVE_START_TURN_LEFT = 0x10BD,
|
CMSG_MOVE_START_TURN_LEFT = 0x700C,
|
||||||
MSG_MOVE_START_TURN_RIGHT = 0x10BE,
|
CMSG_MOVE_START_TURN_RIGHT = 0x7000,
|
||||||
MSG_MOVE_STOP_TURN = 0x10BF,
|
CMSG_MOVE_STOP_TURN = 0x331E,
|
||||||
MSG_MOVE_START_PITCH_UP = 0x10C0,
|
CMSG_MOVE_START_PITCH_UP = 0x3304,
|
||||||
MSG_MOVE_START_PITCH_DOWN = 0x10C1,
|
CMSG_MOVE_START_PITCH_DOWN = 0x3908,
|
||||||
MSG_MOVE_STOP_PITCH = 0x10C2,
|
CMSG_MOVE_STOP_PITCH = 0x7216,
|
||||||
MSG_MOVE_SET_RUN_MODE = 0x10C3,
|
CMSG_MOVE_SET_RUN_MODE = 0x791A,
|
||||||
MSG_MOVE_SET_WALK_MODE = 0x10C4,
|
CMSG_MOVE_SET_WALK_MODE = 0x7002,
|
||||||
MSG_MOVE_TOGGLE_LOGGING = 0x10C5,
|
MSG_MOVE_TOGGLE_LOGGING = 0x10C5,
|
||||||
MSG_MOVE_TELEPORT = 0x55A0,
|
MSG_MOVE_TELEPORT = 0x55A0,
|
||||||
MSG_MOVE_TELEPORT_CHEAT = 0x10C7,
|
MSG_MOVE_TELEPORT_CHEAT = 0x10C7,
|
||||||
MSG_MOVE_TELEPORT_ACK = 0x10C8,
|
MSG_MOVE_TELEPORT_ACK = 0x10C8,
|
||||||
MSG_MOVE_TOGGLE_FALL_LOGGING = 0x10C9,
|
MSG_MOVE_TOGGLE_FALL_LOGGING = 0x10C9,
|
||||||
MSG_MOVE_FALL_LAND = 0x10CA,
|
CMSG_MOVE_FALL_LAND = 0x380A,
|
||||||
MSG_MOVE_START_SWIM = 0x10CB,
|
CMSG_MOVE_START_SWIM = 0x3206,
|
||||||
MSG_MOVE_STOP_SWIM = 0x10CC,
|
CMSG_MOVE_STOP_SWIM = 0x3802,
|
||||||
MSG_MOVE_SET_RUN_SPEED_CHEAT = 0x10CD,
|
MSG_MOVE_SET_RUN_SPEED_CHEAT = 0x10CD,
|
||||||
MSG_MOVE_SET_RUN_SPEED = 0x10CE,
|
MSG_MOVE_SET_RUN_SPEED = 0x10CE,
|
||||||
MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT = 0x10CF,
|
MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT = 0x10CF,
|
||||||
|
|
@ -257,10 +257,10 @@ enum Opcodes
|
||||||
MSG_MOVE_SET_TURN_RATE_CHEAT = 0x10D8,
|
MSG_MOVE_SET_TURN_RATE_CHEAT = 0x10D8,
|
||||||
MSG_MOVE_SET_TURN_RATE = 0x10D9,
|
MSG_MOVE_SET_TURN_RATE = 0x10D9,
|
||||||
MSG_MOVE_TOGGLE_COLLISION_CHEAT = 0x10DA,
|
MSG_MOVE_TOGGLE_COLLISION_CHEAT = 0x10DA,
|
||||||
MSG_MOVE_SET_FACING = 0x10DB,
|
CMSG_MOVE_SET_FACING = 0x7914,
|
||||||
MSG_MOVE_SET_PITCH = 0x10DC,
|
CMSG_MOVE_SET_PITCH = 0x7312,
|
||||||
MSG_MOVE_WORLDPORT_ACK = 0x10DD,
|
MSG_MOVE_WORLDPORT_ACK = 0x10DD,
|
||||||
SMSG_MONSTER_MOVE = 0x10DE,
|
SMSG_MONSTER_MOVE = 0x6E17,
|
||||||
SMSG_MOVE_WATER_WALK = 0x10DF,
|
SMSG_MOVE_WATER_WALK = 0x10DF,
|
||||||
SMSG_MOVE_LAND_WALK = 0x10E0,
|
SMSG_MOVE_LAND_WALK = 0x10E0,
|
||||||
CMSG_MOVE_CHARM_PORT_CHEAT = 0x10E1,
|
CMSG_MOVE_CHARM_PORT_CHEAT = 0x10E1,
|
||||||
|
|
@ -277,7 +277,7 @@ enum Opcodes
|
||||||
CMSG_FORCE_MOVE_UNROOT_ACK = 0x10EC,
|
CMSG_FORCE_MOVE_UNROOT_ACK = 0x10EC,
|
||||||
MSG_MOVE_ROOT = 0x10ED,
|
MSG_MOVE_ROOT = 0x10ED,
|
||||||
MSG_MOVE_UNROOT = 0x10EE,
|
MSG_MOVE_UNROOT = 0x10EE,
|
||||||
MSG_MOVE_HEARTBEAT = 0x10EF,
|
MSG_MOVE_HEARTBEAT = 0x3914,
|
||||||
SMSG_MOVE_KNOCK_BACK = 0x10F0,
|
SMSG_MOVE_KNOCK_BACK = 0x10F0,
|
||||||
CMSG_MOVE_KNOCK_BACK_ACK = 0x10F1,
|
CMSG_MOVE_KNOCK_BACK_ACK = 0x10F1,
|
||||||
MSG_MOVE_KNOCK_BACK = 0x10F2,
|
MSG_MOVE_KNOCK_BACK = 0x10F2,
|
||||||
|
|
@ -750,7 +750,7 @@ enum Opcodes
|
||||||
CMSG_CHAR_RENAME = 0x12C8,
|
CMSG_CHAR_RENAME = 0x12C8,
|
||||||
SMSG_CHAR_RENAME = 0x12C9,
|
SMSG_CHAR_RENAME = 0x12C9,
|
||||||
CMSG_MOVE_SPLINE_DONE = 0x12CA,
|
CMSG_MOVE_SPLINE_DONE = 0x12CA,
|
||||||
CMSG_MOVE_FALL_RESET = 0x12CB,
|
CMSG_MOVE_FALL_RESET = 0x310A,
|
||||||
SMSG_INSTANCE_SAVE_CREATED = 0x12CC,
|
SMSG_INSTANCE_SAVE_CREATED = 0x12CC,
|
||||||
SMSG_RAID_INSTANCE_INFO = 0x12CD,
|
SMSG_RAID_INSTANCE_INFO = 0x12CD,
|
||||||
CMSG_REQUEST_RAID_INFO = 0x12CE,
|
CMSG_REQUEST_RAID_INFO = 0x12CE,
|
||||||
|
|
@ -893,8 +893,8 @@ enum Opcodes
|
||||||
CMSG_ARENA_TEAM_LEADER = 0x1357,
|
CMSG_ARENA_TEAM_LEADER = 0x1357,
|
||||||
SMSG_ARENA_TEAM_EVENT = 0x1358,
|
SMSG_ARENA_TEAM_EVENT = 0x1358,
|
||||||
CMSG_BATTLEMASTER_JOIN_ARENA = 0x1359,
|
CMSG_BATTLEMASTER_JOIN_ARENA = 0x1359,
|
||||||
MSG_MOVE_START_ASCEND = 0x135A,
|
CMSG_MOVE_START_ASCEND = 0x390A,
|
||||||
MSG_MOVE_STOP_ASCEND = 0x135B,
|
CMSG_MOVE_STOP_ASCEND = 0x7B00,
|
||||||
SMSG_ARENA_TEAM_STATS = 0x135C,
|
SMSG_ARENA_TEAM_STATS = 0x135C,
|
||||||
CMSG_LFG_JOIN = 0x135D,
|
CMSG_LFG_JOIN = 0x135D,
|
||||||
CMSG_LFG_LEAVE = 0x135E,
|
CMSG_LFG_LEAVE = 0x135E,
|
||||||
|
|
@ -945,7 +945,7 @@ enum Opcodes
|
||||||
SMSG_JOINED_BATTLEGROUND_QUEUE = 0x138B,
|
SMSG_JOINED_BATTLEGROUND_QUEUE = 0x138B,
|
||||||
SMSG_REALM_SPLIT = 0x138C,
|
SMSG_REALM_SPLIT = 0x138C,
|
||||||
CMSG_REALM_SPLIT = 0x138D,
|
CMSG_REALM_SPLIT = 0x138D,
|
||||||
CMSG_MOVE_CHNG_TRANSPORT = 0x138E,
|
CMSG_MOVE_CHNG_TRANSPORT = 0x3102,
|
||||||
MSG_PARTY_ASSIGNMENT = 0x138F,
|
MSG_PARTY_ASSIGNMENT = 0x138F,
|
||||||
SMSG_OFFER_PETITION_ERROR = 0x1390,
|
SMSG_OFFER_PETITION_ERROR = 0x1390,
|
||||||
SMSG_TIME_SYNC_REQ = 0x3CA4,
|
SMSG_TIME_SYNC_REQ = 0x3CA4,
|
||||||
|
|
@ -971,7 +971,7 @@ enum Opcodes
|
||||||
SMSG_SET_EXTRA_AURA_INFO_OBSOLETE = 0x13A5,
|
SMSG_SET_EXTRA_AURA_INFO_OBSOLETE = 0x13A5,
|
||||||
SMSG_SET_EXTRA_AURA_INFO_NEED_UPDATE_OBSOLETE = 0x13A6,
|
SMSG_SET_EXTRA_AURA_INFO_NEED_UPDATE_OBSOLETE = 0x13A6,
|
||||||
SMSG_CLEAR_EXTRA_AURA_INFO_OBSOLETE = 0x13A7,
|
SMSG_CLEAR_EXTRA_AURA_INFO_OBSOLETE = 0x13A7,
|
||||||
MSG_MOVE_START_DESCEND = 0x13A8,
|
CMSG_MOVE_START_DESCEND = 0x3800,
|
||||||
CMSG_IGNORE_REQUIREMENTS_CHEAT = 0x13A9,
|
CMSG_IGNORE_REQUIREMENTS_CHEAT = 0x13A9,
|
||||||
SMSG_IGNORE_REQUIREMENTS_CHEAT = 0x13AA,
|
SMSG_IGNORE_REQUIREMENTS_CHEAT = 0x13AA,
|
||||||
SMSG_SPELL_CHANCE_PROC_LOG = 0x13AB,
|
SMSG_SPELL_CHANCE_PROC_LOG = 0x13AB,
|
||||||
|
|
@ -1371,6 +1371,7 @@ enum Opcodes
|
||||||
UMSG_UNKNOWN_1332 = 0x1535,
|
UMSG_UNKNOWN_1332 = 0x1535,
|
||||||
UMSG_UNKNOWN_1333 = 0x1536,
|
UMSG_UNKNOWN_1333 = 0x1536,
|
||||||
UMSG_UNKNOWN_1334 = 0x1537,
|
UMSG_UNKNOWN_1334 = 0x1537,
|
||||||
|
SMSG_PLAYER_MOVE = 0x79A2,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_OPCODE_TABLE_SIZE 0xFFFF
|
#define MAX_OPCODE_TABLE_SIZE 0xFFFF
|
||||||
|
|
|
||||||
|
|
@ -22428,7 +22428,7 @@ void Player::UpdateKnownCurrencies(uint32 itemId, bool apply)
|
||||||
|
|
||||||
void Player::UpdateFallInformationIfNeed(MovementInfo const& minfo, uint16 opcode)
|
void Player::UpdateFallInformationIfNeed(MovementInfo const& minfo, uint16 opcode)
|
||||||
{
|
{
|
||||||
if (m_lastFallTime >= minfo.GetFallTime() || m_lastFallZ <= minfo.GetPos()->z || opcode == MSG_MOVE_FALL_LAND)
|
if (m_lastFallTime >= minfo.GetFallTime() || m_lastFallZ <= minfo.GetPos()->z || opcode == CMSG_MOVE_FALL_LAND)
|
||||||
SetFallInformation(minfo.GetFallTime(), minfo.GetPos()->z);
|
SetFallInformation(minfo.GetFallTime(), minfo.GetPos()->z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -402,7 +402,7 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
|
||||||
ObjectGuid guid; // guid - unused
|
ObjectGuid guid; // guid - unused
|
||||||
MovementInfo movementInfo;
|
MovementInfo movementInfo;
|
||||||
|
|
||||||
recvPacket >> Unused<uint32>(); // >> MSG_MOVE_STOP
|
recvPacket >> Unused<uint32>(); // >> CMSG_MOVE_STOP
|
||||||
recvPacket >> guid.ReadAsPacked();
|
recvPacket >> guid.ReadAsPacked();
|
||||||
recvPacket >> movementInfo;
|
recvPacket >> movementInfo;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,7 @@ void MapManager::LoadTransports()
|
||||||
|
|
||||||
Transport::Transport() : GameObject()
|
Transport::Transport() : GameObject()
|
||||||
{
|
{
|
||||||
m_updateFlag = (UPDATEFLAG_TRANSPORT | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_ROTATION);
|
m_updateFlag = UPDATEFLAG_TRANSPORT | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_ROTATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Transport::Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint8 animprogress, uint16 dynamicHighValue)
|
bool Transport::Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint8 animprogress, uint16 dynamicHighValue)
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@
|
||||||
#include "movement/MoveSplineInit.h"
|
#include "movement/MoveSplineInit.h"
|
||||||
#include "movement/MoveSpline.h"
|
#include "movement/MoveSpline.h"
|
||||||
#include "CreatureLinkingMgr.h"
|
#include "CreatureLinkingMgr.h"
|
||||||
|
#include "MovementStructures.h"
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
@ -70,95 +71,366 @@ float baseMoveSpeed[MAX_MOVE_TYPE] =
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
// Methods of class MovementInfo
|
// Methods of class MovementInfo
|
||||||
|
|
||||||
void MovementInfo::Read(ByteBuffer& data)
|
void MovementInfo::Read(ByteBuffer& data, uint16 opcode)
|
||||||
{
|
{
|
||||||
data >> moveFlags;
|
bool hasTransportData = false,
|
||||||
data >> moveFlags2;
|
hasMovementFlags = false,
|
||||||
data >> time;
|
hasMovementFlags2 = false;
|
||||||
data >> pos.x;
|
|
||||||
data >> pos.y;
|
|
||||||
data >> pos.z;
|
|
||||||
data >> pos.o;
|
|
||||||
|
|
||||||
// comment, anyway movementInfo read/write system will be reimplemented soon
|
MovementStatusElements* sequence = GetMovementStatusElementsSequence(opcode);
|
||||||
//if (HasMovementFlag(MOVEFLAG_ONTRANSPORT))
|
if(!sequence)
|
||||||
{
|
{
|
||||||
data >> t_guid.ReadAsPacked();
|
sLog.outError("Unsupported MovementInfo::Read for 0x%X (%s)!", opcode, LookupOpcodeName(opcode));
|
||||||
data >> t_pos.x;
|
return;
|
||||||
data >> t_pos.y;
|
|
||||||
data >> t_pos.z;
|
|
||||||
data >> t_pos.o;
|
|
||||||
data >> t_time;
|
|
||||||
data >> t_seat;
|
|
||||||
|
|
||||||
if (moveFlags2 & MOVEFLAG2_INTERP_MOVEMENT)
|
|
||||||
data >> t_time2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((HasMovementFlag(MovementFlags(MOVEFLAG_SWIMMING | MOVEFLAG_FLYING))) || (moveFlags2 & MOVEFLAG2_ALLOW_PITCHING))
|
for(uint32 i = 0; i < MSE_COUNT; ++i)
|
||||||
{
|
{
|
||||||
data >> s_pitch;
|
MovementStatusElements element = sequence[i];
|
||||||
}
|
if (element == MSEEnd)
|
||||||
|
break;
|
||||||
|
|
||||||
data >> fallTime;
|
if (element >= MSEGuidBit0 && element <= MSEGuidBit7)
|
||||||
|
{
|
||||||
|
guid[element - MSEGuidByte0] = data.ReadBit();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (HasMovementFlag(MOVEFLAG_FALLING))
|
if (element >= MSETransportGuidBit0 && element <= MSETransportGuidBit7)
|
||||||
{
|
{
|
||||||
data >> jump.velocity;
|
if (hasTransportData)
|
||||||
data >> jump.sinAngle;
|
t_guid[element - MSETransportGuidBit0] = data.ReadBit();
|
||||||
data >> jump.cosAngle;
|
continue;
|
||||||
data >> jump.xyspeed;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (HasMovementFlag(MOVEFLAG_SPLINE_ELEVATION))
|
if (element >= MSEGuidByte0 && element <= MSEGuidByte7)
|
||||||
{
|
{
|
||||||
data >> splineElevation;
|
if (guid[element - MSEGuidByte0])
|
||||||
|
guid[element - MSEGuidByte0] ^= data.ReadUInt8();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element >= MSETransportGuidByte0 && element <= MSETransportGuidByte7)
|
||||||
|
{
|
||||||
|
if (hasTransportData && t_guid[element - MSETransportGuidByte0])
|
||||||
|
t_guid[element - MSETransportGuidByte0] ^= data.ReadUInt8();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (element)
|
||||||
|
{
|
||||||
|
case MSEFlags:
|
||||||
|
if (hasMovementFlags)
|
||||||
|
moveFlags = data.ReadBits(30);
|
||||||
|
break;
|
||||||
|
case MSEFlags2:
|
||||||
|
if (hasMovementFlags2)
|
||||||
|
moveFlags2 = data.ReadBits(12);
|
||||||
|
break;
|
||||||
|
case MSEHasUnknownBit:
|
||||||
|
data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSETimestamp:
|
||||||
|
if (si.hasTimeStamp)
|
||||||
|
data >> time;
|
||||||
|
break;
|
||||||
|
case MSEHasTimestamp:
|
||||||
|
si.hasTimeStamp = !data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasOrientation:
|
||||||
|
si.hasOrientation = !data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasMovementFlags:
|
||||||
|
hasMovementFlags = !data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasMovementFlags2:
|
||||||
|
hasMovementFlags2 = !data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasPitch:
|
||||||
|
si.hasPitch = !data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasFallData:
|
||||||
|
si.hasFallData = data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasFallDirection:
|
||||||
|
if (si.hasFallData)
|
||||||
|
si.hasFallDirection = data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasTransportData:
|
||||||
|
hasTransportData = data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasTransportTime2:
|
||||||
|
if (hasTransportData)
|
||||||
|
si.hasTransportTime2 = data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasTransportTime3:
|
||||||
|
if (hasTransportData)
|
||||||
|
si.hasTransportTime3 = data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasSpline:
|
||||||
|
si.hasSpline = data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEHasSplineElevation:
|
||||||
|
si.hasSplineElevation = !data.ReadBit();
|
||||||
|
break;
|
||||||
|
case MSEPositionX:
|
||||||
|
data >> pos.x;
|
||||||
|
break;
|
||||||
|
case MSEPositionY:
|
||||||
|
data >> pos.y;
|
||||||
|
break;
|
||||||
|
case MSEPositionZ:
|
||||||
|
data >> pos.z;
|
||||||
|
break;
|
||||||
|
case MSEPositionO:
|
||||||
|
if (si.hasOrientation)
|
||||||
|
data >> pos.o;
|
||||||
|
break;
|
||||||
|
case MSEPitch:
|
||||||
|
if (si.hasPitch)
|
||||||
|
data >> s_pitch;
|
||||||
|
break;;
|
||||||
|
case MSEFallTime:
|
||||||
|
if (si.hasFallData)
|
||||||
|
data >> fallTime;
|
||||||
|
break;
|
||||||
|
case MSESplineElevation:
|
||||||
|
if (si.hasSplineElevation)
|
||||||
|
data >> splineElevation;
|
||||||
|
break;
|
||||||
|
case MSEFallHorizontalSpeed:
|
||||||
|
if (si.hasFallData && si.hasFallDirection)
|
||||||
|
data >> jump.xyspeed;
|
||||||
|
break;
|
||||||
|
case MSEFallVerticalSpeed:
|
||||||
|
if (si.hasFallData)
|
||||||
|
data >> jump.velocity;
|
||||||
|
break;
|
||||||
|
case MSEFallCosAngle:
|
||||||
|
if (si.hasFallData && si.hasFallDirection)
|
||||||
|
data >> jump.cosAngle;
|
||||||
|
break;
|
||||||
|
case MSEFallSinAngle:
|
||||||
|
if (si.hasFallData && si.hasFallDirection)
|
||||||
|
data >> jump.sinAngle;
|
||||||
|
break;
|
||||||
|
case MSETransportSeat:
|
||||||
|
if (hasTransportData)
|
||||||
|
data >> t_seat;
|
||||||
|
break;
|
||||||
|
case MSETransportPositionO:
|
||||||
|
if (hasTransportData)
|
||||||
|
data >> t_pos.o;
|
||||||
|
break;
|
||||||
|
case MSETransportPositionX:
|
||||||
|
if (hasTransportData)
|
||||||
|
data >> t_pos.x;
|
||||||
|
break;
|
||||||
|
case MSETransportPositionY:
|
||||||
|
if (hasTransportData)
|
||||||
|
data >> t_pos.y;
|
||||||
|
break;
|
||||||
|
case MSETransportPositionZ:
|
||||||
|
if (hasTransportData)
|
||||||
|
data >> t_pos.z;
|
||||||
|
break;
|
||||||
|
case MSETransportTime:
|
||||||
|
if (hasTransportData)
|
||||||
|
data >> t_time;
|
||||||
|
break;
|
||||||
|
case MSETransportTime2:
|
||||||
|
if (hasTransportData && si.hasTransportTime2)
|
||||||
|
data >> t_time2;
|
||||||
|
break;
|
||||||
|
case MSETransportTime3:
|
||||||
|
if (hasTransportData && si.hasTransportTime3)
|
||||||
|
data >> fallTime;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
MANGOS_ASSERT(false && "Wrong movement status element");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MovementInfo::Write(ByteBuffer& data) const
|
void MovementInfo::Write(ByteBuffer& data, uint16 opcode) const
|
||||||
{
|
{
|
||||||
data << moveFlags;
|
bool hasTransportData = !t_guid.IsEmpty();
|
||||||
data << moveFlags2;
|
|
||||||
data << time;
|
|
||||||
data << pos.x;
|
|
||||||
data << pos.y;
|
|
||||||
data << pos.z;
|
|
||||||
data << pos.o;
|
|
||||||
|
|
||||||
// comment, anyway movementInfo read/write system will be reimplemented soon
|
MovementStatusElements* sequence = GetMovementStatusElementsSequence(opcode);
|
||||||
//if (HasMovementFlag(MOVEFLAG_ONTRANSPORT))
|
if (!sequence)
|
||||||
{
|
{
|
||||||
data << t_guid.WriteAsPacked();
|
sLog.outError("Unsupported MovementInfo::Write for 0x%X (%s)!", opcode, LookupOpcodeName(opcode));
|
||||||
data << t_pos.x;
|
return;
|
||||||
data << t_pos.y;
|
|
||||||
data << t_pos.z;
|
|
||||||
data << t_pos.o;
|
|
||||||
data << t_time;
|
|
||||||
data << t_seat;
|
|
||||||
|
|
||||||
if (moveFlags2 & MOVEFLAG2_INTERP_MOVEMENT)
|
|
||||||
data << t_time2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((HasMovementFlag(MovementFlags(MOVEFLAG_SWIMMING | MOVEFLAG_FLYING))) || (moveFlags2 & MOVEFLAG2_ALLOW_PITCHING))
|
for(uint32 i = 0; i < MSE_COUNT; ++i)
|
||||||
{
|
{
|
||||||
data << s_pitch;
|
MovementStatusElements element = sequence[i];
|
||||||
}
|
|
||||||
|
|
||||||
data << fallTime;
|
if (element == MSEEnd)
|
||||||
|
break;
|
||||||
|
|
||||||
if (HasMovementFlag(MOVEFLAG_FALLING))
|
if (element >= MSEGuidBit0 && element <= MSEGuidBit7)
|
||||||
{
|
{
|
||||||
data << jump.velocity;
|
data.WriteBit(guid[element - MSEGuidBit0]);
|
||||||
data << jump.sinAngle;
|
continue;
|
||||||
data << jump.cosAngle;
|
}
|
||||||
data << jump.xyspeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (HasMovementFlag(MOVEFLAG_SPLINE_ELEVATION))
|
if (element >= MSETransportGuidBit0 && element <= MSETransportGuidBit7)
|
||||||
{
|
{
|
||||||
data << splineElevation;
|
if (hasTransportData)
|
||||||
|
data.WriteBit(t_guid[element - MSETransportGuidBit0]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element >= MSEGuidByte0 && element <= MSEGuidByte7)
|
||||||
|
{
|
||||||
|
if (guid[element - MSEGuidByte0])
|
||||||
|
data << uint8((guid[element - MSEGuidByte0] ^ 1));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element >= MSETransportGuidByte0 && element <= MSETransportGuidByte7)
|
||||||
|
{
|
||||||
|
if (hasTransportData && t_guid[element - MSEGuidByte0])
|
||||||
|
data << uint8((t_guid[element - MSETransportGuidByte0] ^ 1));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (element)
|
||||||
|
{
|
||||||
|
case MSEHasMovementFlags:
|
||||||
|
data.WriteBit(!moveFlags);
|
||||||
|
break;
|
||||||
|
case MSEHasMovementFlags2:
|
||||||
|
data.WriteBit(!moveFlags2);
|
||||||
|
break;
|
||||||
|
case MSEFlags:
|
||||||
|
if (moveFlags)
|
||||||
|
data.WriteBits(moveFlags, 30);
|
||||||
|
break;
|
||||||
|
case MSEFlags2:
|
||||||
|
if (moveFlags2)
|
||||||
|
data.WriteBits(moveFlags2, 12);
|
||||||
|
break;
|
||||||
|
case MSETimestamp:
|
||||||
|
if (si.hasTimeStamp)
|
||||||
|
data << uint32(time);
|
||||||
|
break;
|
||||||
|
case MSEHasPitch:
|
||||||
|
data.WriteBit(!si.hasPitch);
|
||||||
|
break;
|
||||||
|
case MSEHasTimestamp:
|
||||||
|
data.WriteBit(!si.hasTimeStamp);
|
||||||
|
break;
|
||||||
|
case MSEHasUnknownBit:
|
||||||
|
data.WriteBit(false);
|
||||||
|
break;
|
||||||
|
case MSEHasFallData:
|
||||||
|
data.WriteBit(si.hasFallData);
|
||||||
|
break;
|
||||||
|
case MSEHasFallDirection:
|
||||||
|
if (si.hasFallData)
|
||||||
|
data.WriteBit(si.hasFallDirection);
|
||||||
|
break;
|
||||||
|
case MSEHasTransportData:
|
||||||
|
data.WriteBit(hasTransportData);
|
||||||
|
break;
|
||||||
|
case MSEHasTransportTime2:
|
||||||
|
if (hasTransportData)
|
||||||
|
data.WriteBit(si.hasTransportTime2);
|
||||||
|
break;
|
||||||
|
case MSEHasTransportTime3:
|
||||||
|
if (hasTransportData)
|
||||||
|
data.WriteBit(si.hasTransportTime3);
|
||||||
|
break;
|
||||||
|
case MSEHasSpline:
|
||||||
|
data.WriteBit(si.hasSpline);
|
||||||
|
break;
|
||||||
|
case MSEHasSplineElevation:
|
||||||
|
data.WriteBit(!si.hasSplineElevation);
|
||||||
|
break;
|
||||||
|
case MSEPositionX:
|
||||||
|
data << float(pos.x);
|
||||||
|
break;
|
||||||
|
case MSEPositionY:
|
||||||
|
data << float(pos.y);
|
||||||
|
break;
|
||||||
|
case MSEPositionZ:
|
||||||
|
data << float(pos.z);
|
||||||
|
break;
|
||||||
|
case MSEPositionO:
|
||||||
|
if (si.hasOrientation)
|
||||||
|
data << float(pos.o);
|
||||||
|
break;
|
||||||
|
case MSEPitch:
|
||||||
|
if (si.hasPitch)
|
||||||
|
data << float(s_pitch);
|
||||||
|
break;
|
||||||
|
case MSEHasOrientation:
|
||||||
|
data.WriteBit(!si.hasOrientation);
|
||||||
|
break;
|
||||||
|
case MSEFallTime:
|
||||||
|
if (si.hasFallData)
|
||||||
|
data << uint32(fallTime);
|
||||||
|
break;
|
||||||
|
case MSESplineElevation:
|
||||||
|
if (si.hasSplineElevation)
|
||||||
|
data << float(splineElevation);
|
||||||
|
break;
|
||||||
|
case MSEFallHorizontalSpeed:
|
||||||
|
if (si.hasFallData && si.hasFallDirection)
|
||||||
|
data << float(jump.xyspeed);
|
||||||
|
break;
|
||||||
|
case MSEFallVerticalSpeed:
|
||||||
|
if (si.hasFallData)
|
||||||
|
data << float(jump.velocity);
|
||||||
|
break;
|
||||||
|
case MSEFallCosAngle:
|
||||||
|
if (si.hasFallData && si.hasFallDirection)
|
||||||
|
data << float(jump.cosAngle);
|
||||||
|
break;
|
||||||
|
case MSEFallSinAngle:
|
||||||
|
if (si.hasFallData && si.hasFallDirection)
|
||||||
|
data << float(jump.sinAngle);
|
||||||
|
break;
|
||||||
|
case MSETransportSeat:
|
||||||
|
if (hasTransportData)
|
||||||
|
data << int32(t_seat);
|
||||||
|
break;
|
||||||
|
case MSETransportPositionO:
|
||||||
|
if (hasTransportData)
|
||||||
|
data << float(t_pos.o);
|
||||||
|
break;
|
||||||
|
case MSETransportPositionX:
|
||||||
|
if (hasTransportData)
|
||||||
|
data << float(t_pos.x);
|
||||||
|
break;
|
||||||
|
case MSETransportPositionY:
|
||||||
|
if (hasTransportData)
|
||||||
|
data << float(t_pos.y);
|
||||||
|
break;
|
||||||
|
case MSETransportPositionZ:
|
||||||
|
if (hasTransportData)
|
||||||
|
data << float(t_pos.z);
|
||||||
|
break;
|
||||||
|
case MSETransportTime:
|
||||||
|
if (hasTransportData)
|
||||||
|
data << uint32(t_time);
|
||||||
|
break;
|
||||||
|
case MSETransportTime2:
|
||||||
|
if (hasTransportData && si.hasTransportTime2)
|
||||||
|
data << uint32(t_time2);
|
||||||
|
break;
|
||||||
|
case MSETransportTime3:
|
||||||
|
if (hasTransportData && si.hasTransportTime3)
|
||||||
|
data << uint32(fallTime);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
MANGOS_ASSERT(false && "Wrong movement status element");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -675,8 +675,8 @@ class MovementInfo
|
||||||
t_time(0), t_seat(-1), t_time2(0), s_pitch(0.0f), fallTime(0), splineElevation(0.0f) {}
|
t_time(0), t_seat(-1), t_time2(0), s_pitch(0.0f), fallTime(0), splineElevation(0.0f) {}
|
||||||
|
|
||||||
// Read/Write methods
|
// Read/Write methods
|
||||||
void Read(ByteBuffer& data);
|
void Read(ByteBuffer& data, uint16 opcode);
|
||||||
void Write(ByteBuffer& data) const;
|
void Write(ByteBuffer& data, uint16 opcode) const;
|
||||||
|
|
||||||
// Movement flags manipulations
|
// Movement flags manipulations
|
||||||
void AddMovementFlag(MovementFlags f) { moveFlags |= f; }
|
void AddMovementFlag(MovementFlags f) { moveFlags |= f; }
|
||||||
|
|
@ -708,6 +708,7 @@ class MovementInfo
|
||||||
t_time = 0;
|
t_time = 0;
|
||||||
t_seat = -1;
|
t_seat = -1;
|
||||||
}
|
}
|
||||||
|
ObjectGuid const& GetGuid() const { return guid; }
|
||||||
ObjectGuid const& GetTransportGuid() const { return t_guid; }
|
ObjectGuid const& GetTransportGuid() const { return t_guid; }
|
||||||
Position const* GetTransportPos() const { return &t_pos; }
|
Position const* GetTransportPos() const { return &t_pos; }
|
||||||
int8 GetTransportSeat() const { return t_seat; }
|
int8 GetTransportSeat() const { return t_seat; }
|
||||||
|
|
@ -723,12 +724,30 @@ class MovementInfo
|
||||||
float velocity, sinAngle, cosAngle, xyspeed;
|
float velocity, sinAngle, cosAngle, xyspeed;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// used only for SMSG_PLAYER_MOVE currently
|
||||||
|
struct StatusInfo
|
||||||
|
{
|
||||||
|
StatusInfo() : hasFallData(false), hasFallDirection(false), hasOrientation(false),
|
||||||
|
hasPitch(false), hasSpline(false), hasSplineElevation(false),
|
||||||
|
hasTimeStamp(false), hasTransportTime2(false), hasTransportTime3(false) { }
|
||||||
|
bool hasFallData : 1;
|
||||||
|
bool hasFallDirection : 1;
|
||||||
|
bool hasOrientation : 1;
|
||||||
|
bool hasPitch : 1;
|
||||||
|
bool hasSpline : 1;
|
||||||
|
bool hasSplineElevation : 1;
|
||||||
|
bool hasTimeStamp : 1;
|
||||||
|
bool hasTransportTime2 : 1;
|
||||||
|
bool hasTransportTime3 : 1;
|
||||||
|
};
|
||||||
|
|
||||||
JumpInfo const& GetJumpInfo() const { return jump; }
|
JumpInfo const& GetJumpInfo() const { return jump; }
|
||||||
float GetSplineElevation() const { return splineElevation; }
|
float GetSplineElevation() const { return splineElevation; }
|
||||||
float GetPitch() const { return s_pitch; }
|
float GetPitch() const { return s_pitch; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// common
|
// common
|
||||||
|
ObjectGuid guid;
|
||||||
uint32 moveFlags; // see enum MovementFlags
|
uint32 moveFlags; // see enum MovementFlags
|
||||||
uint16 moveFlags2; // see enum MovementFlags2
|
uint16 moveFlags2; // see enum MovementFlags2
|
||||||
uint32 time;
|
uint32 time;
|
||||||
|
|
@ -747,17 +766,19 @@ class MovementInfo
|
||||||
JumpInfo jump;
|
JumpInfo jump;
|
||||||
// spline
|
// spline
|
||||||
float splineElevation;
|
float splineElevation;
|
||||||
|
// status info
|
||||||
|
StatusInfo si;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline ByteBuffer& operator<< (ByteBuffer& buf, MovementInfo const& mi)
|
inline WorldPacket& operator<< (WorldPacket& buf, MovementInfo const& mi)
|
||||||
{
|
{
|
||||||
mi.Write(buf);
|
mi.Write(buf, buf.GetOpcode());
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ByteBuffer& operator>> (ByteBuffer& buf, MovementInfo& mi)
|
inline WorldPacket& operator>> (WorldPacket& buf, MovementInfo& mi)
|
||||||
{
|
{
|
||||||
mi.Read(buf);
|
mi.Read(buf, buf.GetOpcode());
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "0005"
|
#define REVISION_NR "0006"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
|
|
@ -882,7 +882,7 @@
|
||||||
RelativePath="..\..\src\game\MoveMap.h"
|
RelativePath="..\..\src\game\MoveMap.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\src\game\MoveMapSharedDefines.h"
|
RelativePath="..\..\src\game\MoveMapSharedDefines.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
|
@ -1762,6 +1762,10 @@
|
||||||
<Filter
|
<Filter
|
||||||
Name="Movement"
|
Name="Movement"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\src\game\MovementStructures.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\src\game\Movement\MoveSpline.cpp"
|
RelativePath="..\..\src\game\Movement\MoveSpline.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue