1
0

fix groups finding members in a instanced zone

This commit is contained in:
Emagi 2025-02-26 17:27:14 -05:00
parent ae0b6c4b04
commit 70c9fd0124

View File

@ -1889,12 +1889,12 @@ bool PlayerGroupManager::IdentifyMemberInGroupOrRaid(ZoneChangeDetails* details,
deque<GroupMemberInfo*>::iterator itr; deque<GroupMemberInfo*>::iterator itr;
for (itr = members->begin(); itr != members->end(); itr++) { for (itr = members->begin(); itr != members->end(); itr++) {
// If a group member matches a target // If a group member matches a target
if ((*itr)->is_client && (*itr)->member && (*itr)->member->GetZone() && (*itr)->zone_id == zoneID && (*itr)->instance_id == instanceID) { if ((*itr)->is_client && (*itr)->member && (*itr)->member->GetZone() && (*itr)->zone_id == zoneID && (instanceID == 0 || (*itr)->instance_id == instanceID)) {
// toggle the flag and break the loop // toggle the flag and break the loop
ret = (*itr)->member->GetZone(); ret = (*itr)->member->GetZone();
break; break;
} }
else if ((*itr)->is_client && (*itr)->zone_id == zoneID && (*itr)->instance_id == instanceID) { else if ((*itr)->is_client && (*itr)->zone_id == zoneID && (instanceID == 0 || (*itr)->instance_id == instanceID)) {
// toggle the flag and break the loop // toggle the flag and break the loop
std::string id = peer_manager.isPeer((*itr)->client_peer_address, (*itr)->client_peer_port); std::string id = peer_manager.isPeer((*itr)->client_peer_address, (*itr)->client_peer_port);
std::shared_ptr<Peer> peer = peer_manager.getPeerById(id); std::shared_ptr<Peer> peer = peer_manager.getPeerById(id);