aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2014-11-12 16:36:05 +0100
committerjoschiwald <joschiwald.trinity@gmail.com>2014-11-12 16:36:05 +0100
commitf4926e0a8c0c028d6b50ee28aabde720a93cf280 (patch)
tree0f397d5928fde3cdc71338924cdc26b57e000b6d /src/server/game/Server
parent61a6daf08613f37a1207e1387aa703578d298803 (diff)
Core/Packets: updated char rename customize and factionchange packets
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp92
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h127
-rw-r--r--src/server/game/Server/Packets/WorldStatePackets.cpp2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp53
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h118
-rw-r--r--src/server/game/Server/WorldSession.cpp21
-rw-r--r--src/server/game/Server/WorldSession.h27
7 files changed, 331 insertions, 109 deletions
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index 7f6fefbf058..9a187ac7ead 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -220,6 +220,98 @@ WorldPacket const* WorldPackets::Character::CharacterDeleteResponse::Write()
return &_worldPacket;
}
+void WorldPackets::Character::CharacterRenameRequest::Read()
+{
+ RenameInfo.reset(new CharacterRenameInfo());
+ _worldPacket >> RenameInfo->Guid;
+ RenameInfo->NewName = _worldPacket.ReadString(_worldPacket.ReadBits(6));
+}
+
+WorldPacket const* WorldPackets::Character::CharacterRenameResult::Write()
+{
+ _worldPacket << uint8(Result);
+ _worldPacket.WriteBit(Guid.HasValue);
+ _worldPacket.WriteBits(Name.length(), 6);
+
+ if (Guid.HasValue)
+ _worldPacket << Guid.value;
+
+ _worldPacket.WriteString(Name);
+ return &_worldPacket;
+}
+
+void WorldPackets::Character::CharCustomize::Read()
+{
+ CustomizeInfo.reset(new CharCustomizeInfo());
+ _worldPacket >> CustomizeInfo->CharGUID;
+ _worldPacket >> CustomizeInfo->SexID;
+ _worldPacket >> CustomizeInfo->SkinID;
+ _worldPacket >> CustomizeInfo->HairColorID;
+ _worldPacket >> CustomizeInfo->HairStyleID;
+ _worldPacket >> CustomizeInfo->FacialHairStyleID;
+ _worldPacket >> CustomizeInfo->FaceID;
+ CustomizeInfo->CharName = _worldPacket.ReadString(_worldPacket.ReadBits(6));
+}
+
+void WorldPackets::Character::CharRaceOrFactionChange::Read()
+{
+ RaceOrFactionChangeInfo.reset(new CharRaceOrFactionChangeInfo());
+
+ RaceOrFactionChangeInfo->FactionChange = _worldPacket.ReadBit();
+
+ uint32 nameLength = _worldPacket.ReadBits(6);
+
+ RaceOrFactionChangeInfo->SkinID.HasValue = _worldPacket.ReadBit();
+ RaceOrFactionChangeInfo->HairColorID.HasValue = _worldPacket.ReadBit();
+ RaceOrFactionChangeInfo->HairStyleID.HasValue = _worldPacket.ReadBit();
+ RaceOrFactionChangeInfo->FacialHairStyleID.HasValue = _worldPacket.ReadBit();
+ RaceOrFactionChangeInfo->FaceID.HasValue = _worldPacket.ReadBit();
+
+ _worldPacket >> RaceOrFactionChangeInfo->Guid;
+ _worldPacket >> RaceOrFactionChangeInfo->SexID;
+ _worldPacket >> RaceOrFactionChangeInfo->RaceID;
+
+ RaceOrFactionChangeInfo->Name = _worldPacket.ReadString(nameLength);
+
+ if (RaceOrFactionChangeInfo->SkinID.HasValue)
+ _worldPacket >> RaceOrFactionChangeInfo->SkinID.value;
+
+ if (RaceOrFactionChangeInfo->HairColorID.HasValue)
+ _worldPacket >> RaceOrFactionChangeInfo->HairColorID.value;
+
+ if (RaceOrFactionChangeInfo->HairStyleID.HasValue)
+ _worldPacket >> RaceOrFactionChangeInfo->HairStyleID.value;
+
+ if (RaceOrFactionChangeInfo->FacialHairStyleID.HasValue)
+ _worldPacket >> RaceOrFactionChangeInfo->FacialHairStyleID.value;
+
+ if (RaceOrFactionChangeInfo->FaceID.HasValue)
+ _worldPacket >> RaceOrFactionChangeInfo->FaceID.value;
+}
+
+WorldPacket const* WorldPackets::Character::CharFactionChangeResult::Write()
+{
+ _worldPacket << uint8(Result);
+ _worldPacket << Guid;
+ _worldPacket.WriteBit(Display.HasValue);
+ _worldPacket.FlushBits();
+
+ if (Display.HasValue)
+ {
+ _worldPacket.WriteBits(Display.value.Name.length(), 6);
+ _worldPacket << uint8(Display.value.SexID);
+ _worldPacket << uint8(Display.value.SkinID);
+ _worldPacket << uint8(Display.value.HairColorID);
+ _worldPacket << uint8(Display.value.HairStyleID);
+ _worldPacket << uint8(Display.value.FacialHairStyleID);
+ _worldPacket << uint8(Display.value.FaceID);
+ _worldPacket << uint8(Display.value.RaceID);
+ _worldPacket.WriteString(Display.value.Name);
+ }
+
+ return &_worldPacket;
+}
+
void WorldPackets::Character::GenerateRandomCharacterName::Read()
{
_worldPacket >> Race;
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index f2bec8e2510..017f2d6b122 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -46,23 +46,34 @@ namespace WorldPackets
struct CharacterRenameInfo
{
+ std::string NewName;
ObjectGuid Guid;
- std::string Name;
};
- struct CharacterCustomizeInfo : public CharacterRenameInfo
+ struct CharCustomizeInfo
{
- uint8 Gender = GENDER_NONE;
- uint8 Skin = 0;
- uint8 Face = 0;
- uint8 HairStyle = 0;
- uint8 HairColor = 0;
- uint8 FacialHair = 0;
+ uint8 HairStyleID = 0;
+ uint8 FaceID = 0;
+ ObjectGuid CharGUID;
+ uint8 SexID = GENDER_NONE;
+ std::string CharName;
+ uint8 HairColorID = 0;
+ uint8 FacialHairStyleID = 0;
+ uint8 SkinID = 0;
};
- struct CharacterFactionChangeInfo : public CharacterCustomizeInfo
+ struct CharRaceOrFactionChangeInfo
{
- uint8 Race = RACE_NONE;
+ Optional<uint8> HairColorID;
+ uint8 RaceID = RACE_NONE;
+ uint8 SexID = GENDER_NONE;
+ Optional<uint8> SkinID;
+ Optional<uint8> FacialHairStyleID;
+ ObjectGuid Guid;
+ bool FactionChange = false;
+ std::string Name;
+ Optional<uint8> FaceID;
+ Optional<uint8> HairStyleID;
};
struct CharacterUndeleteInfo
@@ -203,6 +214,100 @@ namespace WorldPackets
uint8 Code = 0; ///< Result code @see enum ResponseCodes
};
+ class CharacterRenameRequest final : public ClientPacket
+ {
+ public:
+ CharacterRenameRequest(WorldPacket&& packet) : ClientPacket(CMSG_CHAR_RENAME, std::move(packet)) { }
+
+ void Read() override;
+
+ /**
+ * @var std::string NewName
+ * @var ObjectGuid Guid
+ */
+ std::shared_ptr<CharacterRenameInfo> RenameInfo;
+ };
+
+ class CharacterRenameResult final : public ServerPacket
+ {
+ public:
+ CharacterRenameResult() : ServerPacket(SMSG_CHAR_RENAME, 20) { }
+
+ WorldPacket const* Write() override;
+
+ std::string Name;
+ uint8 Result = 0;
+ Optional<ObjectGuid> Guid;
+ };
+
+ class CharCustomize final : public ClientPacket
+ {
+ public:
+ CharCustomize(WorldPacket&& packet) : ClientPacket(CMSG_CHAR_CUSTOMIZE, std::move(packet)) { }
+
+ void Read() override;
+
+ /**
+ * @var uint8 HairStyleID
+ * @var uint8 FaceID
+ * @var ObjectGuid CharGUID
+ * @var uint8 SexID
+ * @var std::string CharName
+ * @var uint8 HairColorID
+ * @var uint8 FacialHairStyleID
+ * @var uint8 SkinID
+ */
+ std::shared_ptr<CharCustomizeInfo> CustomizeInfo;
+ };
+
+ /// @todo: CharCustomizeResult
+
+ class CharRaceOrFactionChange final : public ClientPacket
+ {
+ public:
+ CharRaceOrFactionChange(WorldPacket&& packet) : ClientPacket(CMSG_CHAR_RACE_OR_FACTION_CHANGE, std::move(packet)) { }
+
+ void Read() override;
+
+ /**
+ * @var Optional<uint8> HairColorID
+ * @var uint8 RaceID
+ * @var uint8 SexID
+ * @var Optional<uint8> SkinID
+ * @var Optional<uint8> FacialHairStyleID
+ * @var ObjectGuid Guid
+ * @var bool FactionChange
+ * @var std::string Name
+ * @var Optional<uint8> FaceID
+ * @var Optional<uint8> HairStyleID
+ */
+ std::shared_ptr<CharRaceOrFactionChangeInfo> RaceOrFactionChangeInfo;
+ };
+
+ class CharFactionChangeResult final : public ServerPacket
+ {
+ public:
+ struct CharFactionChangeDisplayInfo
+ {
+ std::string Name;
+ uint8 SexID = 0;
+ uint8 SkinID = 0;
+ uint8 HairColorID = 0;
+ uint8 HairStyleID = 0;
+ uint8 FacialHairStyleID = 0;
+ uint8 FaceID = 0;
+ uint8 RaceID = RACE_NONE;
+ };
+
+ CharFactionChangeResult() : ServerPacket(SMSG_CHAR_FACTION_CHANGE, 20 + sizeof(CharFactionChangeDisplayInfo)) { }
+
+ WorldPacket const* Write() override;
+
+ uint8 Result = 0; ///< @see enum ResponseCodes
+ ObjectGuid Guid;
+ Optional<CharFactionChangeDisplayInfo> Display;
+ };
+
class GenerateRandomCharacterName final : public ClientPacket
{
public:
@@ -217,7 +322,7 @@ namespace WorldPackets
class GenerateRandomCharacterNameResult final : public ServerPacket
{
public:
- GenerateRandomCharacterNameResult(): ServerPacket(SMSG_RANDOMIZE_CHAR_NAME, 20) { }
+ GenerateRandomCharacterNameResult() : ServerPacket(SMSG_RANDOMIZE_CHAR_NAME, 20) { }
WorldPacket const* Write() override;
diff --git a/src/server/game/Server/Packets/WorldStatePackets.cpp b/src/server/game/Server/Packets/WorldStatePackets.cpp
index 7d062841003..919ad11e738 100644
--- a/src/server/game/Server/Packets/WorldStatePackets.cpp
+++ b/src/server/game/Server/Packets/WorldStatePackets.cpp
@@ -32,7 +32,7 @@ WorldPacket const* WorldPackets::WorldState::InitWorldStates::Write()
for (WorldStateInfo const& wsi : Worldstates)
{
_worldPacket << uint32(wsi.VariableID);
- _worldPacket << uint32(wsi.Value);
+ _worldPacket << int32(wsi.Value);
}
return &_worldPacket;
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index b9611e361e8..9f9f11e8fa2 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -224,12 +224,11 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_CHANNEL_VOICE_OFF, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelVoiceOnOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_CHANNEL_VOICE_ON, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelVoiceOnOpcode );
DEFINE_HANDLER(CMSG_CHAR_CREATE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharacterCreate, &WorldSession::HandleCharCreateOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAR_CUSTOMIZE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharCustomize );
+ DEFINE_HANDLER(CMSG_CHAR_CUSTOMIZE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharCustomize, &WorldSession::HandleCharCustomizeOpcode);
DEFINE_HANDLER(CMSG_CHAR_DELETE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharacterDelete, &WorldSession::HandleCharDeleteOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAR_ENUM, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharEnumOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAR_FACTION_CHANGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharFactionOrRaceChange );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAR_RACE_CHANGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharFactionOrRaceChange );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAR_RENAME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharRenameOpcode );
+ DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharRaceOrFactionChange, &WorldSession::HandleCharRaceOrFactionChangeOpcode);
+ DEFINE_HANDLER(CMSG_CHAR_RENAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CharacterRenameRequest, &WorldSession::HandleCharRenameOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAR_UNDELETE_ENUM, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteEnumOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_FILTERED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_IGNORED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChatIgnoredOpcode );
@@ -441,12 +440,31 @@ void OpcodeTable::Initialize()
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_SET_FACING, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_SET_PITCH, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_SET_RUN_MODE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_SET_WALK_MODE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_SPLINE_DONE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveSplineDoneOpcode );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_ASCEND, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_BACKWARD, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_DESCEND, 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_START_PITCH_DOWN, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_PITCH_UP, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_STRAFE_LEFT, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_STRAFE_RIGHT, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_SWIM, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_TURN_LEFT, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_START_TURN_RIGHT, 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_STOP_ASCEND, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_STOP_PITCH, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_STOP_STRAFE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_STOP_SWIM, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_STOP_TURN, 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_MOVE_WORLDPORT_ACK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode );
DEFINE_HANDLER(CMSG_NAME_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::QueryPlayerName, &WorldSession::HandleNameQueryOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_NEXT_CINEMATIC_CAMERA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleNextCinematicCamera );
DEFINE_OPCODE_HANDLER_OLD(CMSG_NPC_TEXT_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleNpcTextQueryOpcode );
@@ -504,6 +522,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUEST_POI_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestPOIQuery );
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUEST_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestQueryOpcode );
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUEUED_MESSAGES_END, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
+ DEFINE_OPCODE_HANDLER_OLD(CMSG_RANDOM_ROLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode );
DEFINE_HANDLER(CMSG_RANDOMIZE_CHAR_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::GenerateRandomCharacterName, &WorldSession::HandleRandomizeCharNameOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_READ_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReadItem );
DEFINE_OPCODE_HANDLER_OLD(CMSG_REALM_SPLIT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRealmSplitOpcode );
@@ -635,30 +654,11 @@ 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_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_DESCEND, 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 );
- DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_START_STRAFE_RIGHT, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
- 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_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 );
- DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_STOP_SWIM, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
- DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_STOP_TURN, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_TELEPORT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_TELEPORT_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveTeleportAck );
DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_TELEPORT_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_TIME_SKIPPED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_TOGGLE_COLLISION_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- DEFINE_OPCODE_HANDLER_OLD(MSG_MOVE_WORLDPORT_ACK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode );
DEFINE_OPCODE_HANDLER_OLD(MSG_NOTIFY_PARTY_SQUELCH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(MSG_PARTY_ASSIGNMENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyAssignmentOpcode );
DEFINE_OPCODE_HANDLER_OLD(MSG_PETITION_DECLINE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetitionDeclineOpcode );
@@ -797,10 +797,11 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHARACTER_LOGIN_FAILED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CREATE, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_CUSTOMIZE_RESULT, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_DELETE, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_ENUM, STATUS_NEVER);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_FACTION_CHANGE, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_RENAME, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_FACTION_CHANGE, STATUS_NEVER);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAR_RENAME, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_IGNORED_ACCOUNT_MUTED, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_NOT_IN_PARTY, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_PLAYER_AMBIGUOUS, STATUS_UNHANDLED);
@@ -1073,6 +1074,8 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_COLLISION_DISABLE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_COLLISION_ENABLE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_FEATHER_FALL, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_FORCE_RUN_SPEED_CHANGE, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_FORCE_SWIM_SPEED_CHANGE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_GRAVITY_DISABLE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_GRAVITY_ENABLE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_KNOCK_BACK, STATUS_UNHANDLED);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index a77793ce6dd..c5e92afa690 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -45,8 +45,8 @@ enum OpcodeClient : uint32
{
CMSG_ACCEPT_LEVEL_GRANT = 0xBADD,
CMSG_ACCEPT_TRADE = 0xBADD,
- CMSG_ACTIVATETAXI = 0xBADD,
- CMSG_ACTIVATETAXIEXPRESS = 0xBADD,
+ CMSG_ACTIVATETAXI = 0x0311,
+ CMSG_ACTIVATETAXIEXPRESS = 0x1B52,
CMSG_ADDON_REGISTERED_PREFIXES = 0x03F4,
CMSG_ADD_FRIEND = 0x0DB9,
CMSG_ADD_IGNORE = 0x1321,
@@ -66,8 +66,8 @@ enum OpcodeClient : uint32
CMSG_ARENA_TEAM_QUERY = 0xBADD,
CMSG_ARENA_TEAM_REMOVE = 0xBADD,
CMSG_ARENA_TEAM_ROSTER = 0xBADD,
- CMSG_ATTACKSTOP = 0xBADD,
- CMSG_ATTACKSWING = 0xBADD,
+ CMSG_ATTACKSTOP = 0x065B,
+ CMSG_ATTACKSWING = 0x1E9B,
CMSG_AUCTION_HELLO = 0x13EA,
CMSG_AUCTION_LIST_BIDDER_ITEMS = 0xBADD,
CMSG_AUCTION_LIST_ITEMS = 0xBADD,
@@ -108,12 +108,12 @@ enum OpcodeClient : uint32
CMSG_BATTLE_PAY_GET_PURCHASE_LIST_QUERY = 0x120C,
CMSG_BATTLE_PET_NAME_QUERY = 0x041C,
CMSG_BEGIN_TRADE = 0xBADD,
- CMSG_BINDER_ACTIVATE = 0xBADD,
+ CMSG_BINDER_ACTIVATE = 0x02F3,
CMSG_BOT_DETECTED2 = 0xBADD,
CMSG_BUG = 0xBADD,
CMSG_BUSY_TRADE = 0xBADD,
- CMSG_BUYBACK_ITEM = 0xBADD,
- CMSG_BUY_BANK_SLOT = 0xBADD,
+ CMSG_BUYBACK_ITEM = 0x02D3,
+ CMSG_BUY_BANK_SLOT = 0x0A25,
CMSG_BUY_ITEM = 0xBADD,
CMSG_CALENDAR_ADD_EVENT = 0xBADD,
CMSG_CALENDAR_ARENA_TEAM = 0xBADD,
@@ -167,12 +167,11 @@ enum OpcodeClient : uint32
CMSG_CHANNEL_VOICE_OFF = 0xBADD,
CMSG_CHANNEL_VOICE_ON = 0xBADD,
CMSG_CHAR_CREATE = 0x070D,
- CMSG_CHAR_CUSTOMIZE = 0xBADD,
+ CMSG_CHAR_CUSTOMIZE = 0x072A,
CMSG_CHAR_DELETE = 0x030E,
CMSG_CHAR_ENUM = 0x0918,
- CMSG_CHAR_FACTION_CHANGE = 0xBADD,
- CMSG_CHAR_RACE_CHANGE = 0xBADD,
- CMSG_CHAR_RENAME = 0xBADD,
+ CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x1209,
+ CMSG_CHAR_RENAME = 0x038B,
CMSG_CHAR_UNDELETE_ENUM = 0x0F2D,
CMSG_CHAT_FILTERED = 0xBADD,
CMSG_CHAT_IGNORED = 0xBADD,
@@ -202,14 +201,14 @@ enum OpcodeClient : uint32
CMSG_DEL_IGNORE = 0x033D,
CMSG_DEL_MUTE = 0x0128,
CMSG_DEL_VOICE_IGNORE = 0xBADD,
- CMSG_DESTROY_ITEM = 0xBADD,
+ CMSG_DESTROY_ITEM = 0x01EE,
CMSG_DISMISS_CONTROLLED_VEHICLE = 0xBADD,
CMSG_DISMISS_CRITTER = 0xBADD,
CMSG_DUEL_ACCEPTED = 0xBADD,
CMSG_DUEL_CANCELLED = 0xBADD,
CMSG_EJECT_PASSENGER = 0xBADD,
CMSG_EMOTE = 0xBADD,
- CMSG_ENABLETAXI = 0xBADD,
+ CMSG_ENABLETAXI = 0x00D2,
CMSG_ENABLE_NAGLE = 0x0460,
CMSG_EQUIPMENT_SET_DELETE = 0xBADD,
CMSG_EQUIPMENT_SET_SAVE = 0x1B54,
@@ -219,8 +218,8 @@ enum OpcodeClient : uint32
CMSG_FORCE_MOVE_ROOT_ACK = 0x0B73,
CMSG_FORCE_MOVE_UNROOT_ACK = 0xBADD,
CMSG_GAMEOBJECT_QUERY = 0x03AE,
- CMSG_GAMEOBJ_REPORT_USE = 0x082E,
- CMSG_GAMEOBJ_USE = 0xBADD,
+ CMSG_GAMEOBJ_REPORT_USE = 0x0B19,
+ CMSG_GAMEOBJ_USE = 0x082E,
CMSG_GAMESPEED_SET = 0xBADD,
CMSG_GAMETIME_SET = 0xBADD,
CMSG_GETDEATHBINDZONE = 0xBADD,
@@ -287,13 +286,13 @@ enum OpcodeClient : uint32
CMSG_GUILD_PROMOTE = 0xBADD,
CMSG_GUILD_QUERY = 0x0930,
CMSG_GUILD_QUERY_NEWS = 0xBADD,
- CMSG_GUILD_QUERY_RANKS = 0xBADD,
+ CMSG_GUILD_QUERY_RANKS = 0x0C37,
CMSG_GUILD_REMOVE = 0xBADD,
CMSG_GUILD_REPLACE_GUILD_MASTER = 0xBADD,
CMSG_GUILD_REQUEST_CHALLENGE_UPDATE = 0xBADD,
CMSG_GUILD_REQUEST_MAX_DAILY_XP = 0xBADD,
CMSG_GUILD_REQUEST_PARTY_STATE = 0x0A8E,
- CMSG_GUILD_ROSTER = 0xBADD,
+ CMSG_GUILD_ROSTER = 0x0638,
CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0xBADD,
CMSG_GUILD_SET_GUILD_MASTER = 0xBADD,
CMSG_GUILD_SET_NOTE = 0xBADD,
@@ -338,7 +337,7 @@ enum OpcodeClient : uint32
CMSG_LOGOUT_CANCEL = 0x03C2,
CMSG_LOGOUT_REQUEST = 0x1911,
CMSG_LOG_DISCONNECT = 0x04D5,
- CMSG_LOOT = 0xBADD,
+ CMSG_LOOT = 0x01B1,
CMSG_LOOT_CURRENCY = 0xBADD,
CMSG_LOOT_MASTER_GIVE = 0xBADD,
CMSG_LOOT_METHOD = 0xBADD,
@@ -369,7 +368,7 @@ enum OpcodeClient : uint32
CMSG_MESSAGECHAT_RAID = 0xBADD,
CMSG_MESSAGECHAT_RAID_WARNING = 0xBADD,
CMSG_MESSAGECHAT_SAY = 0x1884,
- CMSG_MESSAGECHAT_WHISPER = 0xBADD,
+ CMSG_MESSAGECHAT_WHISPER = 0x1829,
CMSG_MESSAGECHAT_YELL = 0x1161,
CMSG_MINIGAME_MOVE = 0xBADD,
CMSG_MOUNTSPECIAL_ANIM = 0xBADD,
@@ -382,9 +381,9 @@ enum OpcodeClient : uint32
CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0xBADD,
CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0xBADD,
CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0xBADD,
- CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0xBADD,
+ CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK = 0x0B7C,
CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK = 0xBADD,
- CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0xBADD,
+ CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK = 0x008A,
CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK = 0xBADD,
CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0xBADD,
CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x0553,
@@ -399,15 +398,34 @@ enum OpcodeClient : uint32
CMSG_MOVE_SET_CAN_FLY_ACK = 0xBADD,
CMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY_ACK = 0xBADD,
CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x0141,
+ CMSG_MOVE_SET_FACING = 0x19D2,
+ CMSG_MOVE_SET_PITCH = 0x0D92,
CMSG_MOVE_SET_RELATIVE_POSITION = 0xBADD,
+ CMSG_MOVE_SET_RUN_MODE = 0x0D51,
CMSG_MOVE_SET_VEHICLE_REC_ID_ACK = 0xBADD,
+ CMSG_MOVE_SET_WALK_MODE = 0x0544,
CMSG_MOVE_SPLINE_DONE = 0xBADD,
+ CMSG_MOVE_START_ASCEND = 0x0D41,
CMSG_MOVE_START_BACKWARD = 0x0583,
+ CMSG_MOVE_START_DESCEND = 0x0B79,
CMSG_MOVE_START_FORWARD = 0x0521,
+ CMSG_MOVE_START_PITCH_DOWN = 0x1974,
+ CMSG_MOVE_START_PITCH_UP = 0x0151,
+ CMSG_MOVE_START_STRAFE_LEFT = 0x0082,
+ CMSG_MOVE_START_STRAFE_RIGHT = 0x1151,
+ CMSG_MOVE_START_SWIM = 0x0B7A,
+ CMSG_MOVE_START_TURN_LEFT = 0x000B,
+ CMSG_MOVE_START_TURN_RIGHT = 0x0D14,
CMSG_MOVE_STOP = 0x0513,
+ CMSG_MOVE_STOP_ASCEND = 0x197C,
+ CMSG_MOVE_STOP_PITCH = 0x0503,
+ CMSG_MOVE_STOP_STRAFE = 0x01D1,
+ CMSG_MOVE_STOP_SWIM = 0x097C,
+ CMSG_MOVE_STOP_TURN = 0x0964,
CMSG_MOVE_TIME_SKIPPED = 0x19C2,
CMSG_MOVE_TOGGLE_COLLISION_ACK = 0xBADD,
CMSG_MOVE_WATER_WALK_ACK = 0xBADD,
+ CMSG_MOVE_WORLDPORT_ACK = 0x0938,
CMSG_NAME_QUERY = 0x0B15,
CMSG_NEW_SPELL_SLOT = 0xBADD,
CMSG_NEXT_CINEMATIC_CAMERA = 0xBADD,
@@ -429,7 +447,7 @@ enum OpcodeClient : uint32
CMSG_PET_ABANDON = 0xBADD,
CMSG_PET_ACTION = 0x133A,
CMSG_PET_CANCEL_AURA = 0xBADD,
- CMSG_PET_CAST_SPELL = 0xBADD,
+ CMSG_PET_CAST_SPELL = 0x0286,
CMSG_PET_LEARN_TALENT = 0xBADD,
CMSG_PET_NAME_CACHE = 0xBADD,
CMSG_PET_NAME_QUERY = 0x1433,
@@ -472,13 +490,14 @@ enum OpcodeClient : uint32
CMSG_QUEST_POI_QUERY = 0x0BD9,
CMSG_QUEST_QUERY = 0x09A6,
CMSG_QUEUED_MESSAGES_END = 0x04DF,
+ CMSG_RANDOM_ROLL = 0x12AA,
CMSG_RANDOMIZE_CHAR_NAME = 0x1981,
CMSG_READ_ITEM = 0xBADD,
CMSG_REALM_SPLIT = 0xBADD,
CMSG_RECLAIM_CORPSE = 0xBADD,
CMSG_REFORGE_ITEM = 0xBADD,
CMSG_REORDER_CHARACTERS = 0x0DAA,
- CMSG_REPAIR_ITEM = 0xBADD,
+ CMSG_REPAIR_ITEM = 0x0B54,
CMSG_REPLACE_ACCOUNT_DATA = 0xBADD,
CMSG_REPOP_REQUEST = 0xBADD,
CMSG_REPORT_PVP_AFK = 0xBADD,
@@ -502,14 +521,14 @@ enum OpcodeClient : uint32
CMSG_RESET_FACTION_CHEAT = 0xBADD,
CMSG_RESET_INSTANCES = 0xBADD,
CMSG_RESURRECT_RESPONSE = 0xBADD,
- CMSG_RETURN_TO_GRAVEYARD = 0xBADD,
+ CMSG_RETURN_TO_GRAVEYARD = 0x12EA,
CMSG_ROLE_POLL_BEGIN = 0xBADD,
CMSG_SAVE_CUF_PROFILES = 0x0053,
CMSG_SAVE_PLAYER = 0xBADD,
CMSG_SEARCH_LFG_JOIN = 0xBADD,
CMSG_SEARCH_LFG_LEAVE = 0xBADD,
CMSG_SELF_RES = 0xBADD,
- CMSG_SELL_ITEM = 0xBADD,
+ CMSG_SELL_ITEM = 0x0351,
CMSG_SEND_MAIL = 0x0910,
CMSG_SEND_SOR_REQUEST_VIA_ADDRESS = 0xBADD,
CMSG_SEND_SOR_REQUEST_VIA_BNET_ACCOUNT_ID = 0xBADD,
@@ -517,7 +536,7 @@ enum OpcodeClient : uint32
CMSG_SETDEATHBINDPOINT = 0xBADD,
CMSG_SETSHEATHED = 0xBADD,
CMSG_SET_ACTIONBAR_TOGGLES = 0xBADD,
- CMSG_SET_ACTION_BUTTON = 0xBADD,
+ CMSG_SET_ACTION_BUTTON = 0x0599,
CMSG_SET_ACTIVE_MOVER = 0xBADD,
CMSG_SET_ACTIVE_VOICE_CHANNEL = 0xBADD,
CMSG_SET_ALLOW_LOW_LEVEL_RAID1 = 0xBADD,
@@ -579,8 +598,8 @@ enum OpcodeClient : uint32
CMSG_TIME_SYNC_RESP_FAILED = 0xBADD,
CMSG_TOGGLE_PVP = 0xBADD,
CMSG_TOTEM_DESTROYED = 0xBADD,
- CMSG_TRAINER_BUY_SPELL = 0xBADD,
- CMSG_TRAINER_LIST = 0xBADD,
+ CMSG_TRAINER_BUY_SPELL = 0x0A28,
+ CMSG_TRAINER_LIST = 0x0A2E,
CMSG_TRANSMOGRIFY_ITEMS = 0x0A85,
CMSG_TRIGGER_CINEMATIC_CHEAT = 0xBADD,
CMSG_TURN_IN_PETITION = 0xBADD,
@@ -590,19 +609,19 @@ enum OpcodeClient : uint32
CMSG_UNACCEPT_TRADE = 0xBADD,
CMSG_UNDELETE_CHARACTER = 0x0D99,
CMSG_UNDELETE_COOLDOWN_STATUS_QUERY = 0x19A9,
- CMSG_UNLEARN_SKILL = 0xBADD,
+ CMSG_UNLEARN_SKILL = 0x0A26,
CMSG_UNLEARN_SPECIALIZATION = 0xBADD,
CMSG_UNREGISTER_ALL_ADDON_PREFIXES = 0xBADD,
CMSG_UPDATE_ACCOUNT_DATA = 0x12A1,
CMSG_UPDATE_MISSILE_TRAJECTORY = 0xBADD,
CMSG_UPDATE_PROJECTILE_POSITION = 0xBADD,
CMSG_USED_FOLLOW = 0xBADD,
- CMSG_USE_ITEM = 0xBADD,
+ CMSG_USE_ITEM = 0x08B6,
CMSG_VIOLENCE_LEVEL = 0x098D,
CMSG_VOICE_SESSION_ENABLE = 0xBADD,
CMSG_VOID_STORAGE_QUERY = 0x019E,
CMSG_VOID_STORAGE_TRANSFER = 0x0463,
- CMSG_VOID_STORAGE_UNLOCK = 0xBADD,
+ CMSG_VOID_STORAGE_UNLOCK = 0x13BB,
CMSG_VOID_SWAP_ITEM = 0x0619,
CMSG_WARDEN_DATA = 0x0BA1,
CMSG_WARGAME_ACCEPT = 0xBADD,
@@ -622,33 +641,14 @@ enum OpcodeClient : uint32
MSG_MINIMAP_PING = 0xBADD,
MSG_MOVE_CHARM_TELEPORT_CHEAT = 0xBADD,
MSG_MOVE_SET_ALL_SPEED_CHEAT = 0xBADD,
- MSG_MOVE_SET_COLLISION_HEIGHT = 0xBADD,
- MSG_MOVE_SET_FACING = 0xBADD,
MSG_MOVE_SET_FLIGHT_SPEED_CHEAT = 0xBADD,
- MSG_MOVE_SET_PITCH = 0xBADD,
MSG_MOVE_SET_RAW_POSITION_ACK = 0xBADD,
MSG_MOVE_SET_RUN_BACK_SPEED_CHEAT = 0xBADD,
- MSG_MOVE_SET_RUN_MODE = 0xBADD,
MSG_MOVE_SET_RUN_SPEED_CHEAT = 0xBADD,
MSG_MOVE_SET_SWIM_BACK_SPEED_CHEAT = 0xBADD,
MSG_MOVE_SET_SWIM_SPEED_CHEAT = 0xBADD,
MSG_MOVE_SET_TURN_RATE_CHEAT = 0xBADD,
- MSG_MOVE_SET_WALK_MODE = 0xBADD,
MSG_MOVE_SET_WALK_SPEED_CHEAT = 0xBADD,
- MSG_MOVE_START_ASCEND = 0xBADD,
- MSG_MOVE_START_DESCEND = 0xBADD,
- MSG_MOVE_START_PITCH_DOWN = 0xBADD,
- MSG_MOVE_START_PITCH_UP = 0xBADD,
- MSG_MOVE_START_STRAFE_LEFT = 0xBADD,
- MSG_MOVE_START_STRAFE_RIGHT = 0xBADD,
- MSG_MOVE_START_SWIM = 0xBADD,
- MSG_MOVE_START_TURN_LEFT = 0xBADD,
- MSG_MOVE_START_TURN_RIGHT = 0xBADD,
- MSG_MOVE_STOP_ASCEND = 0xBADD,
- MSG_MOVE_STOP_PITCH = 0xBADD,
- MSG_MOVE_STOP_STRAFE = 0xBADD,
- MSG_MOVE_STOP_SWIM = 0xBADD,
- MSG_MOVE_STOP_TURN = 0xBADD,
MSG_MOVE_TELEPORT = 0xBADD,
MSG_MOVE_TELEPORT_ACK = 0xBADD,
MSG_MOVE_TELEPORT_CHEAT = 0xBADD,
@@ -657,7 +657,6 @@ enum OpcodeClient : uint32
MSG_MOVE_TOGGLE_FALL_LOGGING = 0xBADD,
MSG_MOVE_TOGGLE_LOGGING = 0xBADD,
MSG_MOVE_UPDATE_MOUSE = 0xBADD,
- MSG_MOVE_WORLDPORT_ACK = 0xBADD,
MSG_NOTIFY_PARTY_SQUELCH = 0xBADD,
MSG_PARTY_ASSIGNMENT = 0xBADD,
MSG_PETITION_DECLINE = 0xBADD,
@@ -800,11 +799,12 @@ enum OpcodeServer : uint32
SMSG_CHANNEL_UPDATE = 0x19DB,
SMSG_CHARACTER_LOGIN_FAILED = 0xBADD,
SMSG_CHAR_CREATE = 0x0107,
- SMSG_CHAR_CUSTOMIZE = 0xBADD,
+ SMSG_CHAR_CUSTOMIZE = 0x1932,
+ SMSG_CHAR_CUSTOMIZE_RESULT = 0x0BAA,
SMSG_CHAR_DELETE = 0x0BC4,
SMSG_CHAR_ENUM = 0x05AF,
- SMSG_CHAR_FACTION_CHANGE = 0xBADD,
- SMSG_CHAR_RENAME = 0xBADD,
+ SMSG_CHAR_FACTION_CHANGE = 0x0810,
+ SMSG_CHAR_RENAME = 0x0D89,
SMSG_CHAT_IGNORED_ACCOUNT_MUTED = 0xBADD,
SMSG_CHAT_NOT_IN_PARTY = 0xBADD,
SMSG_CHAT_PLAYER_AMBIGUOUS = 0xBADD,
@@ -1100,6 +1100,8 @@ enum OpcodeServer : uint32
SMSG_MOVE_COLLISION_DISABLE = 0xBADD,
SMSG_MOVE_COLLISION_ENABLE = 0xBADD,
SMSG_MOVE_FEATHER_FALL = 0xBADD,
+ SMSG_MOVE_FORCE_RUN_SPEED_CHANGE = 0x08F5,
+ SMSG_MOVE_FORCE_SWIM_SPEED_CHANGE = 0x061A,
SMSG_MOVE_GRAVITY_DISABLE = 0x02C6,
SMSG_MOVE_GRAVITY_ENABLE = 0xBADD,
SMSG_MOVE_KNOCK_BACK = 0xBADD,
@@ -1200,7 +1202,7 @@ enum OpcodeServer : uint32
SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0xBADD,
SMSG_PLAY_SOUND = 0x02D2,
SMSG_PLAY_SPELL_VISUAL = 0xBADD,
- SMSG_PLAY_SPELL_VISUAL_KIT = 0xBADD,
+ SMSG_PLAY_SPELL_VISUAL_KIT = 0x0171,
SMSG_PLAY_TIME_WARNING = 0xBADD,
SMSG_PONG = 0x17CA,
SMSG_POWER_UPDATE = 0x0B27,
@@ -1258,7 +1260,7 @@ enum OpcodeServer : uint32
SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0xBADD,
SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0xBADD,
SMSG_RESEARCH_COMPLETE = 0xBADD,
- SMSG_RESEARCH_SETUP_HISTORY = 0xBADD,
+ SMSG_RESEARCH_SETUP_HISTORY = 0x0A25,
SMSG_RESET_COMPRESSION_CONTEXT = 0xBADD,
SMSG_RESET_FAILED_NOTIFY = 0xBADD,
SMSG_RESISTLOG = 0xBADD,
@@ -1302,7 +1304,7 @@ enum OpcodeServer : uint32
SMSG_SOCKET_GEMS_RESULT = 0xBADD,
SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0xBADD,
SMSG_SPELLBREAKLOG = 0xBADD,
- SMSG_SPELLDAMAGESHIELD = 0xBADD,
+ SMSG_SPELLDAMAGESHIELD = 0x188A,
SMSG_SPELLDISPELLOG = 0xBADD,
SMSG_SPELLENERGIZELOG = 0x137C,
SMSG_SPELLHEALLOG = 0x0114,
@@ -1372,7 +1374,7 @@ enum OpcodeServer : uint32
SMSG_TEXT_EMOTE = 0x0383,
SMSG_THREAT_CLEAR = 0xBADD,
SMSG_THREAT_REMOVE = 0xBADD,
- SMSG_THREAT_UPDATE = 0xBADD,
+ SMSG_THREAT_UPDATE = 0x03A9,
SMSG_TIME_ADJUSTMENT = 0xBADD,
SMSG_TIME_SYNC_REQ = 0x03B1,
SMSG_TITLE_EARNED = 0xBADD,
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index c0f97733d33..4dcd2430642 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -939,7 +939,6 @@ void WorldSession::InitializeQueryCallbackParameters()
{
// Callback parameters that have pointers in them should be properly
// initialized to nullptr here.
- _charRenameCallback.SetParam(nullptr);
}
void WorldSession::ProcessQueryCallbacks()
@@ -966,6 +965,22 @@ void WorldSession::ProcessQueryCallbacks()
HandleCharCreateCallback(result, _charCreateCallback.GetParam().get());
}
+ //! HandleCharCustomizeOpcode
+ if (_charCustomizeCallback.IsReady())
+ {
+ _charCustomizeCallback.GetResult(result);
+ HandleCharCustomizeCallback(result, _charCustomizeCallback.GetParam().get());
+ _charCustomizeCallback.Reset();
+ }
+
+ //! HandleCharRaceOrFactionChangeOpcode
+ if (_charFactionChangeCallback.IsReady())
+ {
+ _charFactionChangeCallback.GetResult(result);
+ HandleCharRaceOrFactionChangeCallback(result, _charFactionChangeCallback.GetParam().get());
+ _charFactionChangeCallback.Reset();
+ }
+
//! HandlePlayerLoginOpcode
if (_charLoginCallback.valid() && _charLoginCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
{
@@ -986,9 +1001,7 @@ void WorldSession::ProcessQueryCallbacks()
if (_charRenameCallback.IsReady())
{
_charRenameCallback.GetResult(result);
- WorldPackets::Character::CharacterRenameInfo* renameInfo = _charRenameCallback.GetParam();
- HandleCharRenameCallBack(result, renameInfo);
- delete renameInfo;
+ HandleCharRenameCallBack(result, _charRenameCallback.GetParam().get());
_charRenameCallback.Reset();
}
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index ec791a52ca6..7be4efbc46b 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -77,12 +77,15 @@ namespace WorldPackets
{
struct CharacterCreateInfo;
struct CharacterRenameInfo;
- struct CharacterCustomizeInfo;
- struct CharacterFactionChangeInfo;
+ struct CharCustomizeInfo;
+ struct CharRaceOrFactionChangeInfo;
struct CharacterUndeleteInfo;
class CharacterCreate;
class CharacterDelete;
+ class CharacterRenameRequest;
+ class CharCustomize;
+ class CharRaceOrFactionChange;
class GenerateRandomCharacterName;
class ReorderCharacters;
class UndeleteCharacter;
@@ -455,11 +458,14 @@ class WorldSession
void HandleContinuePlayerLogin();
void HandleLoadScreenOpcode(WorldPackets::Character::LoadingScreenNotify& loadingScreenNotify);
void HandlePlayerLogin(LoginQueryHolder * holder);
- void HandleCharRenameOpcode(WorldPacket& recvData);
- void HandleCharRenameCallBack(PreparedQueryResult result, WorldPackets::Character::CharacterRenameInfo const* renameInfo);
+ void HandleCharRenameOpcode(WorldPackets::Character::CharacterRenameRequest& request);
+ void HandleCharRenameCallBack(PreparedQueryResult result, WorldPackets::Character::CharacterRenameInfo* renameInfo);
void HandleSetPlayerDeclinedNames(WorldPacket& recvData);
void HandleAlterAppearance(WorldPacket& recvData);
- void HandleCharFactionOrRaceChange(WorldPacket& recvData);
+ void HandleCharCustomizeOpcode(WorldPackets::Character::CharCustomize& packet);
+ void HandleCharCustomizeCallback(PreparedQueryResult result, WorldPackets::Character::CharCustomizeInfo* customizeInfo);
+ void HandleCharRaceOrFactionChangeOpcode(WorldPackets::Character::CharRaceOrFactionChange& packet);
+ void HandleCharRaceOrFactionChangeCallback(PreparedQueryResult result, WorldPackets::Character::CharRaceOrFactionChangeInfo* factionChangeInfo);
void HandleRandomizeCharNameOpcode(WorldPackets::Character::GenerateRandomCharacterName& packet);
void HandleReorderCharacters(WorldPackets::Character::ReorderCharacters& reorderChars);
void HandleOpeningCinematic(WorldPacket& recvData);
@@ -470,9 +476,9 @@ class WorldSession
void SendCharCreate(ResponseCodes result);
void SendCharDelete(ResponseCodes result);
- void SendCharRename(ResponseCodes result, WorldPackets::Character::CharacterRenameInfo const& renameInfo);
- void SendCharCustomize(ResponseCodes result, WorldPackets::Character::CharacterCustomizeInfo const& customizeInfo);
- void SendCharFactionChange(ResponseCodes result, WorldPackets::Character::CharacterFactionChangeInfo const& factionChangeInfo);
+ void SendCharRename(ResponseCodes result, WorldPackets::Character::CharacterRenameInfo const* renameInfo);
+ void SendCharCustomize(ResponseCodes result, WorldPackets::Character::CharCustomizeInfo const* customizeInfo);
+ void SendCharFactionChange(ResponseCodes result, WorldPackets::Character::CharRaceOrFactionChangeInfo const* factionChangeInfo);
void SendSetPlayerDeclinedNamesResult(DeclinedNameResult result, ObjectGuid guid);
void SendBarberShopResult(BarberShopResult result);
void SendUndeleteCooldownStatusResponse(uint32 currentCooldown, uint32 maxCooldown);
@@ -1009,7 +1015,6 @@ class WorldSession
void HandleSpellClick(WorldPacket& recvData);
void HandleMirrorImageDataRequest(WorldPacket& recvData);
void HandleRemoveGlyph(WorldPacket& recvData);
- void HandleCharCustomize(WorldPacket& recvData);
void HandleQueryInspectAchievements(WorldPacket& recvData);
void HandleGuildAchievementProgressQuery(WorldPacket& recvData);
void HandleEquipmentSetSave(WorldPacket& recvData);
@@ -1045,7 +1050,9 @@ class WorldSession
QueryCallback<PreparedQueryResult, uint32> _stableSwapCallback;
QueryCallback<PreparedQueryResult, ObjectGuid> _sendStabledPetCallback;
QueryCallback<PreparedQueryResult, std::shared_ptr<WorldPackets::Character::CharacterCreateInfo>, true> _charCreateCallback;
- QueryCallback<PreparedQueryResult, WorldPackets::Character::CharacterRenameInfo*> _charRenameCallback;
+ QueryCallback<PreparedQueryResult, std::shared_ptr<WorldPackets::Character::CharacterRenameInfo>> _charRenameCallback;
+ QueryCallback<PreparedQueryResult, std::shared_ptr<WorldPackets::Character::CharCustomizeInfo>> _charCustomizeCallback;
+ QueryCallback<PreparedQueryResult, std::shared_ptr<WorldPackets::Character::CharRaceOrFactionChangeInfo>> _charFactionChangeCallback;
QueryCallback<PreparedQueryResult, bool, true> _undeleteCooldownStatusCallback;
QueryCallback<PreparedQueryResult, std::shared_ptr<WorldPackets::Character::CharacterUndeleteInfo>, true> _charUndeleteCallback;
QueryResultHolderFuture _charLoginCallback;