diff options
author | joschiwald <joschiwald.trinity@gmail.com> | 2014-11-06 02:59:59 +0100 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2014-11-06 02:59:59 +0100 |
commit | db7c07246a9eff609c711971d6f98413d38be97f (patch) | |
tree | d0a969ee81385de55ef4ff69ec14577f4d6609be /src | |
parent | 3cb4b7359e51aa22b58591ca55112b9b19ca71ef (diff) |
Core/NetworkIO: updated CMSG_REORDER_CHARACTERS packet and other opcode values
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 39 | ||||
-rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.cpp | 19 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.h | 16 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 17 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 32 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 | ||||
-rw-r--r-- | src/server/shared/Database/Implementation/CharacterDatabase.cpp | 2 |
10 files changed, 72 insertions, 62 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index be2563ea0ee..9ad7a364fc2 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -25919,7 +25919,7 @@ void Player::AddKnownCurrency(uint32 itemId) void Player::UpdateFallInformationIfNeed(MovementInfo const& minfo, uint16 opcode) { - if (m_lastFallTime >= minfo.jump.fallTime || m_lastFallZ <= minfo.pos.GetPositionZ() || opcode == MSG_MOVE_FALL_LAND) + if (m_lastFallTime >= minfo.jump.fallTime || m_lastFallZ <= minfo.pos.GetPositionZ() || opcode == CMSG_MOVE_FALL_LAND) SetFallInformation(minfo.jump.fallTime, minfo.pos.GetPositionZ()); } diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 3a083bb0a03..797f7de6210 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -2190,43 +2190,16 @@ void WorldSession::HandleRandomizeCharNameOpcode(WorldPacket& recvData) SendPacket(&data); } -void WorldSession::HandleReorderCharacters(WorldPacket& recvData) +void WorldSession::HandleReorderCharacters(WorldPackets::Character::ReorderCharacters& reorderChars) { - uint32 charactersCount = std::min<uint32>(recvData.ReadBits(10), sWorld->getIntConfig(CONFIG_CHARACTERS_PER_REALM)); - - std::vector<ObjectGuid> guids(charactersCount); - uint8 position; - - for (uint8 i = 0; i < charactersCount; ++i) - { - guids[i][1] = recvData.ReadBit(); - guids[i][4] = recvData.ReadBit(); - guids[i][5] = recvData.ReadBit(); - guids[i][3] = recvData.ReadBit(); - guids[i][0] = recvData.ReadBit(); - guids[i][7] = recvData.ReadBit(); - guids[i][6] = recvData.ReadBit(); - guids[i][2] = recvData.ReadBit(); - } - SQLTransaction trans = CharacterDatabase.BeginTransaction(); - for (uint8 i = 0; i < charactersCount; ++i) - { - recvData.ReadByteSeq(guids[i][6]); - recvData.ReadByteSeq(guids[i][5]); - recvData.ReadByteSeq(guids[i][1]); - recvData.ReadByteSeq(guids[i][4]); - recvData.ReadByteSeq(guids[i][0]); - recvData.ReadByteSeq(guids[i][3]); - - recvData >> position; - - recvData.ReadByteSeq(guids[i][2]); - recvData.ReadByteSeq(guids[i][7]); + for (WorldPackets::Character::ReorderCharacters::ReorderInfo const& reorderInfo : reorderChars.Entries) + { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_LIST_SLOT); - stmt->setUInt8(0, position); - stmt->setUInt64(1, guids[i].GetCounter()); + stmt->setUInt8(0, reorderInfo.NewPosition); + stmt->setUInt64(1, reorderInfo.PlayerGUID.GetCounter()); + stmt->setUInt32(2, GetAccountId()); trans->Append(stmt); } diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 788ebd693dd..a96cd9220ac 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -2005,7 +2005,7 @@ void WorldSession::HandleUpdateMissileTrajectory(WorldPacket& recvPacket) { uint32 opcode; recvPacket >> opcode; - recvPacket.SetOpcode(MSG_MOVE_STOP); // always set to MSG_MOVE_STOP in client SetOpcode + recvPacket.SetOpcode(CMSG_MOVE_STOP); // always set to CMSG_MOVE_STOP in client SetOpcode HandleMovementOpcodes(recvPacket); } } diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 3518bcd92f0..eebccd7408a 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -348,7 +348,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvPacket) plrMover->m_transport->RemovePassenger(plrMover); // 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 && plrMover && !plrMover->IsInFlight()) + if (opcode == CMSG_MOVE_FALL_LAND && plrMover && !plrMover->IsInFlight()) plrMover->HandleFall(movementInfo); if (plrMover && ((movementInfo.flags & MOVEMENTFLAG_SWIMMING) != 0) != plrMover->IsInWater()) diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 4b73b48aa76..500799989fc 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -17,6 +17,7 @@ #include "CharacterPackets.h" #include "ObjectMgr.h" +#include "World.h" WorldPackets::Character::CharEnumResult::CharacterInfo::CharacterInfo(Field* fields) { @@ -240,6 +241,24 @@ WorldPacket const* WorldPackets::Character::CharacterDeleteResponse::Write() return &_worldPacket; } +WorldPackets::Character::ReorderCharacters::ReorderCharacters(WorldPacket&& packet) + : ClientPacket(std::move(packet)) +{ + ASSERT(_worldPacket.GetOpcode() == CMSG_REORDER_CHARACTERS); +} + +void WorldPackets::Character::ReorderCharacters::Read() +{ + uint32 count = std::min<uint32>(_worldPacket.ReadBits(9), sWorld->getIntConfig(CONFIG_CHARACTERS_PER_REALM)); + while (count--) + { + ReorderInfo reorderInfo; + _worldPacket >> reorderInfo.PlayerGUID; + _worldPacket >> reorderInfo.NewPosition; + Entries.emplace_back(reorderInfo); + } +} + WorldPackets::Character::UndeleteCharacter::UndeleteCharacter(WorldPacket&& packet) : ClientPacket(std::move(packet)) { diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 465b1ee8ffb..4bb97d8a2d2 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -203,6 +203,22 @@ namespace WorldPackets uint8 Code = 0; ///< Result code @see enum ResponseCodes }; + class ReorderCharacters final : public ClientPacket + { + public: + struct ReorderInfo + { + ObjectGuid PlayerGUID; + uint8 NewPosition = 0; + }; + + ReorderCharacters(WorldPacket&& packet); + + void Read() override; + + std::list<ReorderInfo> Entries; + }; + class UndeleteCharacter final : public ClientPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 30d9b657a5f..c47b73b79eb 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -421,14 +421,20 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_GRAVITY_DISABLE_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_GRAVITY_ENABLE_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_HEARTBEAT, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_HOVER_ACK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveHoverAck ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_FALL_LAND, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_KNOCK_BACK_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveKnockBackAck ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_JUMP, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_NOT_ACTIVE_MOVER, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveNotActiveMover ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_SET_CAN_FLY, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_SET_CAN_FLY_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveSetCanFlyAckOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_SET_COLLISION_HEIGHT_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleSetCollisionHeightAck ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_SPLINE_DONE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveSplineDoneOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_BACKWARD, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_FORWARD, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_STOP, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_TIME_SKIPPED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleMoveTimeSkippedOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_WATER_WALK_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveWaterWalkAck ); DEFINE_OPCODE_HANDLER_OLD(CMSG_NAME_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleNameQueryOpcode ); @@ -493,7 +499,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_RECLAIM_CORPSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReclaimCorpseOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REDIRECTION_AUTH_PROOF, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REFORGE_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleReforgeItemOpcode ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_REORDER_CHARACTERS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleReorderCharacters ); + DEFINE_HANDLER(CMSG_REORDER_CHARACTERS, STATUS_AUTHED, PROCESS_INPLACE, WorldPackets::Character::ReorderCharacters, &WorldSession::HandleReorderCharacters); DEFINE_OPCODE_HANDLER_OLD(CMSG_REPAIR_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRepairItemOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REPOP_REQUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRepopRequestOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REPORT_PVP_AFK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReportPvPAFK ); @@ -542,10 +548,11 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_PET_SLOT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_PLAYER_DECLINED_NAMES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetPlayerDeclinedNames ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_PREFERED_CEMETERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_PRIMARY_TALENT_TREE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_RELATIVE_POSITION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SAVED_INSTANCE_EXTEND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetSavedInstanceExtend ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SELECTION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleSetSelectionOpcode ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SKILL_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SPECIALIZATION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_TAXI_BENCHMARK_MODE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTaxiBenchmarkOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_TITLE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTitleOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_TRADE_CURRENCY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -619,17 +626,12 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(MSG_LIST_STABLED_PETS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleListStabledPetsOpcode ); DEFINE_OPCODE_HANDLER_OLD(MSG_MINIMAP_PING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMinimapPingOpcode ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_CHARM_TELEPORT_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_FALL_LAND, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); - DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_HEARTBEAT, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); - DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_JUMP, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_SET_FACING, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_SET_PITCH, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_SET_RUN_MODE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_SET_WALK_MODE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_ASCEND, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); - DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_BACKWARD, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_DESCEND, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); - DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_FORWARD, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_PITCH_DOWN, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_PITCH_UP, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_STRAFE_LEFT, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); @@ -637,7 +639,6 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_SWIM, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_TURN_LEFT, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_TURN_RIGHT, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); - DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_STOP, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_STOP_ASCEND, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_STOP_PITCH, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_STOP_STRAFE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 6023f45adb0..c448eda80fb 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -43,7 +43,7 @@ enum OpcodeClient : uint32 CMSG_ACTIVATETAXIEXPRESS = 0xBADD, CMSG_ADDON_REGISTERED_PREFIXES = 0x03F4, CMSG_ADD_FRIEND = 0xBADD, - CMSG_ADD_IGNORE = 0xBADD, + CMSG_ADD_IGNORE = 0x1321, CMSG_ADD_VOICE_IGNORE = 0xBADD, CMSG_ALTER_APPEARANCE = 0xBADD, CMSG_AREATRIGGER = 0x01B4, @@ -206,7 +206,7 @@ enum OpcodeClient : uint32 CMSG_FAR_SIGHT = 0xBADD, CMSG_FORCE_MOVE_ROOT_ACK = 0xBADD, CMSG_FORCE_MOVE_UNROOT_ACK = 0xBADD, - CMSG_GAMEOBJECT_QUERY = 0x0D97, + CMSG_GAMEOBJECT_QUERY = 0x03AE, CMSG_GAMEOBJ_REPORT_USE = 0x082E, CMSG_GAMEOBJ_USE = 0xBADD, CMSG_GAMESPEED_SET = 0xBADD, @@ -377,8 +377,11 @@ enum OpcodeClient : uint32 CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0xBADD, CMSG_MOVE_GRAVITY_DISABLE_ACK = 0xBADD, CMSG_MOVE_GRAVITY_ENABLE_ACK = 0xBADD, + CMSG_MOVE_HEARTBEAT = 0x19C1, CMSG_MOVE_HOVER_ACK = 0xBADD, + CMSG_MOVE_JUMP = 0x0282, CMSG_MOVE_KNOCK_BACK_ACK = 0xBADD, + CMSG_MOVE_FALL_LAND = 0x0D54, CMSG_MOVE_NOT_ACTIVE_MOVER = 0xBADD, CMSG_MOVE_SET_CAN_FLY = 0xBADD, CMSG_MOVE_SET_CAN_FLY_ACK = 0xBADD, @@ -387,6 +390,9 @@ enum OpcodeClient : uint32 CMSG_MOVE_SET_RELATIVE_POSITION = 0xBADD, CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0xBADD, CMSG_MOVE_SPLINE_DONE = 0xBADD, + CMSG_MOVE_START_BACKWARD = 0x0583, + CMSG_MOVE_START_FORWARD = 0x0521, + CMSG_MOVE_STOP = 0x0513, CMSG_MOVE_TIME_SKIPPED = 0x19C2, CMSG_MOVE_TOGGLE_COLLISION_ACK = 0xBADD, CMSG_MOVE_WATER_WALK_ACK = 0xBADD, @@ -409,7 +415,7 @@ enum OpcodeClient : uint32 CMSG_PETITION_SHOW_SIGNATURES = 0xBADD, CMSG_PETITION_SIGN = 0xBADD, CMSG_PET_ABANDON = 0xBADD, - CMSG_PET_ACTION = 0xBADD, + CMSG_PET_ACTION = 0x133A, CMSG_PET_CANCEL_AURA = 0xBADD, CMSG_PET_CAST_SPELL = 0xBADD, CMSG_PET_LEARN_TALENT = 0xBADD, @@ -453,7 +459,7 @@ enum OpcodeClient : uint32 CMSG_QUEST_NPC_QUERY = 0x0B81, CMSG_QUEST_POI_QUERY = 0x0BD9, CMSG_QUEST_QUERY = 0x09A6, - CMSG_RANDOMIZE_CHAR_NAME = 0xBADD, + CMSG_RANDOMIZE_CHAR_NAME = 0x1981, CMSG_READ_ITEM = 0xBADD, CMSG_REALM_SPLIT = 0xBADD, CMSG_RECLAIM_CORPSE = 0xBADD, @@ -516,12 +522,12 @@ enum OpcodeClient : uint32 CMSG_SET_PET_SLOT = 0xBADD, CMSG_SET_PLAYER_DECLINED_NAMES = 0xBADD, CMSG_SET_PREFERED_CEMETERY = 0xBADD, - CMSG_SET_PRIMARY_TALENT_TREE = 0xBADD, CMSG_SET_RAID_DIFFICULTY = 0x04DF, CMSG_SET_RELATIVE_POSITION = 0xBADD, CMSG_SET_SAVED_INSTANCE_EXTEND = 0xBADD, CMSG_SET_SELECTION = 0x05BD, CMSG_SET_SKILL_CHEAT = 0xBADD, + CMSG_SET_SPECIALIZATION = 0x0AC5, CMSG_SET_TAXI_BENCHMARK_MODE = 0xBADD, CMSG_SET_TITLE = 0xBADD, CMSG_SET_TRADE_CURRENCY = 0xBADD, @@ -529,8 +535,8 @@ enum OpcodeClient : uint32 CMSG_SET_TRADE_ITEM = 0xBADD, CMSG_SET_VEHICLE_REC_ID_ACK = 0xBADD, CMSG_SET_WATCHED_FACTION = 0xBADD, - CMSG_SHOWING_CLOAK = 0xBADD, - CMSG_SHOWING_HELM = 0xBADD, + CMSG_SHOWING_CLOAK = 0x0132, + CMSG_SHOWING_HELM = 0x11E1, CMSG_SOCKET_GEMS = 0xBADD, CMSG_SPELLCLICK = 0xBADD, CMSG_SPIRIT_HEALER_ACTIVATE = 0xBADD, @@ -580,7 +586,7 @@ enum OpcodeClient : uint32 CMSG_USE_ITEM = 0xBADD, CMSG_VIOLENCE_LEVEL = 0x098D, CMSG_VOICE_SESSION_ENABLE = 0xBADD, - CMSG_VOID_STORAGE_QUERY = 0xBADD, + CMSG_VOID_STORAGE_QUERY = 0x019E, CMSG_VOID_STORAGE_TRANSFER = 0xBADD, CMSG_VOID_STORAGE_UNLOCK = 0xBADD, CMSG_VOID_SWAP_ITEM = 0xBADD, @@ -604,9 +610,6 @@ enum OpcodeClient : uint32 MSG_LIST_STABLED_PETS = 0xBADD, MSG_MINIMAP_PING = 0xBADD, MSG_MOVE_CHARM_TELEPORT_CHEAT = 0xBADD, - MSG_MOVE_FALL_LAND = 0xBADD, - MSG_MOVE_HEARTBEAT = 0xBADD, - MSG_MOVE_JUMP = 0xBADD, MSG_MOVE_SET_ALL_SPEED_CHEAT = 0xBADD, MSG_MOVE_SET_COLLISION_HEIGHT = 0xBADD, MSG_MOVE_SET_FACING = 0xBADD, @@ -622,9 +625,7 @@ enum OpcodeClient : uint32 MSG_MOVE_SET_WALK_MODE = 0xBADD, MSG_MOVE_SET_WALK_SPEED_CHEAT = 0xBADD, MSG_MOVE_START_ASCEND = 0xBADD, - MSG_MOVE_START_BACKWARD = 0xBADD, MSG_MOVE_START_DESCEND = 0xBADD, - MSG_MOVE_START_FORWARD = 0xBADD, MSG_MOVE_START_PITCH_DOWN = 0xBADD, MSG_MOVE_START_PITCH_UP = 0xBADD, MSG_MOVE_START_STRAFE_LEFT = 0xBADD, @@ -632,7 +633,6 @@ enum OpcodeClient : uint32 MSG_MOVE_START_SWIM = 0xBADD, MSG_MOVE_START_TURN_LEFT = 0xBADD, MSG_MOVE_START_TURN_RIGHT = 0xBADD, - MSG_MOVE_STOP = 0xBADD, MSG_MOVE_STOP_ASCEND = 0xBADD, MSG_MOVE_STOP_PITCH = 0xBADD, MSG_MOVE_STOP_STRAFE = 0xBADD, @@ -1165,7 +1165,7 @@ enum OpcodeServer : uint32 SMSG_PET_REMOVED_SPELL = 0xBADD, SMSG_PET_RENAMEABLE = 0xBADD, SMSG_PET_SLOT_UPDATED = 0xBADD, - SMSG_PET_SPELLS = 0xBADD, + SMSG_PET_SPELLS = 0x0174, SMSG_PET_TAME_FAILURE = 0xBADD, SMSG_PET_UPDATE_COMBO_POINTS = 0xBADD, SMSG_PLAYED_TIME = 0xBADD, @@ -1394,7 +1394,7 @@ enum OpcodeServer : uint32 SMSG_VOICE_SESSION_ROSTER_UPDATE = 0xBADD, SMSG_VOICE_SET_TALKER_MUTED = 0xBADD, SMSG_VOID_ITEM_SWAP_RESPONSE = 0xBADD, - SMSG_VOID_STORAGE_CONTENTS = 0xBADD, + SMSG_VOID_STORAGE_CONTENTS = 0x0108, SMSG_VOID_STORAGE_FAILED = 0xBADD, SMSG_VOID_STORAGE_TRANSFER_CHANGES = 0xBADD, SMSG_VOID_TRANSFER_RESULT = 0xBADD, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 6bda4e2d162..600936004d7 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -84,6 +84,7 @@ namespace WorldPackets class CharacterCreate; class CharacterDelete; + class ReorderCharacters; class UndeleteCharacter; class PlayerLogin; } @@ -442,7 +443,7 @@ class WorldSession void HandleAlterAppearance(WorldPacket& recvData); void HandleCharFactionOrRaceChange(WorldPacket& recvData); void HandleRandomizeCharNameOpcode(WorldPacket& recvData); - void HandleReorderCharacters(WorldPacket& recvData); + void HandleReorderCharacters(WorldPackets::Character::ReorderCharacters& reorderChars); void HandleOpeningCinematic(WorldPacket& recvData); void HandleUndeleteCooldownStatusQuery(WorldPacket& /*recvData*/); void HandleUndeleteCooldownStatusCallback(PreparedQueryResult result); diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 796b5d27a1e..51b5bf1d30b 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -567,7 +567,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_DEL_CHAR_TALENT_BY_SPELL_SPEC, "DELETE FROM character_talent WHERE guid = ? and spell = ? and spec = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_CHAR_TALENT, "INSERT INTO character_talent (guid, spell, spec) VALUES (?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_CHAR_ACTION_EXCEPT_SPEC, "DELETE FROM character_action WHERE spec<>? AND guid = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_UPD_CHAR_LIST_SLOT, "UPDATE characters SET slot = ? WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_UPD_CHAR_LIST_SLOT, "UPDATE characters SET slot = ? WHERE guid = ? AND account = ?", CONNECTION_ASYNC); // Void Storage PrepareStatement(CHAR_SEL_CHAR_VOID_STORAGE, "SELECT itemId, itemEntry, slot, creatorGuid, randomProperty, suffixFactor FROM character_void_storage WHERE playerGuid = ?", CONNECTION_ASYNC); |