void WINAPIV CUnmannedTraderUserInfoTable::CompleteBuy( CUnmannedTraderUserInfoTable * pObj, char byRet, char * pLoadData, CUnmannedTraderTradeInfo * pkTaradInfo) { UNREFERENCED_PARAMETER(byRet); do { CPlayer* ppkBuyPlayer = nullptr; CUnmannedTraderUserInfo* ppkBuyUser = nullptr; _qry_case_unmandtrader_buy_update_wait *pkQuery = (_qry_case_unmandtrader_buy_update_wait*)pLoadData; if (!pObj->SubCompleteBuyFindBuyer(pkQuery, &ppkBuyUser, &ppkBuyPlayer)) break; if (!ppkBuyUser) break; if (!ppkBuyPlayer) break; ppkBuyUser->ClearRequest(); _unmannedtrader_buy_item_result_zocl Dst; _qry_case_unmandtrader_buy_update_complete pQryData; memset(&Dst, 0, sizeof(Dst)); memset(&pQryData, 0, sizeof(pQryData)); Dst.byRetCode = 0; Dst.byNum = pkQuery->byNum; pQryData.wInx = ppkBuyPlayer->m_ObjID.m_wIndex; pQryData.dwBuyer = pkQuery->dwBuyer; pQryData.byRace = ppkBuyPlayer->m_Param.GetRaceCode(); pQryData.byType = pkQuery->byType; int nSucceeded = 0, nFailed = 0; for (int j = 0; j < pkQuery->byNum; ++j) { int indx = pQryData.byNum; if (pObj->SubCompleteBuyProcBuy( ppkBuyPlayer, ppkBuyUser, pkQuery->tResultTime, &pkQuery->List[j], &Dst.List[j], &pQryData.List[indx], &pQryData.byNum, &Dst.dwPayDalant, pkTaradInfo)) { ++nSucceeded; } else if (pQryData.List[indx].byUpdateState == 8) { ++nFailed; } } if (nFailed > 0 || nSucceeded > 0) pObj->SubCompleteBuyIncreaseVesion(pkQuery->byDivision, pkQuery->byClass); if (pQryData.byNum > 0) g_MainThread->PushDQSData(0xFFFFFFFF, 0i64, 68, (char *)&pQryData, sizeof(pQryData)); if (nSucceeded < Dst.byNum) Dst.byRetCode = -1; Dst.dwLeftDalant = ppkBuyPlayer->m_Param.GetDalant(); char pbyType[] = { 30, 31 }; g_NetProcess[(uint8_t)e_type_line::client]->LoadSendMsg(ppkBuyPlayer->m_ObjID.m_wIndex, pbyType, (char *)&Dst, Dst.size()); } while (false); }
do { if (!ppkBuyUser) break; if (!ppkBuyPlayer) break; while(false);
if (!ppkBuyUser) return; if (!ppkBuyPlayer) return;