uint32 LfgGroup::RemoveMember(const uint64 &guid, const uint8 &method) { member_witerator slot = _getMemberWSlot(guid); if (slot != m_memberSlots.end()) { m_memberSlots.erase(slot); UpdateItemLevelValues(); } sLfgMgr.LfgLog("Remove member %u , guid %u", GetId(), guid); if (Player *player = sObjectMgr.GetPlayer(guid)) { player->m_lookingForGroup.groups.erase(GetDungeonInfo(true)->ID); if (method == 1) { WorldPacket data(SMSG_GROUP_UNINVITE, 0); player->GetSession()->SendPacket( &data ); player->SetGroup(NULL); _removeRolls(guid); _homebindIfInstance(player); } if(IsInDungeon() && IsMixed()) player->m_lookingForGroup.SetMixedDungeon(0, false); } //Remove from any role if (m_tank == guid) m_tank = 0; else if (m_heal == guid) m_heal = 0; else if (dps.find(guid) != dps.end()) dps.erase(guid); CharacterDatabase.PExecute("DELETE FROM group_member WHERE memberGuid='%u'", GUID_LOPART(guid)); return 0; }
bool Group::_removeMember(const uint64 &guid) { Player *player = objmgr.GetPlayer(guid); if (player) { player->RemoveAreaAurasByOthers(); player->RemoveAreaAurasFromGroup(); player->groupInfo.group = NULL; } _removeRolls(guid); m_members.erase(m_members.begin()+_getMemberIndex(guid)); sDatabase.PExecute("DELETE FROM `group_member` WHERE `memberGuid`='%u'", GUID_LOPART(guid)); if(m_leaderGuid == guid) // leader was removed { if(m_members.size() > 0) _setLeader(m_members[0].guid); return true; } return false; }