diff options
| author | joschiwald <joschiwald.trinity@gmail.com> | 2014-11-12 16:36:05 +0100 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2014-11-12 16:36:05 +0100 |
| commit | f4926e0a8c0c028d6b50ee28aabde720a93cf280 (patch) | |
| tree | 0f397d5928fde3cdc71338924cdc26b57e000b6d /src/server/game/Server | |
| parent | 61a6daf08613f37a1207e1387aa703578d298803 (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.cpp | 92 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.h | 127 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/WorldStatePackets.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 53 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 118 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.cpp | 21 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 27 |
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; |
