From d0398b94f6850dec0c1a7f5d4f1b416f7c5a8425 Mon Sep 17 00:00:00 2001 From: SilverIce Date: Thu, 27 May 2010 17:20:51 +0400 Subject: [PATCH] [9982] Group out of range member must based at client existances. Signed-off-by: VladimirMangos Also move empty mask check from build function to caller. --- src/game/Group.cpp | 12 ++++++------ src/game/GroupHandler.cpp | 7 +++---- src/shared/revision_nr.h | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/game/Group.cpp b/src/game/Group.cpp index 7438b234b..d53dfd52b 100644 --- a/src/game/Group.cpp +++ b/src/game/Group.cpp @@ -1016,16 +1016,16 @@ void Group::UpdatePlayerOutOfRange(Player* pPlayer) if(!pPlayer || !pPlayer->IsInWorld()) return; - Player *player; + if (pPlayer->GetGroupUpdateFlag() == GROUP_UPDATE_FLAG_NONE) + return; + WorldPacket data; pPlayer->GetSession()->BuildPartyMemberStatsChangedPacket(pPlayer, &data); for(GroupReference *itr = GetFirstMember(); itr != NULL; itr = itr->next()) - { - player = itr->getSource(); - if (player && player != pPlayer && !pPlayer->isVisibleFor(player,player->GetViewPoint())) - player->GetSession()->SendPacket(&data); - } + if (Player *player = itr->getSource()) + if (player != pPlayer && !player->HaveAtClient(pPlayer)) + player->GetSession()->SendPacket(&data); } void Group::BroadcastPacket(WorldPacket *packet, bool ignorePlayersInBGRaid, int group, uint64 ignore) diff --git a/src/game/GroupHandler.cpp b/src/game/GroupHandler.cpp index d1347e505..42c14ed44 100644 --- a/src/game/GroupHandler.cpp +++ b/src/game/GroupHandler.cpp @@ -632,13 +632,10 @@ void WorldSession::HandleRaidReadyCheckFinishedOpcode( WorldPacket & /*recv_data // Is any reaction need? } -void WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacket *data) +bool WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacket *data) { uint32 mask = player->GetGroupUpdateFlag(); - if (mask == GROUP_UPDATE_FLAG_NONE) - return; - if (mask & GROUP_UPDATE_FLAG_POWER_TYPE) // if update power type, update current/max power also mask |= (GROUP_UPDATE_FLAG_CUR_POWER | GROUP_UPDATE_FLAG_MAX_POWER); @@ -789,6 +786,8 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacke else *data << uint64(0); } + + return true; } /*this procedure handles clients CMSG_REQUEST_PARTY_MEMBER_STATS request*/ diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 86fdf9e2f..f355953d2 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9981" + #define REVISION_NR "9982" #endif // __REVISION_NR_H__