BOOL KAwardMgr::ScenenItemAward(std::vector<KPlayer*>& vecPlayer, DWORD dwAwardID) { BOOL bResult = false; BOOL bRetCode = false; KAwardTable* pAwardTable = NULL; KAWARD_ITEM* pAwardItem = NULL; KPlayer* pPlayer = NULL; KSystemMailTxt* pSysMailTxt = NULL; int nValuePoint = 0; pAwardTable = g_pSO3World->m_AwardMgr.GetAwardTable(dwAwardID); KGLOG_PROCESS_ERROR(pAwardTable); pAwardItem = pAwardTable->GetRandomAward(); KGLOG_PROCESS_ERROR(pAwardItem); KGLOG_PROCESS_ERROR(pAwardItem->dwTabType); pSysMailTxt = g_pSO3World->m_Settings.m_SystemMailMgr.GetSystemMailTxt(KMAIL_BATTLE_AWARD); KGLOG_PROCESS_ERROR(pSysMailTxt); for (size_t i = 0; i < vecPlayer.size(); ++i) { pPlayer = vecPlayer[i]; KGLOG_PROCESS_ERROR(pPlayer); if (pAwardItem->dwTabType == ittOther || pAwardItem->dwTabType == ittEquip) { bRetCode = GetAwardItemValuePoint(pAwardItem, nValuePoint); KGLOG_PROCESS_ERROR(bRetCode); bRetCode = pPlayer->SafeAddItem(pAwardItem->dwTabType, pAwardItem->dwIndex, pAwardItem->nStackNum, nValuePoint, pSysMailTxt->m_szMailTitl, pSysMailTxt->m_szSendName, pSysMailTxt->m_szMailTxt ); KGLOG_PROCESS_ERROR(bRetCode); PLAYER_LOG( pPlayer, "item,additem,%u-%u,%d,%d,%s,%d", pAwardItem->dwTabType, pAwardItem->dwIndex, pAwardItem->nStackNum, nValuePoint, "SceneAward", pPlayer->m_dwMapID ); } else if (pAwardItem->dwTabType == ittFashion) { bRetCode = pPlayer->m_Wardrobe.AddFashion(pAwardItem->dwIndex); KGLOG_CHECK_ERROR(bRetCode); } else if (pAwardItem->dwTabType == ittCheerleading) { KGCheerleadingInfo* pCheerleadingInfo = g_pSO3World->m_ItemHouse.GetCheerleadingInfo(pAwardItem->dwIndex); KGLOG_PROCESS_ERROR(pCheerleadingInfo); bRetCode = pPlayer->m_CheerleadingMgr.AddCheerleading(pCheerleadingInfo->dwID); KGLOG_PROCESS_ERROR(bRetCode); } else if (pAwardItem->dwTabType == ittTeamLogo) { KTEAM_LOGO_INFO* pTeamLogoInfo = NULL; pTeamLogoInfo = g_pSO3World->m_ItemHouse.GetTeamLogoInfo(pAwardItem->dwIndex); KGLOG_PROCESS_ERROR(pTeamLogoInfo); bRetCode = pPlayer->AddTeamLogo((WORD)pTeamLogoInfo->nID); KGLOG_PROCESS_ERROR(bRetCode); } } bResult = true; Exit0: return bResult; }