diff options
author | Shauren <shauren.trinity@gmail.com> | 2013-07-24 20:00:36 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2013-07-24 20:00:36 +0200 |
commit | 3bf001fe5f541b67a182a973381557f9c1a60a9e (patch) | |
tree | befc3fc61f9d88e22fb58a0f53d0faa443fd0136 | |
parent | 2f98d1a451b6466a6853c679a54cbf657e6aecb7 (diff) |
Core/PacketIO: Fixed party member stats packets, thanks cyberbrest for pointing out some mistakes
-rw-r--r-- | src/server/game/Handlers/GroupHandler.cpp | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 79cb03c0ab3..be91a04061e 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -1144,13 +1144,6 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke } } - if (mask & GROUP_UPDATE_FLAG_PHASE) - { - *data << uint32(8); // either 0 or 8, same unk found in SMSG_PHASESHIFT - *data << uint32(0); // count - // for (count) *data << uint16(phaseId) - } - if (mask & GROUP_UPDATE_FLAG_VEHICLE_SEAT) { if (Vehicle* veh = player->GetVehicle()) @@ -1159,6 +1152,13 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke *data << uint32(0); } + + if (mask & GROUP_UPDATE_FLAG_PHASE) + { + *data << uint32(8); // either 0 or 8, same unk found in SMSG_PHASESHIFT + *data << uint32(0); // byte count in next block + // for (count) *data << uint16(phaseId) + } } /*this procedure handles clients CMSG_REQUEST_PARTY_MEMBER_STATS request*/ @@ -1266,6 +1266,7 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData) } } } + data.put<uint64>(maskPos, auramask); // GROUP_UPDATE_FLAG_AURAS if (updateFlags & GROUP_UPDATE_FLAG_PET_GUID) @@ -1289,23 +1290,19 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData) if (updateFlags & GROUP_UPDATE_FLAG_PET_MAX_POWER) data << uint16(pet->GetMaxPower(pet->getPowerType())); + // GROUP_UPDATE_FLAG_PET_AURAS uint64 petAuraMask = 0; maskPos = data.wpos(); + data << uint8(1); data << uint64(petAuraMask); // placeholder + data << uint32(MAX_AURAS); // count if (pet) { - // GROUP_UPDATE_FLAG_PET_AURAS - data << uint8(1); - uint64 petauramask = 0; - size_t petMaskPos = data.wpos(); - data << uint64(petauramask); // placeholder - data << uint32(MAX_AURAS); // count - for (uint8 i = 0; i < MAX_AURAS; ++i) { if (AuraApplication const* aurApp = pet->GetVisibleAura(i)) { - petauramask |= (uint64(1) << i); + petAuraMask |= (uint64(1) << i); data << uint32(aurApp->GetBase()->GetId()); data << uint16(aurApp->GetFlags()); @@ -1322,21 +1319,20 @@ void WorldSession::HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData) } } } - - data.put<uint64>(petMaskPos, petauramask); // GROUP_UPDATE_FLAG_PET_AURAS } - // else not needed, flags do not include any PET_ update - - // GROUP_UPDATE_FLAG_PHASE - data << uint32(8); // either 0 or 8, same unk found in SMSG_PHASESHIFT - data << uint32(0); // count - // for (count) *data << uint16(phaseId) data.put<uint64>(maskPos, petAuraMask); // GROUP_UPDATE_FLAG_PET_AURAS if (updateFlags & GROUP_UPDATE_FLAG_VEHICLE_SEAT) data << uint32(player->GetVehicle()->GetVehicleInfo()->m_seatID[player->m_movementInfo.transport.seat]); + if (updateFlags & GROUP_UPDATE_FLAG_PHASE) + { + data << uint32(8); // either 0 or 8, same unk found in SMSG_PHASESHIFT + data << uint32(0); // byte count in next block + // for (count) *data << uint16(phaseId) + } + SendPacket(&data); } |