Core/Group: Fix recent issues with displaying group members on minimap.
Update GroupMemberOnlineStatus enum (creds to TOMRUS) Also fix reduant GetVehicle() check in BuildPartyMemberStatsChangedPacket
This commit is contained in:
@@ -1261,11 +1261,12 @@ void Group::UpdatePlayerOutOfRange(Player* player)
|
||||
WorldPacket data;
|
||||
player->GetSession()->BuildPartyMemberStatsChangedPacket(player, &data);
|
||||
|
||||
Player* member;
|
||||
for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next())
|
||||
{
|
||||
player = itr->getSource();
|
||||
if (player && !player->IsWithinDist(player, player->GetSightRange(), false))
|
||||
player->GetSession()->SendPacket(&data);
|
||||
member = itr->getSource();
|
||||
if (member && !member->IsWithinDist(player, member->GetSightRange(), false))
|
||||
member->GetSession()->SendPacket(&data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1273,12 +1274,12 @@ void Group::BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int
|
||||
{
|
||||
for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next())
|
||||
{
|
||||
Player* pl = itr->getSource();
|
||||
if (!pl || (ignore != 0 && pl->GetGUID() == ignore) || (ignorePlayersInBGRaid && pl->GetGroup() != this))
|
||||
Player* plr = itr->getSource();
|
||||
if (!plr || (ignore != 0 && plr->GetGUID() == ignore) || (ignorePlayersInBGRaid && plr->GetGroup() != this))
|
||||
continue;
|
||||
|
||||
if (pl->GetSession() && (group == -1 || itr->getSubGroup() == group))
|
||||
pl->GetSession()->SendPacket(packet);
|
||||
if (plr->GetSession() && (group == -1 || itr->getSubGroup() == group))
|
||||
plr->GetSession()->SendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1286,10 +1287,10 @@ void Group::BroadcastReadyCheck(WorldPacket* packet)
|
||||
{
|
||||
for (GroupReference* itr = GetFirstMember(); itr != NULL; itr = itr->next())
|
||||
{
|
||||
Player* pl = itr->getSource();
|
||||
if (pl && pl->GetSession())
|
||||
if (IsLeader(pl->GetGUID()) || IsAssistant(pl->GetGUID()))
|
||||
pl->GetSession()->SendPacket(packet);
|
||||
Player* plr = itr->getSource();
|
||||
if (plr && plr->GetSession())
|
||||
if (IsLeader(plr->GetGUID()) || IsAssistant(plr->GetGUID()))
|
||||
plr->GetSession()->SendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1297,8 +1298,8 @@ void Group::OfflineReadyCheck()
|
||||
{
|
||||
for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
|
||||
{
|
||||
Player* pl = ObjectAccessor::FindPlayer(citr->guid);
|
||||
if (!pl || !pl->GetSession())
|
||||
Player* plr = ObjectAccessor::FindPlayer(citr->guid);
|
||||
if (!plr || !plr->GetSession())
|
||||
{
|
||||
WorldPacket data(MSG_RAID_READY_CHECK_CONFIRM, 9);
|
||||
data << uint64(citr->guid);
|
||||
@@ -1328,6 +1329,7 @@ bool Group::SameSubGroup(Player const* member1, Player const* member2) const
|
||||
{
|
||||
if (!member1 || !member2)
|
||||
return false;
|
||||
|
||||
if (member1->GetGroup() != this || member2->GetGroup() != this)
|
||||
return false;
|
||||
else
|
||||
@@ -1364,10 +1366,8 @@ void Group::ChangeMembersGroup(uint64 guid, uint8 group)
|
||||
if (!isBGGroup())
|
||||
CharacterDatabase.PExecute("UPDATE group_member SET subgroup='%u' WHERE memberGuid='%u'", group, GUID_LOPART(guid));
|
||||
|
||||
Player* player = ObjectAccessor::FindPlayer(guid);
|
||||
|
||||
// In case the moved player is online, update the player object with the new sub group references
|
||||
if (player)
|
||||
if (Player* player = ObjectAccessor::FindPlayer(guid))
|
||||
{
|
||||
if (player->GetGroup() == this)
|
||||
player->GetGroupRef().setSubGroup(group);
|
||||
|
||||
@@ -57,14 +57,14 @@ enum RollVote
|
||||
enum GroupMemberOnlineStatus
|
||||
{
|
||||
MEMBER_STATUS_OFFLINE = 0x0000,
|
||||
MEMBER_STATUS_ONLINE = 0x0001,
|
||||
MEMBER_STATUS_PVP = 0x0002,
|
||||
MEMBER_STATUS_UNK0 = 0x0004, // dead? (health=0)
|
||||
MEMBER_STATUS_UNK1 = 0x0008, // ghost? (health=1)
|
||||
MEMBER_STATUS_UNK2 = 0x0010, // never seen
|
||||
MEMBER_STATUS_UNK3 = 0x0020, // never seen
|
||||
MEMBER_STATUS_UNK4 = 0x0040, // appears with dead and ghost flags
|
||||
MEMBER_STATUS_UNK5 = 0x0080, // never seen
|
||||
MEMBER_STATUS_ONLINE = 0x0001, // Lua_UnitIsConnected
|
||||
MEMBER_STATUS_PVP = 0x0002, // Lua_UnitIsPVP
|
||||
MEMBER_STATUS_DEAD = 0x0004, // Lua_UnitIsDead
|
||||
MEMBER_STATUS_GHOST = 0x0008, // Lua_UnitIsGhost
|
||||
MEMBER_STATUS_PVP_FFA = 0x0010, // Lua_UnitIsPVPFreeForAll
|
||||
MEMBER_STATUS_UNK3 = 0x0020, // used in calls from Lua_GetPlayerMapPosition/Lua_GetBattlefieldFlagPosition
|
||||
MEMBER_STATUS_AFK = 0x0040, // Lua_UnitIsAFK
|
||||
MEMBER_STATUS_DND = 0x0080, // Lua_UnitIsDND
|
||||
};
|
||||
|
||||
enum GroupMemberFlags
|
||||
|
||||
@@ -850,10 +850,8 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke
|
||||
|
||||
if (mask & GROUP_UPDATE_FLAG_VEHICLE_SEAT)
|
||||
{
|
||||
if (player->GetVehicle()){
|
||||
Vehicle* vv=player->GetVehicle();
|
||||
*data << (uint32) vv->GetVehicleInfo()->m_seatID[player->m_movementInfo.t_seat];
|
||||
}
|
||||
if (Vehicle* veh = player->GetVehicle())
|
||||
*data << (uint32) veh->GetVehicleInfo()->m_seatID[player->m_movementInfo.t_seat];
|
||||
}
|
||||
|
||||
if (mask & GROUP_UPDATE_FLAG_PET_AURAS)
|
||||
|
||||
Reference in New Issue
Block a user