diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-01-21 05:10:39 +0800 |
---|---|---|
committer | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-01-21 05:56:26 +0800 |
commit | 80397d3f1c93d79a4151647e4a412bb003a0f9bc (patch) | |
tree | a25ae4fed6c45bac348e905a51f83e0d64ffddf4 /src/chat-server | |
parent | 07da1b321cde4787aa51741079fa2e41fbf08a8b (diff) | |
download | manaserv-80397d3f1c93d79a4151647e4a412bb003a0f9bc.tar.gz manaserv-80397d3f1c93d79a4151647e4a412bb003a0f9bc.tar.xz manaserv-80397d3f1c93d79a4151647e4a412bb003a0f9bc.zip |
Made @announce fully functional
- Added announcements having senders now.
- Removed /announcement support.
Reviewed-by: Bjorn.
Diffstat (limited to 'src/chat-server')
-rw-r--r-- | src/chat-server/chathandler.cpp | 53 | ||||
-rw-r--r-- | src/chat-server/chathandler.h | 7 |
2 files changed, 22 insertions, 38 deletions
diff --git a/src/chat-server/chathandler.cpp b/src/chat-server/chathandler.cpp index e7ef11d..2e0bd60 100644 --- a/src/chat-server/chathandler.cpp +++ b/src/chat-server/chathandler.cpp @@ -157,10 +157,6 @@ void ChatHandler::processMessage(NetComputer *comp, MessageIn &message) handleChatMessage(computer, message); break; - case PCMSG_ANNOUNCE: - handleAnnounceMessage(computer, message); - break; - case PCMSG_PRIVMSG: handlePrivMsgMessage(computer, message); break; @@ -298,42 +294,25 @@ void ChatHandler::handleChatMessage(ChatClient &client, MessageIn &msg) storage->addTransaction(trans); } -void ChatHandler::handleAnnounceMessage(ChatClient &client, MessageIn &msg) +void ChatHandler::handleAnnounce(const std::string &message, int senderId, + const std::string &senderName) { - std::string text = msg.readString(); - - if (!stringFilter->filterContent(text)) - { - warnPlayerAboutBadWords(client); - return; - } - - if (client.accountLevel == AL_ADMIN || client.accountLevel == AL_GM) - { - // TODO: b_lindeijer: Shouldn't announcements also have a sender? - LOG_INFO("ANNOUNCE: " << text); - MessageOut result(CPMSG_ANNOUNCEMENT); - result.writeString(text); + // We do not need to check for right permissions since the game server does + // this. + MessageOut result(CPMSG_ANNOUNCEMENT); + result.writeString(message); + result.writeString(senderName); + sendToEveryone(result); - // We send the message to all players in the default channel as it is - // an announcement. - sendToEveryone(result); + if (!senderId) + return; // Do not log scripted announcements - // log transaction - Transaction trans; - trans.mCharacterId = client.characterId; - trans.mAction = TRANS_MSG_ANNOUNCE; - trans.mMessage = "User announced " + text; - storage->addTransaction(trans); - } - else - { - MessageOut result(CPMSG_ERROR); - result.writeInt8(ERRMSG_INSUFFICIENT_RIGHTS); - client.send(result); - LOG_INFO(client.characterName << - " couldn't make an announcement due to insufficient rights."); - } + // log transaction + Transaction trans; + trans.mCharacterId = senderId; + trans.mAction = TRANS_MSG_ANNOUNCE; + trans.mMessage = senderName + " announced: " + message; + storage->addTransaction(trans); } diff --git a/src/chat-server/chathandler.h b/src/chat-server/chathandler.h index 9796bf7..af22e45 100644 --- a/src/chat-server/chathandler.h +++ b/src/chat-server/chathandler.h @@ -113,6 +113,12 @@ class ChatHandler : public ConnectionHandler void handlePartyInvite(MessageIn &msg); /** + * Sends an announce to all connected clients. + */ + void handleAnnounce(const std::string &message, int senderId, + const std::string &senderName); + + /** * Returns ChatClient from the Player Map * @param The name of the character * @return The Chat Client @@ -156,7 +162,6 @@ class ChatHandler : public ConnectionHandler void handleCommand(ChatClient &client, const std::string &command); void handleChatMessage(ChatClient &client, MessageIn &msg); - void handleAnnounceMessage(ChatClient &client, MessageIn &msg); void handlePrivMsgMessage(ChatClient &client, MessageIn &msg); void handleWhoMessage(ChatClient &client); |