void MMatchServer::ResponsePeerList(const MUID& uidChar, const MUID& uidStage)
{
MMatchStage* pStage = FindStage(uidStage);
if (pStage == NULL) return;
MMatchObject* pObj = GetObject(uidChar);
if (pObj == NULL) return;
MCommand* pNew = CreateCommand(MC_MATCH_RESPONSE_PEERLIST, MUID(0,0));
pNew->AddParameter(new MCommandParameterUID(pStage->GetUID()));
// Battle¿¡ µé¾î°£ »ç¶÷¸¸ List¸¦ ¸¸µç´Ù.
int nPeerCount = pStage->GetObjInBattleCount();
void* pPeerArray = MMakeBlobArray(sizeof(MTD_PeerListNode), nPeerCount);
int nIndex=0;
for (MUIDRefCache::iterator itor=pStage->GetObjBegin(); itor!=pStage->GetObjEnd(); itor++) {
MMatchObject* pObj = (MMatchObject*)(*itor).second;
if (pObj->GetEnterBattle() == false) continue;
MTD_PeerListNode* pNode = (MTD_PeerListNode*)MGetBlobArrayElement(pPeerArray, nIndex++);
memset(pNode, 0, sizeof(MTD_PeerListNode));
pNode->uidChar = pObj->GetUID();
pNode->dwIP = pObj->GetIP();
pNode->nPort = pObj->GetPort();
CopyCharInfoForTrans(&pNode->CharInfo, pObj->GetCharInfo(), pObj);
//¹öÇÁÁ¤º¸ÀÓ½ÃÁÖ¼® CopyCharBuffInfoForTrans(&pNode->CharBuffInfo, pObj->GetCharInfo(), pObj);
pNode->CharInfo.nEquipedItemCount[MMCIP_MELEE] = 1; pNode->CharInfo.nEquipedItemDesc[MMCIP_MELEE] = 1; pNode->CharInfo.nEquipedItemDesc[MMCIP_PRIMARY] = 4001; pNode->CharInfo.nEquipedItemCount[MMCIP_PRIMARY] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_FINGERL] = 25009; pNode->CharInfo.nEquipedItemCount[MMCIP_FINGERL] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_FINGERR] = 25009; pNode->CharInfo.nEquipedItemCount[MMCIP_FINGERL] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_CUSTOM1] = 30303; pNode->CharInfo.nEquipedItemCount[MMCIP_CUSTOM1] = 1;
if(pNode->CharInfo.nSex == 1)
{
pNode->CharInfo.nEquipedItemDesc[MMCIP_HEAD] = RandomNumber(520501, 520521); pNode->CharInfo.nEquipedItemCount[MMCIP_HEAD] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_CHEST] = RandomNumber(521501, 521521); pNode->CharInfo.nEquipedItemCount[MMCIP_CHEST] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_HANDS] = RandomNumber(522501, 522521); pNode->CharInfo.nEquipedItemCount[MMCIP_HANDS] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_LEGS] = RandomNumber(523501, 523521); pNode->CharInfo.nEquipedItemCount[MMCIP_LEGS] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_FEET] = RandomNumber(524501, 524521); pNode->CharInfo.nEquipedItemCount[MMCIP_FEET] = 1;
}
else
{
pNode->CharInfo.nEquipedItemDesc[MMCIP_HEAD] = RandomNumber(520001, 520021); pNode->CharInfo.nEquipedItemCount[MMCIP_HEAD] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_CHEST] = RandomNumber(521001, 521021); pNode->CharInfo.nEquipedItemCount[MMCIP_CHEST] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_HANDS] = RandomNumber(522001, 522021); pNode->CharInfo.nEquipedItemCount[MMCIP_HANDS] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_LEGS] = RandomNumber(523001, 523021); pNode->CharInfo.nEquipedItemCount[MMCIP_LEGS] = 1;
pNode->CharInfo.nEquipedItemDesc[MMCIP_FEET] = RandomNumber(524001, 524021); pNode->CharInfo.nEquipedItemCount[MMCIP_FEET] = 1;
}
for (int i = 0; i < MMCIP_END; i++)
{
MMatchCharItemParts part = MMatchCharItemParts(i);
pNode->CharInfo.nEquipedItemCount[part] = pNode->CharInfo.nEquipedItemCount[part];
pNode->CharInfo.nEquipedItemDesc[part] = pNode->CharInfo.nEquipedItemDesc[part];
}
}
pNode->ExtendInfo.nPlayerFlags = pObj->GetPlayerFlags();
if (pStage->GetStageSetting()->IsTeamPlay()) pNode->ExtendInfo.nTeam = (char)pObj->GetTeam();
else pNode->ExtendInfo.nTeam = 0;
}
pNew->AddParameter(new MCommandParameterBlob(pPeerArray, MGetBlobArraySize(pPeerArray)));
MEraseBlobArray(pPeerArray);
RouteToListener(pObj, pNew);
}