[9982] Group out of range member must based at client existances.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>

Also move empty mask check from build function to caller.
This commit is contained in:
SilverIce 2010-05-27 17:20:51 +04:00 committed by VladimirMangos
parent ce85076033
commit d0398b94f6
3 changed files with 10 additions and 11 deletions

View file

@ -1016,16 +1016,16 @@ void Group::UpdatePlayerOutOfRange(Player* pPlayer)
if(!pPlayer || !pPlayer->IsInWorld()) if(!pPlayer || !pPlayer->IsInWorld())
return; return;
Player *player; if (pPlayer->GetGroupUpdateFlag() == GROUP_UPDATE_FLAG_NONE)
return;
WorldPacket data; WorldPacket data;
pPlayer->GetSession()->BuildPartyMemberStatsChangedPacket(pPlayer, &data); pPlayer->GetSession()->BuildPartyMemberStatsChangedPacket(pPlayer, &data);
for(GroupReference *itr = GetFirstMember(); itr != NULL; itr = itr->next()) for(GroupReference *itr = GetFirstMember(); itr != NULL; itr = itr->next())
{ if (Player *player = itr->getSource())
player = itr->getSource(); if (player != pPlayer && !player->HaveAtClient(pPlayer))
if (player && player != pPlayer && !pPlayer->isVisibleFor(player,player->GetViewPoint()))
player->GetSession()->SendPacket(&data); player->GetSession()->SendPacket(&data);
}
} }
void Group::BroadcastPacket(WorldPacket *packet, bool ignorePlayersInBGRaid, int group, uint64 ignore) void Group::BroadcastPacket(WorldPacket *packet, bool ignorePlayersInBGRaid, int group, uint64 ignore)

View file

@ -632,13 +632,10 @@ void WorldSession::HandleRaidReadyCheckFinishedOpcode( WorldPacket & /*recv_data
// Is any reaction need? // Is any reaction need?
} }
void WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacket *data) bool WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacket *data)
{ {
uint32 mask = player->GetGroupUpdateFlag(); 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 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); mask |= (GROUP_UPDATE_FLAG_CUR_POWER | GROUP_UPDATE_FLAG_MAX_POWER);
@ -789,6 +786,8 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player *player, WorldPacke
else else
*data << uint64(0); *data << uint64(0);
} }
return true;
} }
/*this procedure handles clients CMSG_REQUEST_PARTY_MEMBER_STATS request*/ /*this procedure handles clients CMSG_REQUEST_PARTY_MEMBER_STATS request*/

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "9981" #define REVISION_NR "9982"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__