From f1beb8d910253a31b9dd239071effa2d518ceee0 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 23 Oct 2011 00:25:26 +0300 Subject: Add chat commands for using server side ignore for all whispers. Commands: /serverignoreall and /serverunignoreall --- src/net/chathandler.h | 4 ++++ src/net/ea/chathandler.cpp | 45 ++++++++++++++++++++++++++++++++++++++++++ src/net/ea/chathandler.h | 2 ++ src/net/manaserv/chathandler.h | 4 ++++ src/net/tmwa/chathandler.cpp | 17 +++++++++++++++- src/net/tmwa/chathandler.h | 4 ++++ src/net/tmwa/protocol.h | 2 ++ 7 files changed, 77 insertions(+), 1 deletion(-) (limited to 'src/net') diff --git a/src/net/chathandler.h b/src/net/chathandler.h index a0e232027..fc6c10376 100644 --- a/src/net/chathandler.h +++ b/src/net/chathandler.h @@ -64,6 +64,10 @@ class ChatHandler virtual void who() = 0; virtual void sendRaw(const std::string &args) = 0; + + virtual void ignoreAll() = 0; + + virtual void unIgnoreAll() = 0; }; } diff --git a/src/net/ea/chathandler.cpp b/src/net/ea/chathandler.cpp index 60af645be..35e8597f0 100644 --- a/src/net/ea/chathandler.cpp +++ b/src/net/ea/chathandler.cpp @@ -353,4 +353,49 @@ void ChatHandler::processMVP(Net::MessageIn &msg) } } +void ChatHandler::processIgnoreAllResponse(Net::MessageIn &msg) +{ + int action = msg.readInt8(); + int fail = msg.readInt8(); + if (!localChatTab) + return; + + switch (action) + { + case 0: + { + switch (fail) + { + case 0: + localChatTab->chatLog(_("All whispers ignored."), + BY_SERVER); + break; + default: + localChatTab->chatLog(_("All whispers ignore failed."), + BY_SERVER); + break; + } + break; + } + case 1: + { + switch (fail) + { + case 0: + localChatTab->chatLog(_("All whispers unignored."), + BY_SERVER); + break; + default: + localChatTab->chatLog(_("All whispers unignore failed."), + BY_SERVER); + break; + } + break; + } + default: + // unknown result + break; + } +} + } // namespace Ea diff --git a/src/net/ea/chathandler.h b/src/net/ea/chathandler.h index d000b673d..cff9bf589 100644 --- a/src/net/ea/chathandler.h +++ b/src/net/ea/chathandler.h @@ -84,6 +84,8 @@ class ChatHandler : public Net::ChatHandler virtual void processMVP(Net::MessageIn &msg); + virtual void processIgnoreAllResponse(Net::MessageIn &msg); + protected: typedef std::queue WhisperQueue; WhisperQueue mSentWhispers; diff --git a/src/net/manaserv/chathandler.h b/src/net/manaserv/chathandler.h index 5eb2a0ff4..beea40423 100644 --- a/src/net/manaserv/chathandler.h +++ b/src/net/manaserv/chathandler.h @@ -133,6 +133,10 @@ class ChatHandler : public MessageHandler, public Net::ChatHandler * Handle who responses. */ void handleWhoResponse(Net::MessageIn &msg); + + void ignoreAll() + + void unIgnoreAll() }; } // namespace ManaServ diff --git a/src/net/tmwa/chathandler.cpp b/src/net/tmwa/chathandler.cpp index 4e4318595..fe6592d93 100644 --- a/src/net/tmwa/chathandler.cpp +++ b/src/net/tmwa/chathandler.cpp @@ -60,6 +60,7 @@ ChatHandler::ChatHandler() SMSG_WHISPER_RESPONSE, SMSG_GM_CHAT, SMSG_MVP, // MVP + SMSG_IGNORE_ALL_RESPONSE, 0 }; handledMessages = _messages; @@ -96,6 +97,9 @@ void ChatHandler::handleMessage(Net::MessageIn &msg) processMVP(msg); break; + case SMSG_IGNORE_ALL_RESPONSE: + processIgnoreAllResponse(msg); + default: break; } @@ -249,5 +253,16 @@ void ChatHandler::processRaw(MessageOut &outMsg, std::string &line) } } -} // namespace TmwAthena +void ChatHandler::ignoreAll() +{ + MessageOut outMsg(CMSG_IGNORE_ALL); + outMsg.writeInt8(0); +} +void ChatHandler::unIgnoreAll() +{ + MessageOut outMsg(CMSG_IGNORE_ALL); + outMsg.writeInt8(1); +} + +} // namespace TmwAthena diff --git a/src/net/tmwa/chathandler.h b/src/net/tmwa/chathandler.h index d9e927e03..197ba12b3 100644 --- a/src/net/tmwa/chathandler.h +++ b/src/net/tmwa/chathandler.h @@ -57,6 +57,10 @@ class ChatHandler : public MessageHandler, public Ea::ChatHandler void sendRaw(const std::string &args); + void ignoreAll(); + + void unIgnoreAll(); + void processRaw(MessageOut &outMsg, std::string &line); }; diff --git a/src/net/tmwa/protocol.h b/src/net/tmwa/protocol.h index 3a753e351..caf3c8e53 100644 --- a/src/net/tmwa/protocol.h +++ b/src/net/tmwa/protocol.h @@ -331,5 +331,7 @@ enum #define SMSG_BEING_IP_RESPONSE 0x020c #define SMSG_PVP_MAP_MODE 0x0199 #define SMSG_PVP_SET 0x019a +#define CMSG_IGNORE_ALL 0x00d0 +#define SMSG_IGNORE_ALL_RESPONSE 0x00d2 #endif -- cgit v1.2.3-60-g2f50