summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-10-23 00:25:26 +0300
committerAndrei Karas <akaras@inbox.ru>2011-10-23 00:25:26 +0300
commitf1beb8d910253a31b9dd239071effa2d518ceee0 (patch)
treea350b4c4fb4aa720911aa21d7956200ddb904481 /src/net
parent2fcfbc4b1136265cbd463b9d3b721ce0cad52fe0 (diff)
downloadmanaplus-f1beb8d910253a31b9dd239071effa2d518ceee0.tar.gz
manaplus-f1beb8d910253a31b9dd239071effa2d518ceee0.tar.bz2
manaplus-f1beb8d910253a31b9dd239071effa2d518ceee0.tar.xz
manaplus-f1beb8d910253a31b9dd239071effa2d518ceee0.zip
Add chat commands for using server side ignore for all whispers.
Commands: /serverignoreall and /serverunignoreall
Diffstat (limited to 'src/net')
-rw-r--r--src/net/chathandler.h4
-rw-r--r--src/net/ea/chathandler.cpp45
-rw-r--r--src/net/ea/chathandler.h2
-rw-r--r--src/net/manaserv/chathandler.h4
-rw-r--r--src/net/tmwa/chathandler.cpp17
-rw-r--r--src/net/tmwa/chathandler.h4
-rw-r--r--src/net/tmwa/protocol.h2
7 files changed, 77 insertions, 1 deletions
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<std::string> 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