summaryrefslogtreecommitdiffstats
path: root/src/chat-server
diff options
context:
space:
mode:
authorErik Schilling <ablu.erikschilling@googlemail.com>2012-01-21 05:10:39 +0800
committerErik Schilling <ablu.erikschilling@googlemail.com>2012-01-21 05:56:26 +0800
commit80397d3f1c93d79a4151647e4a412bb003a0f9bc (patch)
treea25ae4fed6c45bac348e905a51f83e0d64ffddf4 /src/chat-server
parent07da1b321cde4787aa51741079fa2e41fbf08a8b (diff)
downloadmanaserv-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.cpp53
-rw-r--r--src/chat-server/chathandler.h7
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);