Code:
void CDPSrvr::OnPartyList(CAr& ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize)
{
DWORD idParty;
CUser* pUser = g_UserMng.GetUser(dpidCache, dpidUser);
ar >> idParty;
if (pUser)
{
vector<PARTYFINDER_LIST> vectmp;
int nCount = 0;
for (C2PartyPtr::iterator i = g_PartyMng.m_2PartyPtr.begin(); i != g_PartyMng.m_2PartyPtr.end(); i++)
{
if (vectmp.size() == 25)
break;
CParty* pParty = (CParty*)i->second;
if (!pParty)
continue;
if (pParty->GetLeader())
if (!pParty->GetLeader()->m_bPartyJoin)
continue;
if (pParty->GetSizeofMember() < MAX_PTMEMBER_SIZE_SPECIAL)
{
PARTYFINDER_LIST partytmp;
partytmp.m_uPartyId = pParty->m_uPartyId; // 必窜 ID
strcpy(partytmp.m_sParty, pParty->m_sParty); // 必窜 疙莫( 窜阜必窜 : NO, 鉴雀必窜 : YES )
partytmp.m_nSizeofMember = pParty->m_nSizeofMember; // 必窜盔 箭磊 ( 2 ~ 8 )
partytmp.m_nLevel = pParty->m_nLevel;
partytmp.m_nPoint = pParty->m_nPoint;
PlayerData* pPlayerData = CPlayerDataCenter::GetInstance()->GetPlayerData(pParty->m_aMember[0].m_uPlayerId);
if (pPlayerData)
{
partytmp.m_nLeaderId = pParty->m_aMember[0].m_uPlayerId;
sprintf(partytmp.m_sPartyList, "%s, ", pPlayerData->szPlayer);
}
else
sprintf(partytmp.m_sPartyList, "N/A, ");
for (int i = 1; i < pParty->GetSizeofMember(); i++)
{
PlayerData* pPlayerData = CPlayerDataCenter::GetInstance()->GetPlayerData(pParty->m_aMember[i].m_uPlayerId);
if (!pPlayerData)
continue;
strcat(partytmp.m_sPartyList, pPlayerData->szPlayer);
strcat(partytmp.m_sPartyList, ", ");
}
vectmp.push_back(partytmp);
nCount++;
}
}
pUser->AddPartyList(vectmp, nCount);
}
}