From 6f06cd42b8e56aaae2be853a31d73d0115a39c2a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 4 Apr 2015 15:45:30 +0300 Subject: Add chat command for create chat room (incomplete). New chat command: /chatroom NAME --- src/net/eathena/chathandler.cpp | 23 ++++++++++++++++++++--- src/net/eathena/chathandler.h | 3 +++ 2 files changed, 23 insertions(+), 3 deletions(-) (limited to 'src/net') diff --git a/src/net/eathena/chathandler.cpp b/src/net/eathena/chathandler.cpp index 57d57ca6c..de66468e2 100644 --- a/src/net/eathena/chathandler.cpp +++ b/src/net/eathena/chathandler.cpp @@ -55,6 +55,8 @@ extern Net::ChatHandler *chatHandler; namespace EAthena { +std::string ChatHandler::mChatRoom; + ChatHandler::ChatHandler() : MessageHandler(), Ea::ChatHandler() @@ -393,11 +395,12 @@ void ChatHandler::createChatRoom(const std::string &title, { createOutPacket(CMSG_CREAYE_CHAT_ROOM); outMsg.writeInt16(static_cast( - password.size() + title.size() + 5), "len"); + 7 + 8 + 36), "len"); outMsg.writeInt16(static_cast(limit), "limit"); outMsg.writeInt8(static_cast(isPublic ? 1 : 0), "public"); outMsg.writeString(password, 8, "password"); outMsg.writeString(title, 36, "title"); + mChatRoom = title; } void ChatHandler::battleTalk(const std::string &text) const @@ -845,8 +848,22 @@ void ChatHandler::talkPet(const std::string &restrict text, void ChatHandler::processChatRoomCreateAck(Net::MessageIn &msg) { - UNIMPLIMENTEDPACKET; - msg.readUInt8("flag"); + const int result = msg.readUInt8("flag"); + switch(result) + { + case 0: + chatWindow->addChatRoomTab(mChatRoom, true); + break; + case 1: + NotifyManager::notify(NotifyTypes::ROOM_LIMIT_EXCEEDED); + break; + case 2: + NotifyManager::notify(NotifyTypes::ROOM_ALREADY_EXISTS); + break; + default: + UNIMPLIMENTEDPACKET; + break; + } } void ChatHandler::processChatRoomDestroy(Net::MessageIn &msg) diff --git a/src/net/eathena/chathandler.h b/src/net/eathena/chathandler.h index 879217b41..c0807c37a 100644 --- a/src/net/eathena/chathandler.h +++ b/src/net/eathena/chathandler.h @@ -166,6 +166,9 @@ class ChatHandler final : public MessageHandler, public Ea::ChatHandler static void processBattleChatMessage(Net::MessageIn &msg); static void processScriptMessage(Net::MessageIn &msg); + + private: + static std::string mChatRoom; }; } // namespace EAthena -- cgit v1.2.3-60-g2f50