コード例 #1
0
ファイル: LfgGroup.cpp プロジェクト: Tasssadar/catcore
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;
}
コード例 #2
0
ファイル: Group.cpp プロジェクト: Aion/caldari
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;
}