void WorldSession::HandlePartyUninviteOpcode(WorldPackets::Party::PartyUninvite& packet) { // can't uninvite yourself if (packet.TargetGUID == GetPlayer()->GetGUID()) { TC_LOG_ERROR("network", "WorldSession::HandleGroupUninviteGuidOpcode: leader %s (%s) tried to uninvite himself from the group.", GetPlayer()->GetName().c_str(), GetPlayer()->GetGUID().ToString().c_str()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(packet.TargetGUID); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); // grp is checked already above in CanUninviteFromGroup() ASSERT(grp); if (grp->IsMember(packet.TargetGUID)) { Player::RemoveFromGroup(grp, packet.TargetGUID, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), packet.Reason.c_str()); return; } if (Player* player = grp->GetInvited(packet.TargetGUID)) { player->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, "", ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket& recvData) { #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_UNINVITE_GUID"); #endif uint64 guid; std::string reason, name; recvData >> guid; recvData >> reason; //can't uninvite yourself if (guid == GetPlayer()->GetGUID()) { sLog->outError("WorldSession::HandleGroupUninviteGuidOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName().c_str(), GetPlayer()->GetGUIDLow()); return; } // Xinef: name is properly filled in packets sObjectMgr->GetPlayerNameByGUID(guid, name); PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, name, res); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; // Xinef: do not allow to kick with empty reason, this will resend packet with given reason if (grp->isLFGGroup() && reason.empty()) { SendPartyResult(PARTY_OP_UNINVITE, name, ERR_VOTE_KICK_REASON_NEEDED); return; } if (grp->IsLeader(guid) && !grp->isLFGGroup()) { SendPartyResult(PARTY_OP_UNINVITE, name, ERR_NOT_LEADER); return; } if (grp->IsMember(guid)) { Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), reason.c_str()); return; } if (Player* player = grp->GetInvited(guid)) { player->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, name, ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_UNINVITE_GUID"); uint64 guid; std::string reason; recv_data >> guid; recv_data >> reason; //can't uninvite yourself if (guid == GetPlayer()->GetGUID()) { sLog->outError("WorldSession::HandleGroupUninviteGuidOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; if (grp->IsLeader(guid)) { SendPartyResult(PARTY_OP_UNINVITE, "", ERR_NOT_LEADER); return; } if (grp->IsMember(guid)) { Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), reason.c_str()); //remove any npcbots it has //Creature *bot = GetPlayer()->GetBot(); //if(bot && bot->GetGUID() == guid) GetPlayer()->SetBotMustDie(); //check that player is not a playerbot Player *player = sObjectMgr->GetPlayer(guid); if(player && player->IsPlayerbot()) GetPlayer()->GetSession()->LogoutPlayerBot(guid, true); return; } if (Player* plr = grp->GetInvited(guid)) { plr->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, "", ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data) { std::string membername; recv_data >> membername; // player not found if (!normalizePlayerName(membername)) return; // can't uninvite yourself if (GetPlayer()->GetName() == membername) { sLog.outError("WorldSession::HandleGroupUninviteOpcode: leader %s tried to uninvite himself from the group.", GetPlayer()->GetGuidStr().c_str()); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; ObjectGuid guid = grp->GetMemberGuid(membername); if (grp->IsMember(guid) && grp->isLFGGroup()) { sLFGMgr.InitBoot(GetPlayer(), guid, ""); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_LEAVE, "", res); return; } if (!guid.IsEmpty()) { Player::RemoveFromGroup(grp, guid); return; } if (Player* plr = grp->GetInvited(membername)) { plr->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_LEAVE, membername, ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data) { std::string membername; recv_data >> membername; // player not found if (!normalizePlayerName(membername)) return; // can't uninvite yourself if (GetPlayer()->GetName() == membername) { ERROR_LOG("WorldSession::HandleGroupUninviteOpcode: leader %s tried to uninvite himself from the group.", GetPlayer()->GetGuidStr().c_str()); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; ObjectGuid guid = grp->GetMemberGuid(membername); PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } if (ObjectGuid guid = grp->GetMemberGuid(membername)) { if (grp->GetLeaderGuid() == guid) return; Player::RemoveFromGroup(grp, guid); return; } if (Player* plr = grp->GetInvited(membername)) { if (grp->GetLeaderGuid() == plr->GetObjectGuid()) return; plr->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, membername, ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket& recvData) { TC_LOG_DEBUG(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_UNINVITE_GUID"); uint64 guid; std::string reason; recvData >> guid; recvData >> reason; //can't uninvite yourself if (guid == GetPlayer()->GetGUID()) { TC_LOG_ERROR(LOG_FILTER_NETWORKIO, "WorldSession::HandleGroupUninviteGuidOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName().c_str(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; if (grp->IsLeader(guid)) { SendPartyResult(PARTY_OP_UNINVITE, "", ERR_NOT_LEADER); return; } if (grp->IsMember(guid)) { Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), reason.c_str()); return; } if (Player* player = grp->GetInvited(guid)) { player->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, "", ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data) { ObjectGuid guid; std::string reason; recv_data >> guid; recv_data >> reason; // reason // can't uninvite yourself if (guid == GetPlayer()->GetObjectGuid()) { sLog.outError("WorldSession::HandleGroupUninviteGuidOpcode: leader %s tried to uninvite himself from the group.", GetPlayer()->GetGuidStr().c_str()); return; } Group* grp = GetPlayer()->GetGroup(); if(!grp) return; if (grp->IsMember(guid) && grp->isLFGGroup()) { sLFGMgr.InitBoot(GetPlayer(), guid, reason); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_LEAVE, "", res); return; } if (grp->IsMember(guid)) { Player::RemoveFromGroup(grp, guid); return; } if (Player* plr = grp->GetInvited(guid)) { plr->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_LEAVE, "", ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteOpcode(WorldPacket& recvData) { #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_UNINVITE"); #endif std::string membername; recvData >> membername; // player not found if (!normalizePlayerName(membername)) return; // can't uninvite yourself if (GetPlayer()->GetName() == membername) { sLog->outError("WorldSession::HandleGroupUninviteOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName().c_str(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; if (uint64 guid = grp->GetMemberGUID(membername)) { Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID()); return; } if (Player* player = grp->GetInvited(membername)) { player->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, membername, ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data) { ObjectGuid guid; std::string reason; recv_data >> guid; recv_data >> reason; // reason // can't uninvite yourself if (guid == GetPlayer()->GetObjectGuid()) { ERROR_LOG("WorldSession::HandleGroupUninviteGuidOpcode: leader %s tried to uninvite himself from the group.", GetPlayer()->GetGuidStr().c_str()); return; } Group* grp = GetPlayer()->GetGroup(); if(!grp) return; PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } if (grp->IsMember(guid)) { if (grp->GetLeaderGuid() == guid) return; Player::RemoveFromGroup(grp, guid); return; } if (Player* plr = grp->GetInvited(guid)) { if (grp->GetLeaderGuid() == plr->GetObjectGuid()) return; plr->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, "", ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data) { std::string membername; recv_data >> membername; // player not found if (!normalizePlayerName(membername)) return; // can't uninvite yourself if (GetPlayer()->GetName() == membername) { sLog.outError("WorldSession::HandleGroupUninviteOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; if (uint64 guid = grp->GetMemberGUID(membername)) { if (grp->isLFGGroup()) sLFGMgr.InitBoot(grp, GUID_LOPART(GetPlayer()->GetGUID()), GUID_LOPART(guid), ""); else Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK); return; } if (Player* plr = grp->GetInvited(membername)) { plr->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, membername, ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteOpcode(WorldPacket& recvData) { TC_LOG_DEBUG("network", "WORLD: Received CMSG_GROUP_UNINVITE"); std::string membername; recvData >> membername; // player not found if (!normalizePlayerName(membername)) return; // can't uninvite yourself if (GetPlayer()->GetName() == membername) { TC_LOG_ERROR("network", "WorldSession::HandleGroupUninviteOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName().c_str(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; if (ObjectGuid guid = grp->GetMemberGUID(membername)) { Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID()); return; } if (Player* player = grp->GetInvited(membername)) { player->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, membername, ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteNameOpcode(WorldPacket & recv_data) { CHECK_PACKET_SIZE(recv_data,1); std::string membername; recv_data >> membername; // player not found if(!normalizePlayerName(membername)) return; // can't uninvite yourself if(GetPlayer()->GetName() == membername) { sLog.outError("WorldSession::HandleGroupUninviteNameOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if(res != PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_LEAVE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if(!grp) return; if(uint64 guid = grp->GetMemberGUID(membername)) { Player::RemoveFromGroup(grp,guid); return; } if(Player* plr = grp->GetInvited(membername)) { plr->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_LEAVE, membername, PARTY_RESULT_NOT_IN_YOUR_PARTY); }
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket& recvData) { TC_LOG_DEBUG("network", "WORLD: Received CMSG_GROUP_UNINVITE_GUID"); ObjectGuid guid; std::string reason; recvData >> guid; recvData >> reason; //can't uninvite yourself if (guid == GetPlayer()->GetGUID()) { TC_LOG_ERROR("network", "WorldSession::HandleGroupUninviteGuidOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName().c_str(), GetPlayer()->GetGUID().GetCounter()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(guid); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); // grp is checked already above in CanUninviteFromGroup() ASSERT(grp); if (grp->IsMember(guid)) { Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), reason.c_str()); return; } if (Player* player = grp->GetInvited(guid)) { player->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, "", ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data) { CHECK_PACKET_SIZE(recv_data,8); uint64 guid; recv_data >> guid; //can't uninvite yourself if(guid == GetPlayer()->GetGUID()) { sLog.outError("WorldSession::HandleGroupUninviteGuidOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if(res != PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_LEAVE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if(!grp) return; if(grp->IsMember(guid)) { Player::RemoveFromGroup(grp,guid); return; } if(Player* plr = grp->GetInvited(guid)) { plr->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_LEAVE, "", PARTY_RESULT_NOT_IN_YOUR_PARTY); }
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data) { uint64 guid; recv_data >> guid; recv_data.read_skip<std::string>(); // reason //can't uninvite yourself if (guid == GetPlayer()->GetGUID()) { sLog.outError("WorldSession::HandleGroupUninviteGuidOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; if (grp->IsMember(guid)) { Player::RemoveFromGroup(grp,guid); return; } if (Player* plr = grp->GetInvited(guid)) { plr->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, "", ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_UNINVITE"); std::string membername; recv_data >> membername; Player *player = GetPlayer(); // player not found if (!normalizePlayerName(membername)) { if(player->HaveBot() && !membername.compare(player->GetBot()->GetName())) { Group *grp = GetPlayer()->GetGroup(); player->SetBotMustDie(); Player::RemoveFromGroup(grp, player->GetBot()->GetGUID()); } return; } // can't uninvite yourself if (GetPlayer()->GetName() == membername) { sLog->outError("WorldSession::HandleGroupUninviteOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; if (uint64 guid = grp->GetMemberGUID(membername)) { if(player->HaveBot() && !membername.compare(player->GetBot()->GetName())) player->SetBotMustDie(); Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID()); return; } else { //check if it is a bot if(player->HaveBot()) { Group *grp = GetPlayer()->GetGroup(); player->SetBotMustDie(); Player::RemoveFromGroup(grp, player->GetBot()->GetGUID(), GROUP_REMOVEMETHOD_KICK); return; } } if (Player* plr = grp->GetInvited(membername)) { plr->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, membername, ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket& recvData) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_UNINVITE_GUID"); ObjectGuid guid; std::string unkstring; recvData.read_skip<uint8>(); // unk 0x00 guid[6] = recvData.ReadBit(); guid[4] = recvData.ReadBit(); guid[3] = recvData.ReadBit(); guid[2] = recvData.ReadBit(); guid[0] = recvData.ReadBit(); guid[1] = recvData.ReadBit(); guid[7] = recvData.ReadBit(); guid[5] = recvData.ReadBit(); uint8 stringSize = recvData.ReadBits(8); unkstring = recvData.ReadString(stringSize); recvData.ReadByteSeq(guid[5]); recvData.ReadByteSeq(guid[6]); recvData.ReadByteSeq(guid[1]); recvData.ReadByteSeq(guid[4]); recvData.ReadByteSeq(guid[3]); recvData.ReadByteSeq(guid[2]); recvData.ReadByteSeq(guid[7]); recvData.ReadByteSeq(guid[0]); // Can't uninvite yourself if (guid == GetPlayer()->GetGUID()) { sLog->outError(LOG_FILTER_NETWORKIO, "WorldSession::HandleGroupUninviteGuidOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; if (grp->IsLeader(guid)) { SendPartyResult(PARTY_OP_UNINVITE, "", ERR_NOT_LEADER); return; } if (grp->IsMember(guid)) { Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), unkstring.c_str()); return; } if (Player* player = grp->GetInvited(guid)) { player->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, "", ERR_TARGET_NOT_IN_GROUP_S); }
void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket& recvData) { TC_LOG_DEBUG("network", "WORLD: Received CMSG_GROUP_UNINVITE_GUID"); ObjectGuid guid; recvData.read_skip<uint8>(); guid[6] = recvData.ReadBit(); guid[4] = recvData.ReadBit(); guid[3] = recvData.ReadBit(); guid[2] = recvData.ReadBit(); guid[0] = recvData.ReadBit(); guid[1] = recvData.ReadBit(); guid[7] = recvData.ReadBit(); guid[5] = recvData.ReadBit(); uint8 reasonLen = recvData.ReadBits(8); std::string reason = recvData.ReadString(reasonLen); recvData.ReadByteSeq(guid[5]); recvData.ReadByteSeq(guid[6]); recvData.ReadByteSeq(guid[1]); recvData.ReadByteSeq(guid[4]); recvData.ReadByteSeq(guid[3]); recvData.ReadByteSeq(guid[2]); recvData.ReadByteSeq(guid[7]); recvData.ReadByteSeq(guid[0]); //can't uninvite yourself if (guid == GetPlayer()->GetGUID()) { TC_LOG_ERROR("network", "WorldSession::HandleGroupUninviteGuidOpcode: leader %s(%d) tried to uninvite himself from the group.", GetPlayer()->GetName().c_str(), GetPlayer()->GetGUIDLow()); return; } PartyResult res = GetPlayer()->CanUninviteFromGroup(); if (res != ERR_PARTY_RESULT_OK) { SendPartyResult(PARTY_OP_UNINVITE, "", res); return; } Group* grp = GetPlayer()->GetGroup(); if (!grp) return; if (grp->IsLeader(guid)) { SendPartyResult(PARTY_OP_UNINVITE, "", ERR_NOT_LEADER); return; } if (grp->IsMember(guid)) { Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), reason.c_str()); return; } if (Player* player = grp->GetInvited(guid)) { player->UninviteFromGroup(); return; } SendPartyResult(PARTY_OP_UNINVITE, "", ERR_TARGET_NOT_IN_GROUP_S); }