aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp26
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiers.h6
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiersImpl.h12
-rw-r--r--src/server/game/OutdoorPvP/OutdoorPvP.cpp11
-rw-r--r--src/server/game/Scripting/MapScripts.cpp1
-rw-r--r--src/server/game/Server/Packet.h1
-rw-r--r--src/server/game/Server/Packets/ChatPackets.cpp69
-rw-r--r--src/server/game/Server/Packets/ChatPackets.h15
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Texts/ChatTextBuilder.h18
-rw-r--r--src/server/game/Texts/CreatureTextMgr.cpp18
-rw-r--r--src/server/game/Texts/CreatureTextMgr.h8
-rw-r--r--src/server/game/World/World.cpp10
13 files changed, 117 insertions, 80 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index f37526ae71b..2b5c335bce0 100644
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -48,7 +48,7 @@ namespace Trinity
BattlegroundChatBuilder(ChatMsg msgtype, uint32 textId, Player const* source, va_list* args = NULL)
: _msgtype(msgtype), _textId(textId), _source(source), _args(args) { }
- void operator()(WorldPacket& data, LocaleConstant loc_idx)
+ WorldPackets::Packet* operator()(LocaleConstant loc_idx)
{
char const* text = sObjectMgr->GetTrinityString(_textId, loc_idx);
if (_args)
@@ -61,19 +61,18 @@ namespace Trinity
vsnprintf(str, 2048, text, ap);
va_end(ap);
- do_helper(data, &str[0]);
+ return do_helper(&str[0]);
}
- else
- do_helper(data, text);
+
+ return do_helper(text);
}
private:
- void do_helper(WorldPacket& data, char const* text)
+ WorldPackets::Packet* do_helper(char const* text)
{
- WorldPackets::Chat::Chat packet;
- packet.Initialize(_msgtype, LANG_UNIVERSAL, _source, _source, text);
- packet.Write();
- data = packet.Move();
+ WorldPackets::Chat::Chat* packet = new WorldPackets::Chat::Chat();
+ packet->Initialize(_msgtype, LANG_UNIVERSAL, _source, _source, text);
+ return packet;
}
ChatMsg _msgtype;
@@ -88,7 +87,7 @@ namespace Trinity
Battleground2ChatBuilder(ChatMsg msgtype, uint32 textId, Player const* source, uint32 arg1, uint32 arg2)
: _msgtype(msgtype), _textId(textId), _source(source), _arg1(arg1), _arg2(arg2) { }
- void operator()(WorldPacket& data, LocaleConstant loc_idx)
+ WorldPackets::Packet* operator()(LocaleConstant loc_idx)
{
char const* text = sObjectMgr->GetTrinityString(_textId, loc_idx);
char const* arg1str = _arg1 ? sObjectMgr->GetTrinityString(_arg1, loc_idx) : "";
@@ -97,10 +96,9 @@ namespace Trinity
char str[2048];
snprintf(str, 2048, text, arg1str, arg2str);
- WorldPackets::Chat::Chat packet;
- packet.Initialize(_msgtype, LANG_UNIVERSAL, _source, _source, str);
- packet.Write();
- data = packet.Move();
+ WorldPackets::Chat::Chat* packet = new WorldPackets::Chat::Chat();
+ packet->Initialize(_msgtype, LANG_UNIVERSAL, _source, _source, str);
+ return packet;
}
private:
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h
index aea2d8ec383..e6a574efe74 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiers.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.h
@@ -33,7 +33,7 @@
#include "CreatureAI.h"
#include "Spell.h"
#include "WorldSession.h"
-#include "Packets/ChatPackets.h"
+#include "Packet.h"
class Player;
//class Map;
@@ -1411,7 +1411,7 @@ namespace Trinity
private:
Builder& i_builder;
- std::vector<WorldPacket*> i_data_cache; // 0 = default, i => i-1 locale index
+ std::vector<WorldPackets::Packet*> i_data_cache; // 0 = default, i => i-1 locale index
};
// Prepare using Builder localized packets with caching and send to player
@@ -1419,7 +1419,7 @@ namespace Trinity
class LocalizedPacketListDo
{
public:
- typedef std::vector<WorldPacket*> WorldPacketList;
+ typedef std::vector<WorldPackets::Packet*> WorldPacketList;
explicit LocalizedPacketListDo(Builder& builder) : i_builder(builder) { }
~LocalizedPacketListDo()
diff --git a/src/server/game/Grids/Notifiers/GridNotifiersImpl.h b/src/server/game/Grids/Notifiers/GridNotifiersImpl.h
index 30c5e523f21..3e00cb4741a 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiersImpl.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiersImpl.h
@@ -563,7 +563,7 @@ void Trinity::LocalizedPacketDo<Builder>::operator()(Player* p)
{
LocaleConstant loc_idx = p->GetSession()->GetSessionDbLocaleIndex();
uint32 cache_idx = loc_idx+1;
- WorldPacket* data;
+ WorldPackets::Packet* data;
// create if not cached yet
if (i_data_cache.size() < cache_idx + 1 || !i_data_cache[cache_idx])
@@ -571,18 +571,18 @@ void Trinity::LocalizedPacketDo<Builder>::operator()(Player* p)
if (i_data_cache.size() < cache_idx + 1)
i_data_cache.resize(cache_idx + 1);
- data = new WorldPacket();
+ data = i_builder(loc_idx);
- i_builder(*data, loc_idx);
+ ASSERT(data->GetSize() == 0);
- ASSERT(data->GetOpcode() != NULL_OPCODE);
+ data->Write();
i_data_cache[cache_idx] = data;
}
else
data = i_data_cache[cache_idx];
- p->SendDirectMessage(data);
+ p->SendDirectMessage(data->GetRawPacket());
}
template<class Builder>
@@ -606,7 +606,7 @@ void Trinity::LocalizedPacketListDo<Builder>::operator()(Player* p)
data_list = &i_data_cache[cache_idx];
for (size_t i = 0; i < data_list->size(); ++i)
- p->SendDirectMessage((*data_list)[i]);
+ p->SendDirectMessage((*data_list)[i]->GetRawPacket());
}
#endif // TRINITY_GRIDNOTIFIERSIMPL_H
diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp
index 117891140da..d91dc2bc469 100644
--- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp
+++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp
@@ -26,6 +26,7 @@
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "CellImpl.h"
+#include "Packets/ChatPackets.h"
class DefenseMessageBuilder
{
@@ -33,14 +34,14 @@ class DefenseMessageBuilder
DefenseMessageBuilder(uint32 zoneId, uint32 id)
: _zoneId(zoneId), _id(id) { }
- void operator()(WorldPacket& data, LocaleConstant locale) const
+ WorldPackets::Chat::DefenseMessage* operator()(LocaleConstant locale) const
{
std::string text = sOutdoorPvPMgr->GetDefenseMessage(_zoneId, _id, locale);
- data.Initialize(SMSG_DEFENSE_MESSAGE, 4 + 4 + text.length());
- data.append<uint32>(_zoneId);
- data.append<uint32>(text.length());
- data << text;
+ WorldPackets::Chat::DefenseMessage* defenseMessage = new WorldPackets::Chat::DefenseMessage();
+ defenseMessage->ZoneID = _zoneId;
+ defenseMessage->MessageText = text;
+ return defenseMessage;
}
private:
diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp
index ecfc069ca78..225ab7386c6 100644
--- a/src/server/game/Scripting/MapScripts.cpp
+++ b/src/server/game/Scripting/MapScripts.cpp
@@ -799,7 +799,6 @@ void Map::ScriptsProcess()
}
Creature* cTarget = NULL;
- WorldObject* wSource = dynamic_cast<WorldObject*>(source);
auto creatureBounds = _creatureBySpawnIdStore.equal_range(step.script->CallScript.CreatureEntry);
if (creatureBounds.first != creatureBounds.second)
{
diff --git a/src/server/game/Server/Packet.h b/src/server/game/Server/Packet.h
index 85d65e967be..89435db31e3 100644
--- a/src/server/game/Server/Packet.h
+++ b/src/server/game/Server/Packet.h
@@ -35,6 +35,7 @@ namespace WorldPackets
virtual WorldPacket const* Write() = 0;
virtual void Read() = 0;
+ WorldPacket const* GetRawPacket() const { return &_worldPacket; }
size_t GetSize() const { return _worldPacket.size(); }
ConnectionType GetConnection() const { return _worldPacket.GetConnection(); }
diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp
index 4204278d514..726e1b87cc6 100644
--- a/src/server/game/Server/Packets/ChatPackets.cpp
+++ b/src/server/game/Server/Packets/ChatPackets.cpp
@@ -92,6 +92,15 @@ void WorldPackets::Chat::ChatMessageEmote::Read()
Text = _worldPacket.ReadString(len);
}
+WorldPackets::Chat::Chat::Chat(Chat const& chat) : ServerPacket(SMSG_CHAT, chat._worldPacket.size()),
+ SlashCmd(chat.SlashCmd), _Language(chat._Language), SenderGUID(chat.SenderGUID),
+ SenderGuildGUID(chat.SenderGuildGUID), SenderAccountGUID(chat.SenderAccountGUID), TargetGUID(chat.TargetGUID), PartyGUID(chat.PartyGUID),
+ SenderVirtualAddress(chat.SenderVirtualAddress), TargetVirtualAddress(chat.TargetVirtualAddress), SenderName(chat.SenderName), TargetName(chat.TargetName),
+ Prefix(chat.Prefix), _Channel(chat._Channel), ChatText(chat.ChatText), AchievementID(chat.AchievementID), _ChatFlags(chat._ChatFlags),
+ DisplayTime(chat.DisplayTime), HideChatLog(chat.HideChatLog), FakeSenderName(chat.FakeSenderName)
+{
+}
+
void WorldPackets::Chat::Chat::Initialize(ChatMsg chatType, Language language, WorldObject const* sender, WorldObject const* receiver, std::string message,
uint32 achievementId /*= 0*/, std::string channelName /*= ""*/, LocaleConstant locale /*= DEFAULT_LOCALE*/, std::string addonPrefix /*= ""*/)
{
@@ -111,30 +120,10 @@ void WorldPackets::Chat::Chat::Initialize(ChatMsg chatType, Language language, W
_Language = language;
if (sender)
- {
- SenderGUID = sender->GetGUID();
-
- if (Creature const* creatureSender = sender->ToCreature())
- SenderName = creatureSender->GetNameForLocaleIdx(locale);
-
- if (Player const* playerSender = sender->ToPlayer())
- {
- SenderAccountGUID = playerSender->GetSession()->GetAccountGUID();
- _ChatFlags = playerSender->GetChatFlags();
-
- SenderGuildGUID = ObjectGuid::Create<HighGuid::Guild>(playerSender->GetGuildId());
-
- if (Group const* group = playerSender->GetGroup())
- PartyGUID = group->GetGUID();
- }
- }
+ SetSender(sender, locale);
if (receiver)
- {
- TargetGUID = receiver->GetGUID();
- if (Creature const* creatureReceiver = receiver->ToCreature())
- TargetName = creatureReceiver->GetNameForLocaleIdx(locale);
- }
+ SetReceiver(receiver, locale);
SenderVirtualAddress = GetVirtualRealmAddress();
TargetVirtualAddress = GetVirtualRealmAddress();
@@ -144,6 +133,32 @@ void WorldPackets::Chat::Chat::Initialize(ChatMsg chatType, Language language, W
ChatText = std::move(message);
}
+void WorldPackets::Chat::Chat::SetSender(WorldObject const* sender, LocaleConstant locale)
+{
+ SenderGUID = sender->GetGUID();
+
+ if (Creature const* creatureSender = sender->ToCreature())
+ SenderName = creatureSender->GetNameForLocaleIdx(locale);
+
+ if (Player const* playerSender = sender->ToPlayer())
+ {
+ SenderAccountGUID = playerSender->GetSession()->GetAccountGUID();
+ _ChatFlags = playerSender->GetChatFlags();
+
+ SenderGuildGUID = ObjectGuid::Create<HighGuid::Guild>(playerSender->GetGuildId());
+
+ if (Group const* group = playerSender->GetGroup())
+ PartyGUID = group->GetGUID();
+ }
+}
+
+void WorldPackets::Chat::Chat::SetReceiver(WorldObject const* receiver, LocaleConstant locale)
+{
+ TargetGUID = receiver->GetGUID();
+ if (Creature const* creatureReceiver = receiver->ToCreature())
+ TargetName = creatureReceiver->GetNameForLocaleIdx(locale);
+}
+
WorldPacket const* WorldPackets::Chat::Chat::Write()
{
_worldPacket << SlashCmd;
@@ -245,3 +260,13 @@ void WorldPackets::Chat::ChatRegisterAddonPrefixes::Read()
Prefixes.push_back(_worldPacket.ReadString(lenghts));
}
}
+
+WorldPacket const* WorldPackets::Chat::DefenseMessage::Write()
+{
+ _worldPacket << int32(ZoneID);
+ _worldPacket.WriteBits(MessageText.length(), 12);
+ _worldPacket.FlushBits();
+ _worldPacket.WriteString(MessageText);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h
index c8bb038ce19..0686fe63c00 100644
--- a/src/server/game/Server/Packets/ChatPackets.h
+++ b/src/server/game/Server/Packets/ChatPackets.h
@@ -150,8 +150,12 @@ namespace WorldPackets
{
public:
Chat() : ServerPacket(SMSG_CHAT, 100) { }
+ Chat(Chat const& chat);
void Initialize(ChatMsg chatType, Language language, WorldObject const* sender, WorldObject const* receiver, std::string message, uint32 achievementId = 0, std::string channelName = "", LocaleConstant locale = DEFAULT_LOCALE, std::string addonPrefix = "");
+ void SetSender(WorldObject const* sender, LocaleConstant locale);
+ void SetReceiver(WorldObject const* receiver, LocaleConstant locale);
+
WorldPacket const* Write() override;
uint8 SlashCmd = 0; ///< @see enum ChatMsg
@@ -268,6 +272,17 @@ namespace WorldPackets
void Read() override { }
};
+
+ class DefenseMessage final : public ServerPacket
+ {
+ public:
+ DefenseMessage() : ServerPacket(SMSG_DEFENSE_MESSAGE) { }
+
+ WorldPacket const* Write() override;
+
+ int32 ZoneID = 0;
+ std::string MessageText;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 45071d14cd4..39d3f002a94 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1055,7 +1055,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DANCE_STUDIO_CREATE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DB_REPLY, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEATH_RELEASE_LOC, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEFENSE_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_DEFENSE_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DELETE_CHAR, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTROY_ARENA_UNIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_DESTRUCTIBLE_BUILDING_DAMAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Texts/ChatTextBuilder.h b/src/server/game/Texts/ChatTextBuilder.h
index 167680f1cd2..68cd375edb6 100644
--- a/src/server/game/Texts/ChatTextBuilder.h
+++ b/src/server/game/Texts/ChatTextBuilder.h
@@ -30,13 +30,12 @@ namespace Trinity
BroadcastTextBuilder(Unit const* obj, ChatMsg msgType, uint32 textId, WorldObject const* target = nullptr, uint32 achievementId = 0)
: _source(obj), _msgType(msgType), _textId(textId), _target(target), _achievementId(achievementId) { }
- void operator()(WorldPacket& data, LocaleConstant locale)
+ WorldPackets::Chat::Chat* operator()(LocaleConstant locale) const
{
BroadcastTextEntry const* bct = sBroadcastTextStore.LookupEntry(_textId);
- WorldPackets::Chat::Chat packet;
- packet.Initialize(_msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? DB2Manager::GetBroadcastTextValue(bct, locale, _source->getGender()) : "", _achievementId, "", locale);
- packet.Write();
- data = packet.Move();
+ WorldPackets::Chat::Chat* chat = new WorldPackets::Chat::Chat();
+ chat->Initialize(_msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? DB2Manager::GetBroadcastTextValue(bct, locale, _source->getGender()) : "", _achievementId, "", locale);
+ return chat;
}
private:
@@ -53,12 +52,11 @@ namespace Trinity
CustomChatTextBuilder(WorldObject const* obj, ChatMsg msgType, std::string const& text, Language language = LANG_UNIVERSAL, WorldObject const* target = nullptr)
: _source(obj), _msgType(msgType), _text(text), _language(language), _target(target) { }
- void operator()(WorldPacket& data, LocaleConstant locale)
+ WorldPackets::Chat::Chat* operator()(LocaleConstant locale) const
{
- WorldPackets::Chat::Chat packet;
- packet.Initialize(_msgType, _language, _source, _target, _text, 0, "", locale);
- packet.Write();
- data = packet.Move();
+ WorldPackets::Chat::Chat* chat = new WorldPackets::Chat::Chat();
+ chat->Initialize(_msgType, _language, _source, _target, _text, 0, "", locale);
+ return chat;
}
private:
diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp
index c1ea235a3e2..4d61e2ec5d2 100644
--- a/src/server/game/Texts/CreatureTextMgr.cpp
+++ b/src/server/game/Texts/CreatureTextMgr.cpp
@@ -33,13 +33,12 @@ class CreatureTextBuilder
CreatureTextBuilder(WorldObject const* obj, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target)
: _source(obj), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) { }
- void operator()(WorldPacket& data, LocaleConstant locale) const
+ WorldPackets::Chat::Chat* operator()(LocaleConstant locale) const
{
std::string const& text = sCreatureTextMgr->GetLocalizedChatString(_source->GetEntry(), _gender, _textGroup, _textId, locale);
- WorldPackets::Chat::Chat packet;
- packet.Initialize(_msgType, Language(_language), _source, _target, text, 0, "", locale);
- packet.Write();
- data = packet.Move();
+ WorldPackets::Chat::Chat* chat = new WorldPackets::Chat::Chat();
+ chat->Initialize(_msgType, Language(_language), _source, _target, text, 0, "", locale);
+ return chat;
}
private:
@@ -58,13 +57,12 @@ class PlayerTextBuilder
PlayerTextBuilder(WorldObject const* obj, WorldObject const* speaker, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target)
: _source(obj), _talker(speaker), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) { }
- void operator()(WorldPacket& data, LocaleConstant locale) const
+ WorldPackets::Chat::Chat* operator()(LocaleConstant locale) const
{
std::string const& text = sCreatureTextMgr->GetLocalizedChatString(_source->GetEntry(), _gender, _textGroup, _textId, locale);
- WorldPackets::Chat::Chat packet;
- packet.Initialize(_msgType, Language(_language), _talker, _target, text, 0, "", locale);
- packet.Write();
- data = packet.Move();
+ WorldPackets::Chat::Chat* chat = new WorldPackets::Chat::Chat();
+ chat->Initialize(_msgType, Language(_language), _talker, _target, text, 0, "", locale);
+ return chat;
}
private:
diff --git a/src/server/game/Texts/CreatureTextMgr.h b/src/server/game/Texts/CreatureTextMgr.h
index 307f6ece4f8..f2963006599 100644
--- a/src/server/game/Texts/CreatureTextMgr.h
+++ b/src/server/game/Texts/CreatureTextMgr.h
@@ -145,23 +145,25 @@ class CreatureTextLocalizer
// create if not cached yet
if (!_packetCache[loc_idx])
{
- messageTemplate = new WorldPackets::Chat::Chat();
+ messageTemplate = _builder(loc_idx);
_packetCache[loc_idx] = messageTemplate;
}
else
messageTemplate = _packetCache[loc_idx];
+ WorldPackets::Chat::Chat message(*messageTemplate);
+
switch (_msgType)
{
case CHAT_MSG_MONSTER_WHISPER:
case CHAT_MSG_RAID_BOSS_WHISPER:
- messageTemplate->TargetGUID = player->GetGUID();
+ message.SetReceiver(player, loc_idx);
break;
default:
break;
}
- player->SendDirectMessage(messageTemplate->Write());
+ player->SendDirectMessage(message.Write());
}
private:
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index d68da8fbc63..0e98eb265cc 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -2351,7 +2351,7 @@ namespace Trinity
class WorldWorldTextBuilder
{
public:
- typedef std::vector<WorldPacket*> WorldPacketList;
+ typedef std::vector<WorldPackets::Packet*> WorldPacketList;
static size_t const BufferSize = 2048;
explicit WorldWorldTextBuilder(uint32 textId, va_list* args = NULL) : i_textId(textId), i_args(args) { }
@@ -2383,10 +2383,10 @@ namespace Trinity
{
while (char* line = ChatHandler::LineFromMessage(text))
{
- WorldPackets::Chat::Chat packet;
- packet.Initialize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
- packet.Write();
- dataList.emplace_back(new WorldPacket(packet.Move()));
+ WorldPackets::Chat::Chat* packet = new WorldPackets::Chat::Chat();
+ packet->Initialize(CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
+ packet->Write();
+ dataList.push_back(packet);
}
}