Core/PacketIO: Updated and enabled SMSG_CHAT_SERVER_MESSAGE

This commit is contained in:
Vincent-Michael
2015-05-02 16:31:48 +02:00
parent a0fee439de
commit fc7014628a
6 changed files with 36 additions and 13 deletions

View File

@@ -221,3 +221,15 @@ WorldPacket const* WorldPackets::Chat::ChatPlayerNotfound::Write()
return &_worldPacket;
}
WorldPacket const* WorldPackets::Chat::ChatServerMessage::Write()
{
_worldPacket << MessageID;
_worldPacket.WriteBits(StringParam.length(), 11);
_worldPacket.FlushBits();
_worldPacket.WriteString(StringParam);
return &_worldPacket;
}

View File

@@ -239,6 +239,17 @@ namespace WorldPackets
std::string Name;
};
class ChatServerMessage final : public ServerPacket
{
public:
ChatServerMessage() : ServerPacket(SMSG_CHAT_SERVER_MESSAGE, 4 + 2) { }
WorldPacket const* Write() override;
int32 MessageID = 0;
std::string StringParam;
};
}
}

View File

@@ -1012,7 +1012,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_PLAYER_NOTFOUND, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_RECONNECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_RESTRICTED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_SERVER_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHAT_SERVER_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHEAT_IGNORE_DIMISHING_RETURNS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHECK_WARGAME_ENTRY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHUNKED_PACKET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);

View File

@@ -2747,7 +2747,7 @@ void World::ShutdownMsg(bool show, Player* player, const std::string& reason)
ServerMessageType msgid = (m_ShutdownMask & SHUTDOWN_MASK_RESTART) ? SERVER_MSG_RESTART_TIME : SERVER_MSG_SHUTDOWN_TIME;
SendServerMessage(msgid, str.c_str(), player);
SendServerMessage(msgid, str, player);
TC_LOG_DEBUG("misc", "Server is %s in %s", (m_ShutdownMask & SHUTDOWN_MASK_RESTART ? "restart" : "shuttingdown"), str.c_str());
}
}
@@ -2772,17 +2772,17 @@ void World::ShutdownCancel()
}
/// Send a server message to the user(s)
void World::SendServerMessage(ServerMessageType type, const char *text, Player* player)
void World::SendServerMessage(ServerMessageType messageID, std::string stringParam /*= ""*/, Player* player /*= NULL*/)
{
WorldPacket data(SMSG_CHAT_SERVER_MESSAGE, 50); // guess size
data << uint32(type);
if (type <= SERVER_MSG_STRING)
data << text;
WorldPackets::Chat::ChatServerMessage chatServerMessage;
chatServerMessage.MessageID = int32(messageID);
if (messageID <= SERVER_MSG_STRING)
chatServerMessage.StringParam = stringParam;
if (player)
player->GetSession()->SendPacket(&data);
player->GetSession()->SendPacket(chatServerMessage.Write());
else
SendGlobalMessage(&data);
SendGlobalMessage(chatServerMessage.Write());
}
void World::UpdateSessions(uint32 diff)

View File

@@ -671,7 +671,7 @@ class World
void SendWorldText(uint32 string_id, ...);
void SendGlobalText(const char* text, WorldSession* self);
void SendGMText(uint32 string_id, ...);
void SendServerMessage(ServerMessageType type, const char *text = "", Player* player = NULL);
void SendServerMessage(ServerMessageType messageID, std::string stringParam = "", Player* player = NULL);
void SendGlobalMessage(WorldPacket const* packet, WorldSession* self = nullptr, uint32 team = 0);
void SendGlobalGMMessage(WorldPacket const* packet, WorldSession* self = nullptr, uint32 team = 0);
bool SendZoneMessage(uint32 zone, WorldPacket const* packet, WorldSession* self = nullptr, uint32 team = 0);

View File

@@ -134,9 +134,9 @@ public:
if (!*args)
return false;
char buff[2048];
sprintf(buff, handler->GetTrinityString(LANG_SYSTEMMESSAGE), args);
sWorld->SendServerMessage(SERVER_MSG_STRING, buff);
std::string str = handler->PGetParseString(LANG_SYSTEMMESSAGE, args);
sWorld->SendServerMessage(SERVER_MSG_STRING, str);
return true;
}
// announce to logged in GMs