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); } }
Code:
void CUser::AddPartyList(vector<PARTYFINDER_LIST> vectmp, int nCount) { if (IsDelete()) return; m_Snapshot.cb++; m_Snapshot.ar << GetId(); m_Snapshot.ar << SNAPSHOTTYPE_PARTYFINDER_REFRESH; m_Snapshot.ar << nCount; for (DWORD i = 0; i < vectmp.size(); i++) { m_Snapshot.ar << vectmp[i].m_uPartyId; // 必窜 ID m_Snapshot.ar.WriteString(vectmp[i].m_sParty); // 必窜 疙莫( 窜阜必窜 : NO, 鉴雀必窜 : YES ) m_Snapshot.ar << vectmp[i].m_nSizeofMember; // 必窜盔 箭磊 ( 2 ~ 8 ) m_Snapshot.ar << vectmp[i].m_nLevel << vectmp[i].m_nPoint; // 必窜 饭骇, 版氰摹, 器牢飘 m_Snapshot.ar << vectmp[i].m_nLeaderId; m_Snapshot.ar.WriteString(vectmp[i].m_sPartyList); } }