diff options
-rw-r--r-- | src/server/game/Handlers/ChatHandler.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ChatPackets.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ChatPackets.h | 10 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 2 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
6 files changed, 22 insertions, 8 deletions
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 47084fc9ecb..c37bcb6aaf8 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -524,15 +524,13 @@ void WorldSession::HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND sScriptMgr->OnPlayerChat(sender, CHAT_MSG_DND, LANG_UNIVERSAL, packet.Text); } -void WorldSession::HandleEmoteOpcode(WorldPacket& recvData) +void WorldSession::HandleEmoteOpcode(WorldPackets::Chat::EmoteClient& packet) { if (!GetPlayer()->IsAlive() || GetPlayer()->HasUnitState(UNIT_STATE_DIED)) return; - uint32 emote; - recvData >> emote; - sScriptMgr->OnPlayerEmote(GetPlayer(), emote); - GetPlayer()->HandleEmoteCommand(emote); + sScriptMgr->OnPlayerEmote(GetPlayer(), packet.EmoteID); + GetPlayer()->HandleEmoteCommand(packet.EmoteID); } void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet) diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index 50b89790226..0494d31d646 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -196,3 +196,8 @@ WorldPacket const* WorldPackets::Chat::PrintNotification::Write() _worldPacket.WriteString(NotifyText); return &_worldPacket; } + +void WorldPackets::Chat::EmoteClient::Read() +{ + _worldPacket >> EmoteID; +} diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h index b6d58fdfcef..7fa25107dac 100644 --- a/src/server/game/Server/Packets/ChatPackets.h +++ b/src/server/game/Server/Packets/ChatPackets.h @@ -207,6 +207,16 @@ namespace WorldPackets std::string NotifyText; }; + + class EmoteClient final : public ClientPacket + { + public: + EmoteClient(WorldPacket&& packet) : ClientPacket(CMSG_EMOTE, std::move(packet)) { } + + void Read() override; + + uint32 EmoteID = 0; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 9ab580566cc..de285fb1ed6 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -345,7 +345,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_DO_READY_CHECK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRaidReadyCheckOpcode ); DEFINE_HANDLER(CMSG_DUEL_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Duel::DuelResponse, &WorldSession::HandleDuelResponseOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_EJECT_PASSENGER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_EMOTE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleEmoteOpcode ); + DEFINE_HANDLER(CMSG_EMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::EmoteClient, &WorldSession::HandleEmoteOpcode); DEFINE_HANDLER(CMSG_ENABLE_NAGLE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess); DEFINE_OPCODE_HANDLER_OLD(CMSG_ENABLE_TAXI_NODE, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodes ); DEFINE_HANDLER(CMSG_EQUIPMENT_SET_SAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::EquipmentSet::SaveEquipmentSet, &WorldSession::HandleEquipmentSetSave); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 949932f47d9..7bc9488dd26 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -249,7 +249,7 @@ enum OpcodeClient : uint32 CMSG_DO_READY_CHECK = 0xBADD, CMSG_DUEL_RESPONSE = 0x01A1, CMSG_EJECT_PASSENGER = 0xBADD, - CMSG_EMOTE = 0xBADD, + CMSG_EMOTE = 0x0B2B, CMSG_ENABLE_NAGLE = 0xBADD, CMSG_ENABLE_TAXI_NODE = 0xBADD, CMSG_EQUIPMENT_SET_SAVE = 0x0A7C, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 91dfbebcf6a..54c995589a4 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -149,6 +149,7 @@ namespace WorldPackets class ChatMessageDND; class ChatMessageEmote; class CTextEmote; + class EmoteClient; } namespace Combat @@ -854,7 +855,7 @@ class WorldSession void HandleZoneUpdateOpcode(WorldPacket& recvPacket); void HandleSetSelectionOpcode(WorldPackets::Misc::SetSelection& packet); void HandleStandStateChangeOpcode(WorldPackets::Misc::StandStateChange& packet); - void HandleEmoteOpcode(WorldPacket& recvPacket); + void HandleEmoteOpcode(WorldPackets::Chat::EmoteClient& packet); // Social void HandleContactListOpcode(WorldPackets::Social::SendContactList& packet); |