summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-09-02 01:31:01 +0300
committerAndrei Karas <akaras@inbox.ru>2014-09-06 01:18:55 +0300
commit2fbf7747666bd9c33bc758f28e2d5e255e6abd02 (patch)
treefb7d4fa4ad6c225c195f741cf463201fb489855b /src
parent41b5a7c2e41e161aa34579a1271d7a4842f02faf (diff)
downloadmv-2fbf7747666bd9c33bc758f28e2d5e255e6abd02.tar.gz
mv-2fbf7747666bd9c33bc758f28e2d5e255e6abd02.tar.bz2
mv-2fbf7747666bd9c33bc758f28e2d5e255e6abd02.tar.xz
mv-2fbf7747666bd9c33bc758f28e2d5e255e6abd02.zip
eathena: add handling packet SMSG_COLOR_MESSAGE 0x02c1.
Diffstat (limited to 'src')
-rw-r--r--src/net/eathena/chathandler.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/net/eathena/chathandler.cpp b/src/net/eathena/chathandler.cpp
index 63a936164..b1ba52cdf 100644
--- a/src/net/eathena/chathandler.cpp
+++ b/src/net/eathena/chathandler.cpp
@@ -57,6 +57,7 @@ ChatHandler::ChatHandler() :
SMSG_GM_CHAT,
SMSG_MVP, // MVP
SMSG_IGNORE_ALL_RESPONSE,
+ SMSG_COLOR_MESSAGE,
0
};
handledMessages = _messages;
@@ -83,6 +84,7 @@ void ChatHandler::handleMessage(Net::MessageIn &msg)
case SMSG_PLAYER_CHAT:
case SMSG_GM_CHAT:
+ case SMSG_COLOR_MESSAGE:
processChat(msg);
break;
@@ -262,7 +264,14 @@ void ChatHandler::processChat(Net::MessageIn &msg)
{
BLOCK_START("ChatHandler::processChat")
const bool normalChat = msg.getId() == SMSG_PLAYER_CHAT;
- int chatMsgLength = msg.readInt16() - 4;
+ const bool coloredChat = msg.getId() == SMSG_COLOR_MESSAGE;
+ int chatMsgLength = msg.readInt16("len") - 4;
+ if (coloredChat)
+ {
+ msg.readInt32("unused");
+ msg.readInt32("chat color");
+ chatMsgLength -= 8;
+ }
if (chatMsgLength <= 0)
{
BLOCK_END("ChatHandler::processChat")