/* * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #include "ServerMotd.h" #include "Common.h" #include "ScriptMgr.h" #include "Util.h" #include "WorldPacket.h" #include #include namespace { WorldPacket MotdPacket; std::string FormattedMotd; } void Motd::SetMotd(std::string motd) { // scripts may change motd sScriptMgr->OnMotdChange(motd); WorldPacket data(SMSG_MOTD); // new in 2.0.1 std::vector motdTokens = Trinity::Tokenize(motd, '@', true); data << uint32(motdTokens.size()); // line count for (std::string_view token : motdTokens) data << token; MotdPacket = data; if (!motdTokens.size()) return; std::ostringstream oss; std::copy(motdTokens.begin(), motdTokens.end() - 1, std::ostream_iterator(oss, "\n")); oss << *(motdTokens.end() - 1); // copy back element FormattedMotd = oss.str(); } char const* Motd::GetMotd() { return FormattedMotd.c_str(); } WorldPacket const* Motd::GetMotdPacket() { return &MotdPacket; }