diff options
author | Duarte Duarte <dnpd.dd@gmail.com> | 2015-02-23 21:47:37 +0000 |
---|---|---|
committer | Duarte Duarte <dnpd.dd@gmail.com> | 2015-02-23 21:47:37 +0000 |
commit | 8a2f8df8ce0c4cbb7404e7134bbfa75f44e43e7f (patch) | |
tree | aba698ae0585478b6caee5e482e56667e97c3ead | |
parent | 3fcea2e9d4adf26ed97d2ffad78425346782d418 (diff) | |
parent | 78c7094b019bf300c0b46586e28ecbbea93be56c (diff) |
Merge pull request #14236 from Golrag/Notification1
Core/Packets: SMSG_NOTIFICATION
-rw-r--r-- | src/server/game/Server/Packets/ChatPackets.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ChatPackets.h | 11 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.cpp | 15 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 15 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_message.cpp | 8 |
6 files changed, 26 insertions, 32 deletions
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index 9d28f50af4f..50b89790226 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -189,3 +189,10 @@ WorldPacket const* WorldPackets::Chat::STextEmote::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Chat::PrintNotification::Write() +{ + _worldPacket.WriteBits(NotifyText.size(), 12); + _worldPacket.WriteString(NotifyText); + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h index 81f4d08607f..b6d58fdfcef 100644 --- a/src/server/game/Server/Packets/ChatPackets.h +++ b/src/server/game/Server/Packets/ChatPackets.h @@ -196,6 +196,17 @@ namespace WorldPackets int32 SoundIndex = -1; int32 EmoteID = 0; }; + + class PrintNotification final : public ServerPacket + { + public: + PrintNotification() : ServerPacket(SMSG_NOTIFICATION, 3) { } + PrintNotification(std::string const& notifyText) : ServerPacket(SMSG_NOTIFICATION, 3), NotifyText(notifyText) { } + + WorldPacket const* Write() override; + + std::string NotifyText; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 17a7b892cb3..3bc5526f36b 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1562,7 +1562,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_TAXI_PATH, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD_ABORT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_DANCE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_DEST_LOC_SPELL_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 73d249412eb..727d1e078e4 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -52,6 +52,7 @@ #include "CharacterPackets.h" #include "ClientConfigPackets.h" #include "MiscPackets.h" +#include "ChatPackets.h" namespace { @@ -654,12 +655,7 @@ void WorldSession::SendNotification(char const* format, ...) vsnprintf(szStr, 1024, format, ap); va_end(ap); - size_t len = strlen(szStr); - WorldPacket data(SMSG_NOTIFICATION, 2 + len); - data.WriteBits(len, 13); - data.FlushBits(); - data.append(szStr, len); - SendPacket(&data); + SendPacket(WorldPackets::Chat::PrintNotification(szStr).Write()); } } @@ -675,12 +671,7 @@ void WorldSession::SendNotification(uint32 stringId, ...) vsnprintf(szStr, 1024, format, ap); va_end(ap); - size_t len = strlen(szStr); - WorldPacket data(SMSG_NOTIFICATION, 2 + len); - data.WriteBits(len, 13); - data.FlushBits(); - data.append(szStr, len); - SendPacket(&data); + SendPacket(WorldPackets::Chat::PrintNotification(szStr).Write()); } } diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 4d79bbc2d7f..e876823ea96 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2827,22 +2827,11 @@ void World::SendAutoBroadcast() if (abcenter == 0) sWorld->SendWorldText(LANG_AUTO_BROADCAST, msg.c_str()); else if (abcenter == 1) - { - WorldPacket data(SMSG_NOTIFICATION, 2 + msg.length()); - data.WriteBits(msg.length(), 13); - data.FlushBits(); - data.WriteString(msg); - sWorld->SendGlobalMessage(&data); - } + sWorld->SendGlobalMessage(WorldPackets::Chat::PrintNotification(msg).Write()); else if (abcenter == 2) { sWorld->SendWorldText(LANG_AUTO_BROADCAST, msg.c_str()); - - WorldPacket data(SMSG_NOTIFICATION, 2 + msg.length()); - data.WriteBits(msg.length(), 13); - data.FlushBits(); - data.WriteString(msg); - sWorld->SendGlobalMessage(&data); + sWorld->SendGlobalMessage(WorldPackets::Chat::PrintNotification(msg).Write()); } TC_LOG_DEBUG("misc", "AutoBroadcast: '%s'", msg.c_str()); diff --git a/src/server/scripts/Commands/cs_message.cpp b/src/server/scripts/Commands/cs_message.cpp index 30cc075692a..519ae1e1f97 100644 --- a/src/server/scripts/Commands/cs_message.cpp +++ b/src/server/scripts/Commands/cs_message.cpp @@ -157,9 +157,7 @@ public: std::string str = handler->GetTrinityString(LANG_GLOBAL_NOTIFY); str += args; - WorldPacket data(SMSG_NOTIFICATION, (str.size()+1)); - data << str; - sWorld->SendGlobalMessage(&data); + sWorld->SendGlobalMessage(WorldPackets::Chat::PrintNotification(str).Write()); return true; } @@ -172,9 +170,7 @@ public: std::string str = handler->GetTrinityString(LANG_GM_NOTIFY); str += args; - WorldPacket data(SMSG_NOTIFICATION, (str.size()+1)); - data << str; - sWorld->SendGlobalGMMessage(&data); + sWorld->SendGlobalGMMessage(WorldPackets::Chat::PrintNotification(str).Write()); return true; } |