diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/ChatHandler.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Handlers/GroupHandler.cpp | 22 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ChatPackets.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ChatPackets.h | 4 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MiscPackets.h | 26 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 10 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
9 files changed, 71 insertions, 31 deletions
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index c37bcb6aaf8..c908a772458 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -524,13 +524,13 @@ void WorldSession::HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND sScriptMgr->OnPlayerChat(sender, CHAT_MSG_DND, LANG_UNIVERSAL, packet.Text); } -void WorldSession::HandleEmoteOpcode(WorldPackets::Chat::EmoteClient& packet) +void WorldSession::HandleEmoteOpcode(WorldPackets::Chat::EmoteClient& /* packet */) { if (!GetPlayer()->IsAlive() || GetPlayer()->HasUnitState(UNIT_STATE_DIED)) return; - sScriptMgr->OnPlayerEmote(GetPlayer(), packet.EmoteID); - GetPlayer()->HandleEmoteCommand(packet.EmoteID); + sScriptMgr->OnPlayerEmote(GetPlayer(), 0); + GetPlayer()->HandleEmoteCommand(0); } void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet) diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 6b5b92fd63a..03d4cb6e367 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -33,6 +33,7 @@ #include "WorldPacket.h" #include "WorldSession.h" #include "SpellAuraEffects.h" +#include "MiscPackets.h" class Aura; @@ -648,13 +649,13 @@ void WorldSession::HandleMinimapPingOpcode(WorldPacket& recvData) GetPlayer()->GetGroup()->BroadcastPacket(&data, true, -1, GetPlayer()->GetGUID()); } -void WorldSession::HandleRandomRollOpcode(WorldPacket& recvData) +void WorldSession::HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet) { TC_LOG_DEBUG("network", "WORLD: Received CMSG_RANDOM_ROLL"); uint32 minimum, maximum, roll; - recvData >> minimum; - recvData >> maximum; + minimum = packet.Min; + maximum = packet.Max; /** error handling **/ if (minimum > maximum || maximum > 10000) // < 32768 for urand call @@ -666,15 +667,16 @@ void WorldSession::HandleRandomRollOpcode(WorldPacket& recvData) //TC_LOG_DEBUG("misc", "ROLL: MIN: %u, MAX: %u, ROLL: %u", minimum, maximum, roll); - WorldPacket data(SMSG_RANDOM_ROLL, 4+4+4+8); - data << uint32(minimum); - data << uint32(maximum); - data << uint32(roll); - data << GetPlayer()->GetGUID(); + WorldPackets::Misc::RandomRoll randomRoll; + randomRoll.Min = minimum; + randomRoll.Max = maximum; + randomRoll.Result = roll; + randomRoll.Roller = GetPlayer()->GetGUID(); + randomRoll.RollerWowAccount = GetAccountGUID(); if (GetPlayer()->GetGroup()) - GetPlayer()->GetGroup()->BroadcastPacket(&data, false); + GetPlayer()->GetGroup()->BroadcastPacket(randomRoll.Write(), false); else - SendPacket(&data); + SendPacket(randomRoll.Write()); } void WorldSession::HandleRaidTargetUpdateOpcode(WorldPacket& recvData) diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index 0494d31d646..50b89790226 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -196,8 +196,3 @@ 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 7fa25107dac..29679d2c25c 100644 --- a/src/server/game/Server/Packets/ChatPackets.h +++ b/src/server/game/Server/Packets/ChatPackets.h @@ -213,9 +213,7 @@ namespace WorldPackets public: EmoteClient(WorldPacket&& packet) : ClientPacket(CMSG_EMOTE, std::move(packet)) { } - void Read() override; - - uint32 EmoteID = 0; + void Read() override { } }; } } diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 61a008f0e9b..1905ab3e3ce 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -361,3 +361,21 @@ WorldPacket const* WorldPackets::Misc::PlayMusic::Write() return &_worldPacket; } + +void WorldPackets::Misc::RandomRollClient::Read() +{ + _worldPacket >> Min; + _worldPacket >> Max; + _worldPacket >> PartyIndex; +} + +WorldPacket const* WorldPackets::Misc::RandomRoll::Write() +{ + _worldPacket << Roller; + _worldPacket << RollerWowAccount; + _worldPacket << int32(Min); + _worldPacket << int32(Max); + _worldPacket << int32(Result); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 58409ff4282..e2b097900a1 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -504,6 +504,32 @@ namespace WorldPackets uint32 SoundKitID = 0; }; + + class RandomRollClient final : public ClientPacket + { + public: + RandomRollClient(WorldPacket&& packet) : ClientPacket(CMSG_RANDOM_ROLL, std::move(packet)) { } + + void Read() override; + + int32 Min = 0; + int32 Max = 0; + uint8 PartyIndex = 0; + }; + + class RandomRoll final : public ServerPacket + { + public: + RandomRoll() : ServerPacket(SMSG_RANDOM_ROLL, 16 + 16 + 4 + 4 + 4) { } + + WorldPacket const* Write() override; + + ObjectGuid Roller; + ObjectGuid RollerWowAccount; + int32 Min = 0; + int32 Max = 0; + int32 Result = 0; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index e8c0d20e516..79692367573 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -679,7 +679,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_QUEST_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Quest::QueryQuestInfo, &WorldSession::HandleQuestQueryOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUEUED_MESSAGES_END, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_RANDOMIZE_CHAR_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::GenerateRandomCharacterName, &WorldSession::HandleRandomizeCharNameOpcode); - DEFINE_OPCODE_HANDLER_OLD(CMSG_RANDOM_ROLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode ); + DEFINE_HANDLER(CMSG_RANDOM_ROLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::RandomRollClient, &WorldSession::HandleRandomRollOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_READY_CHECK_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_READ_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReadItem ); DEFINE_OPCODE_HANDLER_OLD(CMSG_REAGENT_BANK_BUY_TAB, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -818,7 +818,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_TAXI_NODE_STATUS_QUERY, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleTaxiNodeStatusQueryOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_TAXI_QUERY_AVAILABLE_NODES, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodes ); DEFINE_OPCODE_HANDLER_OLD(CMSG_TELEPORT_TO_UNIT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_HANDLER(CMSG_TEXT_EMOTE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Chat::CTextEmote, &WorldSession::HandleTextEmoteOpcode); + DEFINE_HANDLER(CMSG_TEXT_EMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::CTextEmote, &WorldSession::HandleTextEmoteOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_TIME_ADJUSTMENT_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_TIME_SYNC_RESPONSE, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Misc::TimeSyncResponse, &WorldSession::HandleTimeSyncResponse); DEFINE_OPCODE_HANDLER_OLD(CMSG_TIME_SYNC_RESPONSE_DROPPED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -1654,7 +1654,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_INSTANCE_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_MARKERS_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RANDOMIZE_CHAR_NAME, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_RANDOM_ROLL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_RANDOM_ROLL, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RATED_BG_RATING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RATED_BG_STATS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_READY_CHECK_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1814,7 +1814,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_TALENTS_INVOLUNTARILY_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TAXINODE_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TEST_DROP_RATE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_TEXT_EMOTE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_TEXT_EMOTE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_CLEAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_REMOVE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index c8549696753..9a9febc41b7 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -247,7 +247,7 @@ enum OpcodeClient : uint32 CMSG_DO_READY_CHECK = 0xBADD, CMSG_DUEL_RESPONSE = 0x01A1, CMSG_EJECT_PASSENGER = 0xBADD, - CMSG_EMOTE = 0x0B2B, + CMSG_EMOTE = 0x0B2C, CMSG_ENABLE_NAGLE = 0xBADD, CMSG_ENABLE_TAXI_NODE = 0xBADD, CMSG_EQUIPMENT_SET_SAVE = 0x0A7C, @@ -588,7 +588,7 @@ enum OpcodeClient : uint32 CMSG_QUEST_QUERY = 0xBADD, CMSG_QUEUED_MESSAGES_END = 0x147B, CMSG_RANDOMIZE_CHAR_NAME = 0x17FA, - CMSG_RANDOM_ROLL = 0xBADD, + CMSG_RANDOM_ROLL = 0x1BE2, CMSG_READY_CHECK_RESPONSE = 0xBADD, CMSG_READ_ITEM = 0xBADD, CMSG_REAGENT_BANK_BUY_TAB = 0xBADD, @@ -727,7 +727,7 @@ enum OpcodeClient : uint32 CMSG_TAXI_NODE_STATUS_QUERY = 0xBADD, CMSG_TAXI_QUERY_AVAILABLE_NODES = 0xBADD, CMSG_TELEPORT_TO_UNIT = 0xBADD, - CMSG_TEXT_EMOTE = 0xBADD, + CMSG_TEXT_EMOTE = 0x0B2B, CMSG_TIME_ADJUSTMENT_RESPONSE = 0xBADD, CMSG_TIME_SYNC_RESPONSE = 0x0B8C, CMSG_TIME_SYNC_RESPONSE_DROPPED = 0xBADD, @@ -1599,7 +1599,7 @@ enum OpcodeServer : uint32 SMSG_RAID_INSTANCE_MESSAGE = 0xBADD, SMSG_RAID_MARKERS_CHANGED = 0xBADD, SMSG_RANDOMIZE_CHAR_NAME = 0x195B, - SMSG_RANDOM_ROLL = 0xBADD, + SMSG_RANDOM_ROLL = 0x04C1, SMSG_RATED_BG_RATING = 0xBADD, SMSG_RATED_BG_STATS = 0xBADD, SMSG_READY_CHECK_COMPLETED = 0xBADD, @@ -1767,7 +1767,7 @@ enum OpcodeServer : uint32 SMSG_TALENTS_INVOLUNTARILY_RESET = 0xBADD, SMSG_TAXINODE_STATUS = 0xBADD, SMSG_TEST_DROP_RATE_RESULT = 0xBADD, - SMSG_TEXT_EMOTE = 0xBADD, + SMSG_TEXT_EMOTE = 0x158A, SMSG_THREAT_CLEAR = 0xBADD, SMSG_THREAT_REMOVE = 0xBADD, SMSG_THREAT_UPDATE = 0xBADD, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index c7ea26b7adf..092827f96ec 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -278,6 +278,7 @@ namespace WorldPackets class ResurrectResponse; class StandStateChange; class UITimeRequest; + class RandomRollClient; } namespace Movement @@ -1196,7 +1197,7 @@ class WorldSession void HandleWardenDataOpcode(WorldPacket& recvData); void HandleWorldTeleportOpcode(WorldPacket& recvData); void HandleMinimapPingOpcode(WorldPacket& recvData); - void HandleRandomRollOpcode(WorldPacket& recvData); + void HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet); void HandleFarSightOpcode(WorldPacket& recvData); void HandleSetDungeonDifficultyOpcode(WorldPackets::Misc::SetDungeonDifficulty& setDungeonDifficulty); void HandleSetRaidDifficultyOpcode(WorldPackets::Misc::SetRaidDifficulty& setRaidDifficulty); |