Core/PacketIO: Fixed leaving group not fully removing it clientside

Closes #18744
This commit is contained in:
Shauren
2017-01-07 00:03:55 +01:00
parent 01e44cb794
commit 4275a9fdbf
2 changed files with 6 additions and 5 deletions

View File

@@ -58,7 +58,7 @@ Loot* Roll::getLoot()
Group::Group() : m_leaderGuid(), m_leaderName(""), m_groupFlags(GROUP_FLAG_NONE),
m_dungeonDifficulty(DIFFICULTY_NORMAL), m_raidDifficulty(DIFFICULTY_NORMAL_RAID), m_legacyRaidDifficulty(DIFFICULTY_10_N),
m_bgGroup(nullptr), m_bfGroup(nullptr), m_lootMethod(FREE_FOR_ALL), m_lootThreshold(ITEM_QUALITY_UNCOMMON), m_looterGuid(),
m_masterLooterGuid(), m_subGroupsCounts(nullptr), m_guid(), m_counter(0), m_maxEnchantingLevel(0), m_dbStoreId(0),
m_masterLooterGuid(), m_subGroupsCounts(nullptr), m_guid(), m_maxEnchantingLevel(0), m_dbStoreId(0),
m_readyCheckStarted(false), m_readyCheckTimer(0), m_activeMarkers(0)
{
for (uint8 i = 0; i < TARGET_ICONS_COUNT; ++i)
@@ -392,6 +392,7 @@ bool Group::AddMember(Player* player)
member.group = subGroup;
member.flags = 0;
member.roles = 0;
member.updateSequenceNumber = 1;
member.readyChecked = false;
m_memberSlots.push_back(member);
@@ -801,11 +802,11 @@ void Group::Disband(bool hideDestroy /* = false */)
{
WorldPackets::Party::PartyUpdate partyUpdate;
partyUpdate.PartyFlags = GROUP_FLAG_DESTROYED;
partyUpdate.PartyIndex = 1; // 0 = original group, 1 = instance/bg group
partyUpdate.PartyIndex = 0; // this was the original group if player->GetGroup() returned nullptr
partyUpdate.PartyType = GROUP_TYPE_NONE;
partyUpdate.PartyGUID = m_guid;
partyUpdate.MyIndex = -1;
partyUpdate.SequenceNum = m_counter;
partyUpdate.SequenceNum = citr->updateSequenceNumber;
player->GetSession()->SendPacket(partyUpdate.Write());
}
@@ -1428,7 +1429,7 @@ void Group::SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot)
partyUpdate.PartyGUID = m_guid;
partyUpdate.LeaderGUID = m_leaderGuid;
partyUpdate.SequenceNum = m_counter++; // 3.3, value increases every time this packet gets sent
partyUpdate.SequenceNum = slot->updateSequenceNumber++; // 3.3, value increases every time this packet gets sent
partyUpdate.MyIndex = -1;
uint8 index = 0;

View File

@@ -218,6 +218,7 @@ class TC_GAME_API Group
uint8 group;
uint8 flags;
uint8 roles;
int32 updateSequenceNumber;
bool readyChecked;
};
typedef std::list<MemberSlot> MemberSlotList;
@@ -431,7 +432,6 @@ class TC_GAME_API Group
BoundInstancesMap m_boundInstances[MAX_DIFFICULTY];
uint8* m_subGroupsCounts;
ObjectGuid m_guid;
uint32 m_counter; // used only in SMSG_GROUP_LIST
uint32 m_maxEnchantingLevel;
uint32 m_dbStoreId; // Represents the ID used in database (Can be reused by other groups if group was disbanded)