diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-04-06 01:29:08 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-04-06 01:56:54 +0300 |
commit | f47097a4d585d91852fca51dd347faed92816839 (patch) | |
tree | 9bbde1334cfeff5e6772979a917cf1909b90a36d /src/net/eathena | |
parent | 3acb4aa3b1248719a3896b419600864a68c65908 (diff) | |
download | manaplus-f47097a4d585d91852fca51dd347faed92816839.tar.gz manaplus-f47097a4d585d91852fca51dd347faed92816839.tar.bz2 manaplus-f47097a4d585d91852fca51dd347faed92816839.tar.xz manaplus-f47097a4d585d91852fca51dd347faed92816839.zip |
eathena: impliment packet SMSG_CHAT_ROOM_SETTINGS.
Diffstat (limited to 'src/net/eathena')
-rw-r--r-- | src/net/eathena/chathandler.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/net/eathena/chathandler.cpp b/src/net/eathena/chathandler.cpp index e35fcbc8b..f7ef27cb5 100644 --- a/src/net/eathena/chathandler.cpp +++ b/src/net/eathena/chathandler.cpp @@ -974,14 +974,26 @@ void ChatHandler::processChatRoomAddMember(Net::MessageIn &msg) void ChatHandler::processChatRoomSettings(Net::MessageIn &msg) { - UNIMPLIMENTEDPACKET; const int sz = msg.readInt16("len") - 17; - msg.readInt32("owner id"); - msg.readInt32("chat id"); - msg.readInt16("limit"); + const int ownerId = msg.readInt32("owner id"); + const int chatId = msg.readInt32("chat id"); + const int limit = msg.readInt16("limit"); msg.readInt16("users"); - msg.readUInt8("type"); - msg.readString(sz, "title"); + const int type = msg.readUInt8("type"); + const std::string &title = msg.readString(sz, "title"); + ChatObject *const chat = localPlayer->getChat(); + if (chat && chat->chatId == chatId) + { + chat->ownerId = ownerId; + chat->maxUsers = limit; + chat->type = type; + if (chat->title != title) + { + chat->title = title; + actorManager->updateRoom(chat); + chatWindow->joinRoom(true); + } + } } void ChatHandler::processChatRoomRoleChange(Net::MessageIn &msg) |