aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2014-11-06 02:59:59 +0100
committerjoschiwald <joschiwald.trinity@gmail.com>2014-11-06 02:59:59 +0100
commitdb7c07246a9eff609c711971d6f98413d38be97f (patch)
treed0a969ee81385de55ef4ff69ec14577f4d6609be /src
parent3cb4b7359e51aa22b58591ca55112b9b19ca71ef (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.cpp2
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp39
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp2
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp2
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp19
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h16
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp17
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h32
-rw-r--r--src/server/game/Server/WorldSession.h3
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.cpp2
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);