private void parseRadioItemBonus(string RadioItemBonus, ref _MISSION_INFO MissionInfo)
    {
        try
        {
            if (!RadioItemBonus.Equals("nil"))
            {
                MatchCollection matches = StringRegex.Matches(RadioItemBonus);

                if (matches.Count == 0)
                {
                    LogManager.LogError("--------------------客户端配置中不存在匹配的RadioItem项。--------------------");
                }

                foreach (Match match in matches)
                {
                    string   matchstr          = match.Value;
                    string[] RadioItemBonusstr = matchstr.Split(new string[1] {
                        ","
                    }, StringSplitOptions.None);
                    uint itemId    = Convert.ToUInt32(FormatString(RadioItemBonusstr[0]));
                    int  itemCount = Convert.ToInt32(FormatString(RadioItemBonusstr[1]));

                    SMissionBonus rewardItem = new SMissionBonus();
                    rewardItem.m_ItemBonus.m_uItemID = itemId;
                    rewardItem.m_ItemBonus.m_yCount  = itemCount;
                    rewardItem.m_nType = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_ITEM_RADIO;

                    CObject_Item pItem = ObjectSystem.Instance.NewItem(itemId);
                    if (pItem == null)
                    {
                        LogManager.LogError("--------------------非法的奖励物品ID: " + itemId + "--------------------");
                    }
                    pItem.SetNumber(itemCount);
                    CActionSystem.Instance.UpdateAction_FromItem(pItem);

                    QuestRewardItem newRewardItem = new QuestRewardItem();
                    //CActionSystem::GetMe()->UpdateAction_FromItem(pItem);
                    newRewardItem.pItemData = rewardItem;
                    pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                    newRewardItem.pItemImpl = pItem;
                    newRewardItem.bSelected = 0;
                    MissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                }
            }
        }
        catch (Exception ex)
        {
            CDataBaseSystem.StrError += "--------------------parseRadioItem方法出错。--------------------";
            CDataBaseSystem.StrError += ex.ToString();
            throw new Exception(CDataBaseSystem.StrError);
        }
    }
    private void parseDemandItem(string DemandItem, ref _MISSION_INFO MissionInfo)
    {
        try
        {
            if (!DemandItem.Equals("nil"))
            {
                MatchCollection matches = StringRegex.Matches(DemandItem);

                if (matches.Count == 0)
                {
                    LogManager.LogError("--------------------客户端配置中不存在匹配的需求物品项。--------------------");
                }

                foreach (Match match in matches)
                {
                    string   matchstr      = match.Value;
                    string[] DemandItemstr = matchstr.Split(new string[1] {
                        ","
                    }, StringSplitOptions.None);
                    uint itemId    = Convert.ToUInt32(FormatString(DemandItemstr[0]));
                    int  itemCount = Convert.ToInt32(FormatString(DemandItemstr[1]));

                    CObject_Item pItem = ObjectSystem.Instance.NewItem(itemId);
                    if (pItem == null)
                    {
                        LogManager.LogError("--------------------非法的奖励物品ID: " + itemId + "--------------------");
                    }
                    pItem.SetNumber(itemCount);
                    CActionSystem.Instance.UpdateAction_FromItem(pItem);

                    QuestDemandItem newDemandItem = new QuestDemandItem();
                    newDemandItem.pDemandItem           = new SMissionBonusItem();
                    newDemandItem.pDemandItem.m_uItemID = itemId;
                    newDemandItem.pDemandItem.m_yCount  = itemCount;
                    pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                    newDemandItem.pItemImpl = pItem;
                    MissionInfo.m_vecQuestDemandItem.Add(newDemandItem);
                }
            }
        }
        catch (Exception ex)
        {
            CDataBaseSystem.StrError += "--------------------parseDemandItem方法出错。--------------------";
            CDataBaseSystem.StrError += ex.ToString();
            throw new Exception(CDataBaseSystem.StrError);
        }
    }
