aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuarte Duarte <dnpd.dd@gmail.com>2015-02-23 21:47:37 +0000
committerDuarte Duarte <dnpd.dd@gmail.com>2015-02-23 21:47:37 +0000
commit8a2f8df8ce0c4cbb7404e7134bbfa75f44e43e7f (patch)
treeaba698ae0585478b6caee5e482e56667e97c3ead
parent3fcea2e9d4adf26ed97d2ffad78425346782d418 (diff)
parent78c7094b019bf300c0b46586e28ecbbea93be56c (diff)
Merge pull request #14236 from Golrag/Notification1
Core/Packets: SMSG_NOTIFICATION
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h11
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/WorldSession.cpp15
-rw-r--r--src/server/game/World/World.cpp15
-rw-r--r--src/server/scripts/Commands/cs_message.cpp8
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;
}