From df0761d02f541723a4d127ef1d252cfa66e6a852 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 25 Sep 2018 21:29:33 +0300 Subject: Add packet SMSG_GUILD_LEAVE2 0x0a83. --- src/net/eathena/guildrecv.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'src/net/eathena/guildrecv.cpp') diff --git a/src/net/eathena/guildrecv.cpp b/src/net/eathena/guildrecv.cpp index 48546b6cf..5fa99bb78 100644 --- a/src/net/eathena/guildrecv.cpp +++ b/src/net/eathena/guildrecv.cpp @@ -505,6 +505,57 @@ void GuildRecv::processGuildLeave(Net::MessageIn &msg) } } +void GuildRecv::processGuildLeave2(Net::MessageIn &msg) +{ + const int charId = msg.readInt32("char id"); + msg.readString(40, "message"); + std::string nick; + + if (taGuild != nullptr) + { + const GuildMember *const member = taGuild->getMemberByCharId(charId); + if (member != nullptr) + { + nick = member->getName(); + taGuild->removeMember(member); + } + } + + if (localPlayer == nullptr) + return; + + if (charId == PlayerInfo::getCharId()) + { + if (taGuild != nullptr) + { + taGuild->removeFromMembers(); + taGuild->clearMembers(); + localPlayer->removeGuild(taGuild->getId()); + } + NotifyManager::notify(NotifyTypes::GUILD_LEFT); + delete2(guildTab) + + if ((socialWindow != nullptr) && (taGuild != nullptr)) + socialWindow->removeTab(taGuild); + if (actorManager != nullptr) + actorManager->updatePlayerColors(); + } + else + { + NotifyManager::notify(NotifyTypes::GUILD_USER_LEFT, nick); + if (actorManager != nullptr) + { + Being *const b = actorManager->findBeingByName( + nick, ActorType::Player); + + if (b != nullptr) + b->clearGuilds(); + if (taGuild != nullptr) + taGuild->removeMember(nick); + } + } +} + void GuildRecv::processGuildMessage(Net::MessageIn &msg) { const int msgLength = msg.readInt16("len") - 4; -- cgit v1.2.3-60-g2f50