VOID CActionSystem::QuestLogItem_Update(VOID) { GetMe()->CleanInvalidAction(); _MISSION_INFO* misInfo = NULL; //创建新的物品 for(INT i=0; i < MAX_CHAR_MISSION_NUM; i++) { const _OWN_MISSION * OwnMission = CUIDataPool::GetMe()->GetMySelfDetailAttrib()->GetMission(i); if(!OwnMission) continue; INT scriptId = OwnMission->m_idScript; misInfo = &(GetMissionInfo(scriptId)); if((!misInfo) || (!misInfo->m_bFill)) continue; INT max = (INT)misInfo->m_vecQuestRewardItem.size(); for(INT j=0; j< max; j++) { //取得物品 _MISSION_INFO::QuestRewardItem misItem = misInfo->m_vecQuestRewardItem[j]; if( misItem.pItemData->m_nType == MISSION_BONUS_TYPE_ITEM || misItem.pItemData->m_nType == MISSION_BONUS_TYPE_ITEM_RAND || misItem.pItemData->m_nType == MISSION_BONUS_TYPE_ITEM_RADIO ) { tObject_Item* pItem = misItem.pItemImpl; if(!pItem) continue; UpdateAction_FromItem(pItem); } } } return; }
void RemoveMissionInfo(INT nIndex) { const _OWN_MISSION * OwnMission = CUIDataPool::GetMe()->GetMySelfDetailAttrib()->GetMission(nIndex); INT scriptId = OwnMission->m_idScript; misInfo = &(GetMissionInfo(scriptId)); for(UINT i=0;i<misInfo->m_vecQuestDemandItem.size();i++) { if(misInfo->m_vecQuestDemandItem[i].pDemandItem) delete misInfo->m_vecQuestDemandItem[i].pDemandItem; if(misInfo->m_vecQuestDemandItem[i].pItemImpl) CObject_Item::DestroyItem((CObject_Item*)(misInfo->m_vecQuestDemandItem[i].pItemImpl)); } for(UINT i=0;i<misInfo->m_vecQuestRewardItem.size();i++) { if(misInfo->m_vecQuestRewardItem[i].pItemData) delete misInfo->m_vecQuestRewardItem[i].pItemData; } misInfo->m_misName = ""; misInfo->m_misDesc = ""; MisInfo::iterator it = m_misInfo.find(scriptId); if (it != m_misInfo.end()) { m_misInfo.erase(it); } }