Exemplo n.º 3
0
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase packet, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                LogManager.Log("Receive GCBoxItemList Packet");
                CObjectManager pObjectManager = CObjectManager.Instance;
                GCBoxItemList  pPacket        = (GCBoxItemList)packet;
                // 清空
                CDataPool.Instance.ItemBox_Clear();
                // 记录箱子id
                CDataPool.Instance.ItemBox_SetID((int)pPacket.getItemBoxId());

                // 放置每一个物品
                for (int i = 0; i < pPacket.getItemNum(); i++)
                {
                    CObject_Item pItemObj = ObjectSystem.Instance.NewItem(pPacket.getItemList()[i].m_ItemIndex);
                    if (pItemObj == null)
                    {
                        continue;
                    }

                    pItemObj.SetGUID(
                        (ushort)((pPacket.getItemList())[i].m_ItemGUID.m_World),
                        (ushort)((pPacket.getItemList())[i].m_ItemGUID.m_Server),
                        (uint)((pPacket.getItemList())[i].m_ItemGUID.m_Serial));

                    pItemObj.SetExtraInfo(ref (pPacket.getItemList()[i]));
                    pItemObj.SetTypeOwner(ITEM_OWNER.IO_ITEMBOX);
                    pItemObj.SetPosIndex((short)i);

                    CDataPool.Instance.ItemBox_SetItem(i, pItemObj, true);

                    _ITEM pItem = (pPacket.getItemList())[i];
                    GameProcedure.s_pGameInterface.ItemBox_PickItem(pItem.m_ItemGUID, pPacket.getItemBoxId());
                }

                // 自动拾取,不再产生actionItem [3/29/2012 SUN]
                //int nObjId = CObjectManager.Instance.FindServerObject((int)pPacket.getItemBoxId()).ID;

                ////产生事件
                //CActionSystem.Instance.ItemBox_Created(nObjId);
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemplo n.º 4
0
    public virtual void ItemBox_SetItem(int nBoxIndex, CObject_Item pItem, bool bClearOld)
    {
        if (nBoxIndex < 0 || nBoxIndex >= GAMEDEFINE.MAX_BOXITEM_NUMBER)
        {
            return;
        }
        if (m_vItemBox[nBoxIndex] != null && bClearOld)
        {
            ObjectSystem.Instance.DestroyItem(m_vItemBox[nBoxIndex]);
            m_vItemBox[nBoxIndex] = null;
        }

        if (pItem != null)
        {
            pItem.SetTypeOwner(ITEM_OWNER.IO_ITEMBOX);
            pItem.SetPosIndex((short)nBoxIndex);
        }

        m_vItemBox[nBoxIndex] = pItem;
    }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase packet, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                GCDetailEquipList pPacket = packet as GCDetailEquipList;
                CObject           pObj    = CObjectManager.Instance.FindServerObject((int)pPacket.ObjId);
                if (pObj == null || !(pObj is CObject_Character))
                {
                    LogManager.LogError("找不到对应的NPC, ID:" + pPacket.ObjId);
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                CCharacterData pCharacterData = ((CObject_Character)pObj).GetCharacterData();

                //刷入数据池
                uint dwEquipMask = pPacket.PartFlags;
                if (pObj != (CObject)CObjectManager.Instance.getPlayerMySelf())
                {
                    for (int i = 0; i < (int)HUMAN_EQUIP.HEQUIP_NUMBER; i++)
                    {
                        if ((dwEquipMask & (1 << i)) != 0)
                        {
                            _ITEM        item     = pPacket.GetEquipData((HUMAN_EQUIP)i);
                            CObject_Item pItemObj = ObjectSystem.Instance.NewItem(item.m_ItemIndex);
                            if (pItemObj == null)
                            {
                                CDataPool.Instance.OtherPlayerEquip_SetItem((HUMAN_EQUIP)i, null, true);
                            }
                            else
                            {
                                pItemObj.SetGUID((ushort)item.m_ItemGUID.m_World,
                                                 (ushort)item.m_ItemGUID.m_Server,
                                                 (uint)item.m_ItemGUID.m_Serial);
                                pItemObj.SetExtraInfo(ref item);
                                pItemObj.SetTypeOwner(ITEM_OWNER.IO_PLAYEROTHER_EQUIP);
                                pItemObj.PosIndex = (short)i;

                                CDataPool.Instance.OtherPlayerEquip_SetItem((HUMAN_EQUIP)i, pItemObj, true);
                            }
                        }
                        else
                        {
                            CDataPool.Instance.OtherPlayerEquip_SetItem((HUMAN_EQUIP)i, null, true);
                        }
                    }

//                  CObject_PlayerOther* TargetAvatar = CObjectManager::GetMe()->GetTarget_Avatar();
//
//                  TargetAvatar->GetCharacterData()->Set_RaceID( ((CObject_Character*)pObj)->GetCharacterData()->Get_RaceID() );
//                  for(INT i=0; i<HEQUIP_NUMBER; i++)
//                  {
//                      TargetAvatar->GetCharacterData()->Set_Equip((HUMAN_EQUIP)i,((CObject_Character*)pObj)->GetCharacterData()->Get_Equip((HUMAN_EQUIP)i));
//                  }
//                  TargetAvatar->SetFaceDir(0.0f);
//
//                  CDataPool::GetMe()->Copy_To_TargetEquip(pObj);

                    // 更新其他玩家身上的装备到ActionSystem
                    CActionSystem.Instance.OtherPlayerEquip_Update();

                    // 通知界面事件
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_OTHERPLAYER_UPDATE_EQUIP);
                }
                else
                {
                    for (int i = 0; i < (int)HUMAN_EQUIP.HEQUIP_NUMBER; i++)
                    {
                        if ((dwEquipMask & (1 << i)) != 0)
                        {
                            _ITEM        item     = pPacket.GetEquipData((HUMAN_EQUIP)i);
                            CObject_Item pItemObj = ObjectSystem.Instance.NewItem(item.m_ItemIndex);
                            if (pItemObj == null)
                            {
                                continue;
                            }

                            pItemObj.SetGUID((ushort)item.m_ItemGUID.m_World,
                                             (ushort)item.m_ItemGUID.m_Server,
                                             (uint)item.m_ItemGUID.m_Serial);
                            pItemObj.SetExtraInfo(ref item);
                            pItemObj.SetTypeOwner(ITEM_OWNER.IO_MYSELF_EQUIP);
                            pItemObj.PosIndex = (short)i;

                            CDataPool.Instance.UserEquip_SetItem((HUMAN_EQUIP)i, pItemObj, true);
                        }
                    }

                    // 更新主角身上的装备到ActionSystem
                    CActionSystem.Instance.UserEquip_Update();

                    // 通知界面事件
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UPDATE_EQUIP);
                }
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemplo n.º 6
0
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain)
            {
                LogManager.Log("RECV GCDetailPetEquipList");
                GCDetailPetEquipList packet = pPacket as GCDetailPetEquipList;
                CObject pObj = CObjectManager.Instance.FindServerObject((int)packet.ObjID);
                //判定这个宠物是否是其他玩家,如果是,那么objid有效
                uint flags = packet.PartFlags;
                if (pObj != null)
                {
                    for (int i = 0; i < (int)PET_EQUIP.PEQUIP_NUMBER; i++)
                    {
                        if ((flags & (1 << i)) != 0)
                        {
                            _ITEM        item     = packet.Items[i];
                            CObject_Item pItemObj = ObjectSystem.Instance.NewItem(item.m_ItemIndex);
                            if (pItemObj == null)
                            {
                                CDataPool.Instance.OtherPlayerPetEquip_SetItem(packet.GUID, (PET_EQUIP)i, null, true);
                            }
                            else
                            {
                                pItemObj.SetGUID((ushort)item.m_ItemGUID.m_World,
                                                 (ushort)item.m_ItemGUID.m_Server,
                                                 (uint)item.m_ItemGUID.m_Serial);
                                pItemObj.SetExtraInfo(ref item);
                                pItemObj.SetTypeOwner(ITEM_OWNER.IO_PLAYEROTHER_EQUIP);
                                pItemObj.PosIndex = (short)i;
                                CDataPool.Instance.OtherPlayerPetEquip_SetItem(packet.GUID, (PET_EQUIP)i, pItemObj, true);
                            }
                        }
                        else
                        {
                            CDataPool.Instance.OtherPlayerPetEquip_SetItem(packet.GUID, (PET_EQUIP)i, null, true);
                        }
                    }
                    CActionSystem.Instance.OtherPlayerPetEquip_Update(packet.GUID);
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_OTHERPLAYER_UPDATE_PETEQUIP);
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                SDATA_PET curPet = CDataPool.Instance.Pet_GetPet(packet.GUID);
                if (curPet == null)
                {
                    LogManager.LogError("找不到对应的Pet, GUID:" + packet.GUID.m_uHighSelection + " " + packet.GUID.m_uLowSelection);
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                for (int i = 0; i < (int)(int)PET_EQUIP.PEQUIP_NUMBER; i++)
                {
                    if ((flags & (1 << i)) != 0)
                    {
                        _ITEM item = packet.Items[i];
                        LogManager.Log("GCDetailPetEquipList flags " + flags + " " + item.m_ItemIndex);
                        CObject_Item pItemObj = ObjectSystem.Instance.NewItem(item.m_ItemIndex);
                        pItemObj.SetGUID((ushort)item.m_ItemGUID.m_World,
                                         (ushort)item.m_ItemGUID.m_Server,
                                         (uint)item.m_ItemGUID.m_Serial);
                        pItemObj.SetExtraInfo(ref item);
                        pItemObj.SetTypeOwner(ITEM_OWNER.IO_PET_EQUIPT);
                        pItemObj.PosIndex = (short)i;
                        CDataPool.Instance.UserPetEquipt_SetItem(packet.GUID, (PET_EQUIP)i, pItemObj, true);
                    }
                }
                CActionSystem.Instance.UserPetEquiptItem_Update(packet.GUID);
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UPDATE_PETEQUIP);
            }

            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public void ParseMission(int missionId, int scriptId)
        {
            ScriptMissionInfo = MissionStruct.Instance.GetMissionInfo(missionId);

            if (!ScriptMissionInfo.m_bFill)
            {
                string FileName = CScriptSvm.Instance.GetMissionScriptFile(scriptId);
                if (FileName != string.Empty)
                {
                    MissionStruct.Instance.OpenScript(FileName);
                }
                else
                {
                    _DBC_MISSION_LIST MissionList = CDataBaseSystem.Instance.GetDataBase <_DBC_MISSION_LIST>((int)DataBaseStruct.DBC_MISSION_LIST).Search_Index_EQU(scriptId);
                    if (MissionList != null)
                    {
                        _DBC_MISSION_DATA MissionData = CDataBaseSystem.Instance.GetDataBase <_DBC_MISSION_DATA>((int)DataBaseStruct.DBC_MISSION_DATA).Search_Index_EQU(MissionList.nMissionID);
                        if (MissionData != null)
                        {
                            _DBC_MISSION_REWARD MissionReward = CDataBaseSystem.Instance.GetDataBase <_DBC_MISSION_REWARD>((int)DataBaseStruct.DBC_MISSION_REWARD).Search_Index_EQU(MissionList.nReward);
                            if (MissionReward != null)
                            {
                                _DBC_MISSION_DIALOG MissionDialog = CDataBaseSystem.Instance.GetDataBase <_DBC_MISSION_DIALOG>((int)DataBaseStruct.DBC_MISSION_DIALOG).Search_Index_EQU(MissionList.nDialog);
                                if (MissionDialog != null)
                                {
                                    ScriptMissionInfo.m_nLevel     = MissionData.nMissionLevel;
                                    ScriptMissionInfo.m_nKind      = MissionData.nMissionKind;
                                    ScriptMissionInfo.m_nElite     = 0;
                                    ScriptMissionInfo.m_nOKFail    = 1;
                                    ScriptMissionInfo.m_nLimitTime = -1;
                                    ScriptMissionInfo.m_nRound     = -1;
                                    ScriptMissionInfo.m_nBill      = -1;

                                    //固定奖励
                                    if (MissionReward.nItem1ID != -1 && MissionReward.nItem1Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionReward.nItem1ID);
                                        if (pItem != null)
                                        {
                                            SMissionBonus rewardItem = new SMissionBonus();
                                            rewardItem.m_ItemBonus.m_uItemID = (uint)MissionReward.nItem1ID;
                                            rewardItem.m_ItemBonus.m_yCount  = MissionReward.nItem1Num;
                                            rewardItem.m_nType = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_ITEM;

                                            newRewardItem.pItemData = rewardItem;
                                            newRewardItem.bSelected = 0;
                                            pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                            newRewardItem.pItemImpl = pItem;
                                            ScriptMissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                                        }
                                    }
                                    if (MissionReward.nItem2ID != -1 && MissionReward.nItem2Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionReward.nItem2ID);
                                        if (pItem != null)
                                        {
                                            SMissionBonus rewardItem = new SMissionBonus();
                                            rewardItem.m_ItemBonus.m_uItemID = (uint)MissionReward.nItem2ID;
                                            rewardItem.m_ItemBonus.m_yCount  = MissionReward.nItem2Num;
                                            rewardItem.m_nType = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_ITEM;

                                            newRewardItem.pItemData = rewardItem;
                                            newRewardItem.bSelected = 0;
                                            pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                            newRewardItem.pItemImpl = pItem;
                                            ScriptMissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                                        }
                                    }

                                    //选择奖励物品
                                    if (MissionReward.nRandomItem1ID != -1 && MissionReward.nRandomItem1Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionReward.nRandomItem1ID);
                                        if (pItem != null)
                                        {
                                            SMissionBonus rewardItem = new SMissionBonus();
                                            rewardItem.m_ItemBonus.m_uItemID = (uint)MissionReward.nRandomItem1ID;
                                            rewardItem.m_ItemBonus.m_yCount  = MissionReward.nRandomItem1Num;
                                            rewardItem.m_nType = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_ITEM_RADIO;

                                            newRewardItem.pItemData = rewardItem;
                                            newRewardItem.bSelected = 0;
                                            pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                            newRewardItem.pItemImpl = pItem;
                                            ScriptMissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                                        }
                                    }
                                    if (MissionReward.nRandomItem2ID != -1 && MissionReward.nRandomItem2Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionReward.nRandomItem2ID);
                                        if (pItem != null)
                                        {
                                            SMissionBonus rewardItem = new SMissionBonus();
                                            rewardItem.m_ItemBonus.m_uItemID = (uint)MissionReward.nRandomItem2ID;
                                            rewardItem.m_ItemBonus.m_yCount  = MissionReward.nRandomItem2Num;
                                            rewardItem.m_nType = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_ITEM_RADIO;

                                            newRewardItem.pItemData = rewardItem;
                                            newRewardItem.bSelected = 0;
                                            pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                            newRewardItem.pItemImpl = pItem;
                                            ScriptMissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                                        }
                                    }
                                    if (MissionReward.nRandomItem3ID != -1 && MissionReward.nRandomItem3Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionReward.nRandomItem3ID);
                                        if (pItem != null)
                                        {
                                            SMissionBonus rewardItem = new SMissionBonus();
                                            rewardItem.m_ItemBonus.m_uItemID = (uint)MissionReward.nRandomItem3ID;
                                            rewardItem.m_ItemBonus.m_yCount  = MissionReward.nRandomItem3Num;
                                            rewardItem.m_nType = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_ITEM_RADIO;

                                            newRewardItem.pItemData = rewardItem;
                                            newRewardItem.bSelected = 0;
                                            pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                            newRewardItem.pItemImpl = pItem;
                                            ScriptMissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                                        }
                                    }
                                    if (MissionReward.nRandomItem4ID != -1 && MissionReward.nRandomItem4Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionReward.nRandomItem4ID);
                                        if (pItem != null)
                                        {
                                            SMissionBonus rewardItem = new SMissionBonus();
                                            rewardItem.m_ItemBonus.m_uItemID = (uint)MissionReward.nRandomItem4ID;
                                            rewardItem.m_ItemBonus.m_yCount  = MissionReward.nRandomItem4Num;
                                            rewardItem.m_nType = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_ITEM_RADIO;

                                            newRewardItem.pItemData = rewardItem;
                                            newRewardItem.bSelected = 0;
                                            pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                            newRewardItem.pItemImpl = pItem;
                                            ScriptMissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                                        }
                                    }
                                    if (MissionReward.nMoney > 0)
                                    {
                                        SMissionBonus rewardItem = new SMissionBonus();
                                        rewardItem.m_uMoney = (uint)MissionReward.nMoney;
                                        rewardItem.m_nType  = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_MONEY;

                                        newRewardItem.pItemData = rewardItem;
                                        newRewardItem.bSelected = 0;
                                        ScriptMissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                                    }
                                    if (MissionReward.nExp > 0)
                                    {
                                        SMissionBonus rewardItem = new SMissionBonus();
                                        rewardItem.m_uExp  = (uint)MissionReward.nExp;
                                        rewardItem.m_nType = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_EXP;

                                        newRewardItem.pItemData = rewardItem;
                                        newRewardItem.bSelected = 0;
                                        ScriptMissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                                    }

                                    //交任务需要的物品
                                    if (MissionData.nFinishItem1ID != -1 && MissionData.nFinishItem1Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionData.nFinishItem1ID);

                                        newDemandItem.pDemandItem           = new SMissionBonusItem();
                                        newDemandItem.pDemandItem.m_uItemID = (uint)MissionData.nFinishItem1ID;
                                        newDemandItem.pDemandItem.m_yCount  = MissionData.nFinishItem1Num;
                                        pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                        newDemandItem.pItemImpl = pItem;
                                        ScriptMissionInfo.m_vecQuestDemandItem.Add(newDemandItem);
                                    }
                                    if (MissionData.nFinishItem2ID != -1 && MissionData.nFinishItem2Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionData.nFinishItem2ID);

                                        newDemandItem.pDemandItem           = new SMissionBonusItem();
                                        newDemandItem.pDemandItem.m_uItemID = (uint)MissionData.nFinishItem2ID;
                                        newDemandItem.pDemandItem.m_yCount  = MissionData.nFinishItem2Num;
                                        pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                        newDemandItem.pItemImpl = pItem;
                                        ScriptMissionInfo.m_vecQuestDemandItem.Add(newDemandItem);
                                    }
                                    if (MissionData.nFinishItem3ID != -1 && MissionData.nFinishItem3Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionData.nFinishItem3ID);

                                        newDemandItem.pDemandItem           = new SMissionBonusItem();
                                        newDemandItem.pDemandItem.m_uItemID = (uint)MissionData.nFinishItem3ID;
                                        newDemandItem.pDemandItem.m_yCount  = MissionData.nFinishItem3Num;
                                        pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                        newDemandItem.pItemImpl = pItem;
                                        ScriptMissionInfo.m_vecQuestDemandItem.Add(newDemandItem);
                                    }
                                    if (MissionData.nFinishItem4ID != -1 && MissionData.nFinishItem4Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionData.nFinishItem4ID);

                                        newDemandItem.pDemandItem           = new SMissionBonusItem();
                                        newDemandItem.pDemandItem.m_uItemID = (uint)MissionData.nFinishItem4ID;
                                        newDemandItem.pDemandItem.m_yCount  = MissionData.nFinishItem4Num;
                                        pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                        newDemandItem.pItemImpl = pItem;
                                        ScriptMissionInfo.m_vecQuestDemandItem.Add(newDemandItem);
                                    }
                                    if (MissionData.nFinishItem5ID != -1 && MissionData.nFinishItem5Num > 0)
                                    {
                                        CObject_Item pItem = ObjectSystem.Instance.NewItem((uint)MissionData.nFinishItem5ID);

                                        newDemandItem.pDemandItem           = new SMissionBonusItem();
                                        newDemandItem.pDemandItem.m_uItemID = (uint)MissionData.nFinishItem5ID;
                                        newDemandItem.pDemandItem.m_yCount  = MissionData.nFinishItem5Num;
                                        pItem.SetTypeOwner(ITEM_OWNER.IO_QUESTVIRTUALITEM);
                                        newDemandItem.pItemImpl = pItem;
                                        ScriptMissionInfo.m_vecQuestDemandItem.Add(newDemandItem);
                                    }

                                    //交任务需要杀怪
                                    if (MissionData.nMissionType != (int)GAMEDEFINE.MISSION_TYPE.MISSION_TYPE_SHOUJI)
                                    {
                                        if (MissionData.nMonster1ID != -1 && MissionData.nMonster1Num > 0)
                                        {
                                            _DBC_CREATURE_ATT MissionNpc = CDataBaseSystem.Instance.GetDataBase <_DBC_CREATURE_ATT>((int)DataBaseStruct.DBC_CREATURE_ATT).Search_Index_EQU(MissionData.nMonster1ID);
                                            if (MissionNpc != null)
                                            {
                                                newDemandKill.pDemandKill          = new SMissionDemandKill();
                                                newDemandKill.pDemandKill.m_uNPCID = (uint)MissionData.nMonster1ID;
                                                newDemandKill.pDemandKill.m_yCount = (byte)MissionData.nMonster1Num;
                                                newDemandKill.szNPCName            = MissionNpc.pName;
                                                ScriptMissionInfo.m_vecQuestDemandKill.Add(newDemandKill);
                                            }
                                        }
                                        if (MissionData.nMonster2ID != -1 && MissionData.nMonster2Num > 0)
                                        {
                                            _DBC_CREATURE_ATT MissionNpc = CDataBaseSystem.Instance.GetDataBase <_DBC_CREATURE_ATT>((int)DataBaseStruct.DBC_CREATURE_ATT).Search_Index_EQU(MissionData.nMonster2ID);
                                            if (MissionNpc != null)
                                            {
                                                newDemandKill.pDemandKill          = new SMissionDemandKill();
                                                newDemandKill.pDemandKill.m_uNPCID = (uint)MissionData.nMonster2ID;
                                                newDemandKill.pDemandKill.m_yCount = (byte)MissionData.nMonster2Num;
                                                newDemandKill.szNPCName            = MissionNpc.pName;
                                                ScriptMissionInfo.m_vecQuestDemandKill.Add(newDemandKill);
                                            }
                                        }
                                        if (MissionData.nMonster3ID != -1 && MissionData.nMonster3Num > 0)
                                        {
                                            _DBC_CREATURE_ATT MissionNpc = CDataBaseSystem.Instance.GetDataBase <_DBC_CREATURE_ATT>((int)DataBaseStruct.DBC_CREATURE_ATT).Search_Index_EQU(MissionData.nMonster3ID);
                                            if (MissionNpc != null)
                                            {
                                                newDemandKill.pDemandKill          = new SMissionDemandKill();
                                                newDemandKill.pDemandKill.m_uNPCID = (uint)MissionData.nMonster3ID;
                                                newDemandKill.pDemandKill.m_yCount = (byte)MissionData.nMonster3Num;
                                                newDemandKill.szNPCName            = MissionNpc.pName;
                                                ScriptMissionInfo.m_vecQuestDemandKill.Add(newDemandKill);
                                            }
                                        }
                                        if (MissionData.nMonster4ID != -1 && MissionData.nMonster4Num > 0)
                                        {
                                            _DBC_CREATURE_ATT MissionNpc = CDataBaseSystem.Instance.GetDataBase <_DBC_CREATURE_ATT>((int)DataBaseStruct.DBC_CREATURE_ATT).Search_Index_EQU(MissionData.nMonster4ID);
                                            if (MissionNpc != null)
                                            {
                                                newDemandKill.pDemandKill          = new SMissionDemandKill();
                                                newDemandKill.pDemandKill.m_uNPCID = (uint)MissionData.nMonster4ID;
                                                newDemandKill.pDemandKill.m_yCount = (byte)MissionData.nMonster4Num;
                                                newDemandKill.szNPCName            = MissionNpc.pName;
                                                ScriptMissionInfo.m_vecQuestDemandKill.Add(newDemandKill);
                                            }
                                        }
                                    }

                                    // 添加任务追踪时的描述
                                    //if (MissionData.nTargetTraceComplete != null && MissionData.nTargetTraceComplete != "")
                                    //{
                                    //    ScriptMissionInfo.m_vecTraceDescList.Add(MissionData.nTargetTraceComplete);
                                    //}
                                    //if (MissionData.nTargetTraceOne != null && MissionData.nTargetTraceOne != "")
                                    //{
                                    //    ScriptMissionInfo.m_vecTraceDescList.Add(MissionData.nTargetTraceOne);
                                    //}
                                    //if (MissionData.nTargetTraceTwo != null && MissionData.nTargetTraceTwo != "")
                                    //{
                                    //    ScriptMissionInfo.m_vecTraceDescList.Add(MissionData.nTargetTraceTwo);
                                    //}
                                    //if (MissionData.nTargetTraceThree != null && MissionData.nTargetTraceThree != "")
                                    //{
                                    //    ScriptMissionInfo.m_vecTraceDescList.Add(MissionData.nTargetTraceThree);
                                    //}
                                    //if (MissionData.nTargetTraceFour != null && MissionData.nTargetTraceFour != "")
                                    //{
                                    //    ScriptMissionInfo.m_vecTraceDescList.Add(MissionData.nTargetTraceFour);
                                    //}
                                    //if (MissionData.nTargetTraceFive != null && MissionData.nTargetTraceFive != "")
                                    //{
                                    //    ScriptMissionInfo.m_vecTraceDescList.Add(MissionData.nTargetTraceFive);
                                    //}

                                    if (ScriptMissionInfo.m_misName == string.Empty)
                                    {
                                        ScriptMissionInfo.m_misName = MissionDialog.szMissionName;
                                    }
                                    if (ScriptMissionInfo.m_misDesc == string.Empty)
                                    {
                                        ScriptMissionInfo.m_misDesc = MissionDialog.szMissionDesc;
                                    }
                                }
                            }
                        }
                    }
                }
                ScriptMissionInfo.m_bFill = true;
            }
        }