void MissionNodeOnDelete(object sender)
    {
        UIMissionNode node = sender as UIMissionNode;

        if (node == null)
        {
            return;
        }
        delView = node.mData as UIMissionMgr.MissionView;
        if (delView == null)
        {
            return;
        }

        MissionCommonData data = MissionManager.GetMissionCommonData(delView.mMissionID);

        if (data == null)
        {
            return;
        }
        //else
        //    MissionManager.Instance.m_PlayerMission.FailureMission(delView.mMissionID);

        if (!data.m_bGiveUp)
        {
            new PeTipMsg(PELocalization.GetString(8000174), PeTipMsg.EMsgLevel.Warning);
            return;
        }

        MessageBox_N.ShowYNBox(PELocalization.GetString(8000066), DeleteMissionOk);
    }
Exemple #2
0
    public void GetMutexID(int curMisID, ref List <int> idlist)
    {
        idlist.Clear();
        GameUI.Instance.mNPCTalk.m_selectMissionSource = curMisID;

        MissionCommonData data = MissionManager.GetMissionCommonData(curMisID);

        if (data == null)
        {
            return;
        }

        //判断条件
        if (data.m_GuanLianList.Count == 0)
        {
            return;
        }

        for (int m = 0; m < data.m_GuanLianList.Count; m++)
        {
            //!MissionManager.Instance.HadCompleteMission(data.m_GuanLianList[m]) && !MissionManager.Instance.HasMission(data.m_GuanLianList[m])
            if (MissionManager.Instance.m_PlayerMission.IsGetTakeMission(data.m_GuanLianList[m], false))
            {
                idlist.Add(data.m_GuanLianList[m]);
            }
        }

        return;
    }
Exemple #3
0
    public static List <PeEntity> NPCBeKilled(int npcNum)
    {
        List <PeEntity> npcs = new List <PeEntity>();

        if (npcNum == 25001 && ServantLeaderCmpt.Instance.GetServant(0) != null)
        {
            npcs.Add(ServantLeaderCmpt.Instance.GetServant(0).GetComponent <PeEntity>());
        }
        else if (npcNum == 25002 && ServantLeaderCmpt.Instance.GetServant(1) != null)
        {
            npcs.Add(ServantLeaderCmpt.Instance.GetServant(1).GetComponent <PeEntity>());
        }
        else if (npcNum == 25010)
        {
            if (ServantLeaderCmpt.Instance.GetServant(0) != null)
            {
                npcs.Add(ServantLeaderCmpt.Instance.GetServant(0).GetComponent <PeEntity>());
            }
            if (ServantLeaderCmpt.Instance.GetServant(1) != null)
            {
                npcs.Add(ServantLeaderCmpt.Instance.GetServant(1).GetComponent <PeEntity>());
            }
        }
        else
        {
            npcs.Add(EntityMgr.Instance.Get(npcNum));
        }
        foreach (var item in npcs)
        {
            if (item == null)
            {
                continue;
            }
            CSMain.RemoveNpc(item);
            item.SetAttribute(AttribType.Hp, 0, false);
            List <int> failureMission = new List <int>();
            foreach (var item1 in MissionManager.Instance.m_PlayerMission.m_MissionInfo.Keys)
            {
                MissionCommonData data = MissionManager.GetMissionCommonData(item1);
                if (data.m_iReplyNpc == item.Id)
                {
                    failureMission.Add(item1);
                }
            }
            foreach (var item2 in failureMission)
            {
                MissionManager.Instance.FailureMission(item2);
            }
            if (!MissionManager.Instance.m_PlayerMission.recordNpcName.ContainsKey(item.Id))
            {
                MissionManager.Instance.m_PlayerMission.recordNpcName.Add(item.Id, item.name.Substring(0, item.name.Length - 1 - System.Convert.ToString(item.Id).Length));
            }
        }
        return(npcs);
    }
    //删除任务
    public void ReplyDeleteMission(int nMissionID)
    {
        MissionCommonData data = MissionManager.GetMissionCommonData(nMissionID);

        if (null == data)
        {
            return;
        }

        PlayerNetwork.mainPlayer.RPCServer(EPacketType.PT_InGame_DeleteMission, nMissionID);
    }
Exemple #5
0
    bool CheckAddMissionReplyID(int id)
    {
        MissionCommonData data = MissionManager.GetMissionCommonData(id);

        if (data == null)
        {
            return(false);
        }

        if (id == 9137 || id == 9138)
        {
            if (data.m_iReplyNpc != m_CurSelNpc.Id)
            {
                return(false);
            }
        }

        //如果不是谈话任务,那么未接取或已完成的不能交
        if (!data.IsTalkMission())
        {
            if (!MissionManager.Instance.HasMission(id) || MissionManager.Instance.HadCompleteMission(id))
            {
                return(false);
            }
        }

        if (MissionRepository.IsAutoReplyMission(id))
        {
            return(false);
        }

        if (MissionRepository.GetMissionNpcListName(id, true) == "")
        {
            if (PeGameMgr.IsMulti)
            {
                MissionManager.Instance.RequestCompleteMission(id);
            }
            else
            {
                MissionManager.Instance.CompleteMission(id);
                MissionCommonData mcd = MissionManager.GetMissionCommonData(id);
                if (mcd != null && mcd.m_Type != 0)
                {
                    canShow = false;
                }
            }
            return(false);
        }

        return(true);
    }
Exemple #6
0
    protected override void OnHit()
    {
        if (MissionManager.Instance.m_PlayerMission.IsGetTakeMission(10046))
        {
            MissionCommonData data = MissionManager.GetMissionCommonData(10046);
            if (data == null)
            {
                return;
            }

            PeEntity npc = EntityMgr.Instance.Get(data.m_iNpc);
            MissionManager.Instance.SetGetTakeMission(10046, npc, MissionManager.TakeMissionType.TakeMissionType_Get);
        }
    }
    void ReFlashMissionContent(UIMissionNode node)
    {
        if (mTargetScroll != null)
        {
            mTargetScroll.scrollValue = 0;
        }

        ClearMissionContent();

        UIMissionMgr.MissionView view = node.mData as UIMissionMgr.MissionView;
        if (view == null)
        {
            return;
        }

        mDesLabel.text = view.mMissionDesc;
        int missionId         = view.mMissionID;
        MissionCommonData mcd = MissionManager.GetMissionCommonData(missionId);

        if (mcd != null)
        {
            if (mcd.addSpValue > 0)
            {
                mSPLabel.text = "SP" + " " + "+" + " " + "[ffff00]" + mcd.addSpValue + "[-]";
            }
        }

        SetGiver(view.mMissionStartNpc.mNpcIcoStr, view.mMissionStartNpc.mName);
        SetSubmit(view.mMissionReplyNpc.mNpcIcoStr, view.mMissionReplyNpc.mName);

        for (int i = 0; i < view.mTargetList.Count; i++)
        {
            AddTarget(view.mTargetList[i]);
        }
        mTargetGrid.Reposition();
        //if (mTargetScroll != null)
        //    mTargetScroll.scrollValue = 0;

        for (int i = 0; i < view.mRewardsList.Count; i++)
        {
            AddRewards(view.mRewardsList[i]);
        }
        mRewardsGrid.Reposition();
        if (mRewardsScroll != null)
        {
            mRewardsScroll.scrollValue = 0;
        }
    }
    void CreateMission(int nMissionID, int idx, int rewardIdx)
    {
        MissionCommonData data = MissionManager.GetMissionCommonData(nMissionID);

        if (data == null)
        {
            return;
        }
        if (PeGameMgr.IsMultiStory)
        {
            RMRepository.CreateRandomMission(nMissionID, idx, rewardIdx);
        }
        else
        {
            AdRMRepository.CreateRandomMission(nMissionID, idx, rewardIdx);
        }
    }
    public static void CreateRandomMission(int id, int idx = -1, int rewardIdx = -1)
    {
        if (MissionManager.Instance.HasMission(id))
        {
            return;
        }

        MissionCommonData data = GetRandomMission(id);

        if (data == null)
        {
            return;
        }

        RandomField rf;

        if (!m_RandomFieldMap.ContainsKey(id))
        {
            return;
        }

        rf = m_RandomFieldMap[id];
        if (idx < 0 || idx >= rf.TargetIDMap.Count)
        {
            idx = UnityEngine.Random.Range(0, rf.TargetIDMap.Count);
        }
        //idx = 0;

        TargetListInfo tli = rf.TargetIDMap[idx];

        data.m_TargetIDList.Clear();
        data.m_TalkOP.Clear();
        data.m_TalkIN.Clear();
        data.m_TalkED.Clear();
        data.m_PromptOP.Clear();
        data.m_PromptIN.Clear();
        data.m_PromptED.Clear();
        data.m_Com_RewardItem.Clear();
        data.m_Com_RemoveItem.Clear();

        int tid;

        for (int i = 0; i < tli.listid.Count; i++)
        {
            tid = tli.listid[i] / 1000;
            if (tid == 2)
            {
                TypeCollectData colData = MissionManager.GetTypeCollectData(tli.listid[i]);
                if (colData == null)
                {
                    continue;
                }

                MissionIDNum tmp;
                tmp.id  = colData.ItemID;
                tmp.num = colData.ItemNum;
                data.m_Com_RemoveItem.Add(tmp);
            }

            data.m_TargetIDList.Add(tli.listid[i]);
        }

        if (rf.TalkOPMap.Count > idx)
        {
            tli = rf.TalkOPMap[idx];
            for (int i = 0; i < tli.listid.Count; i++)
            {
                data.m_TalkOP.Add(tli.listid[i]);
            }
        }

        if (rf.TalkINMap.Count > idx)
        {
            tli = rf.TalkINMap[idx];
            for (int i = 0; i < tli.listid.Count; i++)
            {
                if (tli.listid[i] == 0)
                {
                    continue;
                }

                data.m_TalkIN.Add(tli.listid[i]);
            }
        }

        if (rf.TalkEDMap.Count > idx)
        {
            tli = rf.TalkEDMap[idx];
            for (int i = 0; i < tli.listid.Count; i++)
            {
                data.m_TalkED.Add(tli.listid[i]);
            }
        }

        if (rf.TalkOPSMap.Count > idx)
        {
            tli = rf.TalkOPSMap[idx];
            for (int i = 0; i < tli.listid.Count; i++)
            {
                data.m_PromptOP.Add(tli.listid[i]);
            }
        }

        if (rf.TalkINSMap.Count > idx)
        {
            tli = rf.TalkINSMap[idx];
            for (int i = 0; i < tli.listid.Count; i++)
            {
                data.m_PromptIN.Add(tli.listid[i]);
            }
        }

        if (rf.TalkEDSMap.Count > idx)
        {
            tli = rf.TalkEDSMap[idx];
            for (int i = 0; i < tli.listid.Count; i++)
            {
                data.m_PromptED.Add(tli.listid[i]);
            }
        }

        if (rf.RewardMap.Count > 0)
        {
            rewardIdx = rewardIdx == -1 ? UnityEngine.Random.Range(0, rf.RewardMap.Count) : rewardIdx;
            for (int i = 0; i < rf.RewardMap[rewardIdx].Count; i++)
            {
                MissionIDNum idnum = rf.RewardMap[rewardIdx][i];
                data.m_Com_RewardItem.Add(idnum);
            }
        }

        foreach (var item in rf.FixedRewardMap)
        {
            data.m_Com_RewardItem.Add(item);
        }
    }
    public static void LoadRandMission()
    {
        SqliteDataReader reader = LocalDatabase.Instance.ReadFullTable("RandomQuest_List");

        reader.Read();
        while (reader.Read())
        {
            MissionCommonData data = new MissionCommonData();
            RandomField       rf   = new RandomField();
            int strid;
            data.m_Type = MissionType.MissionType_Sub;

            data.m_ID          = Convert.ToInt32(reader.GetString(reader.GetOrdinal("ID")));
            strid              = Convert.ToInt32(reader.GetString(reader.GetOrdinal("MissionName")));
            data.m_MissionName = PELocalization.GetString(strid);
            data.m_MaxNum      = Convert.ToInt32(reader.GetString(reader.GetOrdinal("MaxNum")));

            string   strtmp  = reader.GetString(reader.GetOrdinal("TargetIDList"));
            string[] tmplist = strtmp.Split(';');
            string[] tmplist1, tmplist2;

            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                TargetListInfo tli;
                tli.listid = new List <int>();
                tmplist1   = tmplist[i].Split(',');
                for (int m = 0; m < tmplist1.Length; m++)
                {
                    tli.listid.Add(Convert.ToInt32(tmplist1[m]));
                }

                rf.TargetIDMap.Add(tli);
            }


            strtmp  = reader.GetString(reader.GetOrdinal("Get_DemandItem"));
            tmplist = strtmp.Split(',');
            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                tmplist1 = tmplist[i].Split('_');
                if (tmplist1.Length != 2)
                {
                    continue;
                }

                MissionIDNum tmp;
                tmp.id  = Convert.ToInt32(tmplist1[0]);
                tmp.num = Convert.ToInt32(tmplist1[1]);
                data.m_Get_DemandItem.Add(tmp);
            }

            strtmp  = reader.GetString(reader.GetOrdinal("Get_DeleteItem"));
            tmplist = strtmp.Split(',');
            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                tmplist1 = tmplist[i].Split('_');
                if (tmplist1.Length != 2)
                {
                    continue;
                }

                MissionIDNum tmp;
                tmp.id  = Convert.ToInt32(tmplist1[0]);
                tmp.num = Convert.ToInt32(tmplist1[1]);
                data.m_Get_DeleteItem.Add(tmp);
            }

            strtmp  = reader.GetString(reader.GetOrdinal("Get_MissionItem"));
            tmplist = strtmp.Split(',');
            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                tmplist1 = tmplist[i].Split('_');
                if (tmplist1.Length != 2)
                {
                    continue;
                }

                MissionIDNum tmp;
                tmp.id  = Convert.ToInt32(tmplist1[0]);
                tmp.num = Convert.ToInt32(tmplist1[1]);
                data.m_Get_MissionItem.Add(tmp);
            }

            strtmp  = reader.GetString(reader.GetOrdinal("CoRewardItem"));
            tmplist = strtmp.Split(';');
            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                tmplist1 = tmplist[i].Split(',');
                List <MissionIDNum> tmp = new List <MissionIDNum>();
                for (int j = 0; j < tmplist1.Length; j++)
                {
                    tmplist2 = tmplist1[j].Split('_');
                    if (tmplist2.Length != 2)
                    {
                        continue;
                    }

                    MissionIDNum idNum;
                    idNum.id  = Convert.ToInt32(tmplist2[0]);
                    idNum.num = Convert.ToInt32(tmplist2[1]);
                    tmp.Add(idNum);
                }

                if (tmp.Count == 0)
                {
                    continue;
                }

                rf.RewardMap.Add(tmp);
            }

            strtmp  = reader.GetString(reader.GetOrdinal("CoRemoveItem"));
            tmplist = strtmp.Split(',');
            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                tmplist1 = tmplist[i].Split('_');
                if (tmplist1.Length != 2)
                {
                    continue;
                }

                MissionIDNum tmp;
                tmp.id  = Convert.ToInt32(tmplist1[0]);
                tmp.num = Convert.ToInt32(tmplist1[1]);
                data.m_Com_RemoveItem.Add(tmp);
            }

            strid = Convert.ToInt32(reader.GetString(reader.GetOrdinal("Description")));
            data.m_Description = PELocalization.GetString(strid);

            strtmp  = reader.GetString(reader.GetOrdinal("player_talk"));
            tmplist = strtmp.Split(',');
            if (tmplist.Length == 2)
            {
                data.m_PlayerTalk[0] = Convert.ToInt32(tmplist[0]);
                data.m_PlayerTalk[1] = Convert.ToInt32(tmplist[1]);
            }
            else if (tmplist.Length == 1 && tmplist[0] != "0")
            {
                data.m_PlayerTalk[0] = Convert.ToInt32(tmplist[0]);
                data.m_PlayerTalk[1] = 0;
            }

            strtmp  = reader.GetString(reader.GetOrdinal("TalkOP"));
            tmplist = strtmp.Split(';');
            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                TargetListInfo tli;
                tli.listid = new List <int>();
                tmplist1   = tmplist[i].Split(',');
                for (int m = 0; m < tmplist1.Length; m++)
                {
                    tli.listid.Add(Convert.ToInt32(tmplist1[m]));
                }

                rf.TalkOPMap.Add(tli);
            }

            strtmp  = reader.GetString(reader.GetOrdinal("TalkIN"));
            tmplist = strtmp.Split(';');
            for (int i = 0; i < tmplist.Length; i++)
            {
                //if (tmplist[i] == "0")
                //    continue;

                TargetListInfo tli;
                tli.listid = new List <int>();
                tmplist1   = tmplist[i].Split(',');
                for (int m = 0; m < tmplist1.Length; m++)
                {
                    tli.listid.Add(Convert.ToInt32(tmplist1[m]));
                }

                rf.TalkINMap.Add(tli);
            }


            strtmp  = reader.GetString(reader.GetOrdinal("TalkED"));
            tmplist = strtmp.Split(';');
            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                TargetListInfo tli;
                tli.listid = new List <int>();
                tmplist1   = tmplist[i].Split(',');
                for (int m = 0; m < tmplist1.Length; m++)
                {
                    tli.listid.Add(Convert.ToInt32(tmplist1[m]));
                }

                rf.TalkEDMap.Add(tli);
            }

            if (Convert.ToInt32(reader.GetString(reader.GetOrdinal("bGiveUp"))) == 0)
            {
                data.m_bGiveUp = false;
            }
            else
            {
                data.m_bGiveUp = true;
            }

            strtmp  = reader.GetString(reader.GetOrdinal("TalkOP_SP"));
            tmplist = strtmp.Split(';');
            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                TargetListInfo tli;
                tli.listid = new List <int>();
                tmplist1   = tmplist[i].Split(',');
                for (int m = 0; m < tmplist1.Length; m++)
                {
                    tli.listid.Add(Convert.ToInt32(tmplist1[m]));
                }

                rf.TalkOPSMap.Add(tli);
            }

            strtmp  = reader.GetString(reader.GetOrdinal("TalkIN_SP"));
            tmplist = strtmp.Split(';');
            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                TargetListInfo tli;
                tli.listid = new List <int>();
                tmplist1   = tmplist[i].Split(',');
                for (int m = 0; m < tmplist1.Length; m++)
                {
                    tli.listid.Add(Convert.ToInt32(tmplist1[m]));
                }

                rf.TalkINSMap.Add(tli);
            }

            strtmp  = reader.GetString(reader.GetOrdinal("TalkED_SP"));
            tmplist = strtmp.Split(';');
            for (int i = 0; i < tmplist.Length; i++)
            {
                if (tmplist[i] == "0")
                {
                    continue;
                }

                TargetListInfo tli;
                tli.listid = new List <int>();
                tmplist1   = tmplist[i].Split(',');
                for (int m = 0; m < tmplist1.Length; m++)
                {
                    tli.listid.Add(Convert.ToInt32(tmplist1[m]));
                }

                rf.TalkEDSMap.Add(tli);
            }

            strtmp = reader.GetString(reader.GetOrdinal("NextQuest"));
            if (strtmp != "0")
            {
                tmplist = strtmp.Split(',');
                for (int i = 0; i < tmplist.Length; i++)
                {
                    data.m_EDID.Add(Convert.ToInt32(tmplist[i]));
                }
            }

            m_RandomFieldMap.Add(data.m_ID, rf);
            m_RandMisMap.Add(data.m_ID, data);
        }
    }
    public void SetMission(int missionId, UIBaseWidget parent)
    {
        mMissionId     = missionId;
        mParentNPCTalk = parent as UINPCTalk;
//		mParentMissionMain = parent as MissionMainGui_N;
        mNPCGui = parent as UINpcWnd;
        mMissionContent.text = MissionRepository.GetMissionNpcListName(mMissionId, false);

        MissionCommonData data = MissionManager.GetMissionCommonData(missionId);

        if (data == null)
        {
            return;
        }

        if (mMissionMarke != null)
        {
            if (m_Player != null)
            {
                if (MissionManager.Instance.HasMission(missionId))
                {
                    if (data.m_Type == MissionType.MissionType_Main /* && !MissionManager.HasRandomMission(missionId)*/)
                    {
                        if (MissionManager.Instance.IsReplyMission(missionId))
                        {
                            mMissionMarke.spriteName = "MainMissionEnd";
                        }
                        else
                        {
                            mMissionMarke.spriteName = "MissionNotEnd";
                        }
                    }
                    else if (data.IsTalkMission())
                    {
                        mMissionMarke.spriteName = "SubMission";
                    }
                    else
                    {
                        if (MissionManager.Instance.IsReplyMission(missionId))
                        {
                            mMissionMarke.spriteName = "SubMissionEnd";
                        }
                        else
                        {
                            mMissionMarke.spriteName = "MissionNotEnd";
                        }
                    }
                }
                else
                {
                    if (data.m_Type == MissionType.MissionType_Main)
                    {
                        mMissionMarke.spriteName = "MainMissionGet";
                    }
                    else if (data.m_Type == MissionType.MissionType_Sub)
                    {
                        mMissionMarke.spriteName = "SubMissionGet";
                    }
                    else
                    {
                        mMissionMarke.spriteName = "SubMission";
                    }
                }
            }
            else
            {
                mMissionMarke.gameObject.SetActive(false);
            }
            mMissionMarke.MakePixelPerfect();
        }
        else
        {
            if (MissionManager.Instance.HasMission(missionId))
            {
                if (data.m_Type == MissionType.MissionType_Main &&
                    !MissionManager.HasRandomMission(missionId))
                {
                    if (MissionManager.Instance.IsReplyMission(missionId))
                    {
                        mMissionContent.color = Color.yellow;
                    }
                    else
                    {
                        mMissionContent.color = Color.white;
                    }
                }
                else if (data.IsTalkMission())
                {
                    mMissionContent.color = Color.white;
                }
                else
                {
                    if (MissionManager.Instance.IsReplyMission(missionId))
                    {
                        mMissionContent.color = Color.yellow;
                    }
                    else
                    {
                        mMissionContent.color = Color.white;
                    }
                }
            }
            else
            {
                mMissionContent.color = Color.white;
            }

            UIButton button = mMissionContent.GetComponent <UIButton>();
            if (button)
            {
                button.defaultColor = mMissionContent.color;
            }
        }
        RefreshCollider();
    }
Exemple #12
0
    public bool Start()
    {
        //if (playerMission.GetMissionFlagType(MissionId) == null) return false;
        if (SceneEntityCreator.self.PlayerTrans == null)
        {
            return(false);
        }

        //if (!MissionManager.Instance.m_bHadInitMission)
        //{
        //    Debug.LogError("[MissionManager]Mission not inited.");
        //    return false;
        //}
        MissionCommonData data = MissionManager.GetMissionCommonData(MissionId);

        for (int i = 0; i < data.m_TargetIDList.Count; i++)
        {
            if (data.m_TargetIDList[i] == TargetId)
            {
                _idxTarId = i;
                break;
            }
        }
        if (_idxTarId == -1)
        {
            return(false);
        }
        _towerData = MissionManager.GetTypeTowerDefendsData(TargetId);
        if (_towerData == null)
        {
            return(false);
        }

        if (PeGameMgr.IsSingle)
        {
            playerMission.m_TowerUIData.MaxCount = _towerData.m_Count;
        }
        else
        {
            playerMission.m_TowerUIData.MaxCount = 0;
        }
        playerMission.m_TowerUIData.MissionID = MissionId;
        playerMission.m_TowerUIData.CurCount  = 0;

        if (_towerData.m_TdInfoId != 0)
        {
            _entityBcn = EntityMonsterBeacon.CreateMonsterBeaconByTDID(_towerData.m_TdInfoId, SceneEntityCreator.self.PlayerTrans,
                                                                       playerMission.m_TowerUIData, _entityBcnId, _towerData, data.m_iNpc);
        }
        else if (_towerData.m_SweepId.Count > 0)
        {
            _entityBcn = EntityMonsterBeacon.CreateMonsterBeaconBySweepID(_towerData.m_SweepId, SceneEntityCreator.self.PlayerTrans,
                                                                          playerMission.m_TowerUIData, _towerData.m_Time, _entityBcnId, _towerData, data.m_iNpc);
        }
        else
        {
            return(false);
        }

        if (_towerData.m_tolTime != 0)
        {
            MissionManager.Instance.SetTowerMissionStartTime(TargetId);
        }

        if (_entityBcn == null)
        {
            return(false);
        }
        _entityBcnId = _entityBcn.Id;
        _entityBcn.handlerNewWave  += OnNewWave;
        _entityBcn.handlerOneDeath += OnOneDeath;

        PeEntity npc = null;

        for (int m = 0; m < _towerData.m_iNpcList.Count; m++)
        {
            npc = EntityMgr.Instance.Get(_towerData.m_iNpcList[m]);
            if (npc == null)
            {
                continue;
            }
            npc.SetInvincible(false);
        }

        //_leftCntToFin = _towerData.m_Count;
        //Register all waves into playerMission to avoid complete shortly
        string value = "0_0_0_0_0"; // just for pass checking in IsReplyTarget: x(spType), num, cnt, created, completeTarget

        playerMission.ModifyQuestVariable(MissionId, PlayerMission.MissionFlagTDMonster + _idxTarId, value);
        //MissionManager.mTowerKillNum = "0";
        //MissionManager.mTowerMonCount = towerData.m_Count.ToString();

        return(true);
    }
    public static void Import(byte[] buffer)
    {
        if (buffer.Length == 0)
        {
            return;
        }

        MemoryStream ms  = new MemoryStream(buffer);
        BinaryReader _in = new BinaryReader(ms);

        int iSize = _in.ReadInt32();
        int count = 0;

        for (int k = 0; k < iSize; k++)
        {
            int id = _in.ReadInt32();
            if (!m_RandMisMap.ContainsKey(id))
            {
                return;
            }

            MissionCommonData data = m_RandMisMap[id];
            if (data == null)
            {
                continue;
            }

            data.m_TargetIDList.Clear();
            data.m_TalkOP.Clear();
            data.m_TalkIN.Clear();
            data.m_TalkED.Clear();
            data.m_PromptOP.Clear();
            data.m_PromptIN.Clear();
            data.m_PromptED.Clear();
            data.m_Com_RewardItem.Clear();
            data.m_Com_RemoveItem.Clear();

            //lz-2016.08.17 因为开始存储的不是映射,这里读到的数据是上一次语言的数据,所以不对,原本的数据是对的,不用修改
            _in.ReadString();
            //data.m_MissionName = _in.ReadString();

            data.m_iNpc      = _in.ReadInt32();
            data.m_iReplyNpc = _in.ReadInt32();
            NpcMissionDataRepository.AddReplyMission(data.m_iReplyNpc, id);
            data.m_Type   = (MissionType)_in.ReadInt32();
            data.m_MaxNum = _in.ReadInt32();

            //lz-2016.08.17 因为开始存储的不是映射,这里读到的数据是上一次语言的数据,所以不对,原本的数据是对的,不用修改
            _in.ReadString();
            //data.m_Description = _in.ReadString();

            count = _in.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                data.m_TargetIDList.Add(Convert.ToInt32(_in.ReadInt32()));
            }

            count = _in.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                data.m_PlayerTalk[i] = Convert.ToInt32(_in.ReadInt32());
            }

            MissionIDNum idnum;
            count = _in.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                idnum.id  = Convert.ToInt32(_in.ReadInt32());
                idnum.num = Convert.ToInt32(_in.ReadInt32());
                data.m_Get_DemandItem.Add(idnum);
            }

            count = _in.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                idnum.id  = Convert.ToInt32(_in.ReadInt32());
                idnum.num = Convert.ToInt32(_in.ReadInt32());
                data.m_Get_DeleteItem.Add(idnum);
            }

            count = _in.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                idnum.id  = Convert.ToInt32(_in.ReadInt32());
                idnum.num = Convert.ToInt32(_in.ReadInt32());
                data.m_Get_MissionItem.Add(idnum);
            }

            count = _in.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                idnum.id  = Convert.ToInt32(_in.ReadInt32());
                idnum.num = Convert.ToInt32(_in.ReadInt32());
                data.m_Com_RewardItem.Add(idnum);
            }

            count = _in.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                idnum.id  = Convert.ToInt32(_in.ReadInt32());
                idnum.num = Convert.ToInt32(_in.ReadInt32());
                data.m_Com_SelRewardItem.Add(idnum);
            }

            count = _in.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                idnum.id  = Convert.ToInt32(_in.ReadInt32());
                idnum.num = Convert.ToInt32(_in.ReadInt32());
                data.m_Com_RemoveItem.Add(idnum);
            }

            count = _in.ReadInt32();
            data.m_TalkOP.Clear();
            for (int i = 0; i < count; i++)
            {
                data.m_TalkOP.Add(Convert.ToInt32(_in.ReadInt32()));
            }

            count = _in.ReadInt32();
            data.m_OPID.Clear();
            for (int i = 0; i < count; i++)
            {
                data.m_OPID.Add(Convert.ToInt32(_in.ReadInt32()));
            }

            count = _in.ReadInt32();
            data.m_TalkIN.Clear();
            for (int i = 0; i < count; i++)
            {
                data.m_TalkIN.Add(Convert.ToInt32(_in.ReadInt32()));
            }

            count = _in.ReadInt32();
            data.m_INID.Clear();
            for (int i = 0; i < count; i++)
            {
                data.m_INID.Add(Convert.ToInt32(_in.ReadInt32()));
            }

            count = _in.ReadInt32();
            data.m_TalkED.Clear();
            for (int i = 0; i < count; i++)
            {
                data.m_TalkED.Add(Convert.ToInt32(_in.ReadInt32()));
            }

            count = _in.ReadInt32();
            data.m_EDID.Clear();
            for (int i = 0; i < count; i++)
            {
                data.m_EDID.Add(Convert.ToInt32(_in.ReadInt32()));
            }
        }

        _in.Close();
        ms.Close();
    }
    public bool Start()
    {
        MissionCommonData data = MissionManager.GetMissionCommonData(MissionId);

        for (int i = 0; i < data.m_TargetIDList.Count; i++)
        {
            if (data.m_TargetIDList[i] == TargetId)
            {
                _idxTarId = i;
                break;
            }
        }
        if (_idxTarId == -1)
        {
            return(false);
        }
        _data = MissionManager.GetTypeMonsterData(TargetId);
        if (_data == null)
        {
            return(false);
        }
        Vector3 referToPos;

        switch (_data.m_mr.refertoType)
        {
        case ReferToType.None:
            referToPos = PeCreature.Instance.mainPlayer.position;
            break;

        case ReferToType.Player:
            referToPos = PeCreature.Instance.mainPlayer.position;
            break;

        case ReferToType.Town:
            VArtifactUtil.GetTownPos(_data.m_mr.referToID, out referToPos);
            break;

        case ReferToType.Npc:
            referToPos = EntityMgr.Instance.Get(MissionManager.Instance.m_PlayerMission.adId_entityId[_data.m_mr.referToID]).position;
            break;

        default:
            referToPos = PeCreature.Instance.mainPlayer.position;
            break;
        }
        if (referToPos == Vector3.zero)
        {
            return(false);
        }
        if (PeGameMgr.IsSingle || PeGameMgr.IsTutorial)
        {
            if (_data.type == 2)
            {
                DoodadEntityCreator.commonDeathEvent += OnMonsterDeath;
            }
            else
            {
                MonsterEntityCreator.commonDeathEvent += OnMonsterDeath;
            }
        }

        GenMonsterInMission = !PeGameMgr.IsStory;
        if (GenMonsterInMission)
        {
#if  DbgNearGen
            Vector2 v2 = Vector2.zero;
#else
            Vector2 v2 = UnityEngine.Random.insideUnitCircle.normalized * _data.m_mr.radius1;
#endif
            Vector3 center = referToPos + new Vector3(v2.x, 0.0f, v2.y);
            //for (int i = 0; i < _data.m_MonsterList.Count; i++) {
            //	int num = _data.m_MonsterList[i].type;
            //             int protoId = _data.m_MonsterList[i].npcs[UnityEngine.Random.Range(0, _data.m_MonsterList[i].npcs.Count)];
            //	for (int j = 0; j < num; j++) {
            //		Vector3 pos = AiUtil.GetRandomPosition (center, 0, _data.m_mr.radius2);
            //		pos.y = SceneEntityPosAgent.PosYTBD;	// let posagent to set y
            //		SceneEntityPosAgent agent = MonsterEntityCreator.CreateAgent(pos, protoId);
            //		agent.spInfo = new MonsterEntityCreator.AgentInfo(EntityMonsterBeacon.GetSpBeacon4MonsterKillTask());
            //		_agents.Add (agent);
            //		SceneMan.AddSceneObj (agent);
            //	}
            //}

            for (int i = 0; i < _data.m_CreMonList.Count; i++)
            {
                for (int j = 0; j < _data.m_CreMonList[i].monNum; j++)
                {
                    Vector3 pos = AiUtil.GetRandomPosition(center, 0, _data.m_mr.radius2);
                    pos.y = SceneEntityPosAgent.PosYTBD;    // let posagent to set y
                    int protoId = _data.m_CreMonList[i].monID;
                    if (_data.m_CreMonList[i].type == 1)
                    {
                        protoId |= EntityProto.IdGrpMask;
                    }
                    SceneEntityPosAgent agent = MonsterEntityCreator.CreateAgent(pos, protoId);
                    agent.spInfo  = new MonsterEntityCreator.AgentInfo(EntityMonsterBeacon.GetSpBeacon4MonsterKillTask());
                    agent.canRide = false;
                    _agents.Add(agent);
                    SceneMan.AddSceneObj(agent);
                }
            }
        }
        return(true);
    }
    public static void CreateRandomMission(int id)
    {
        int type = 1;

        if (MissionRepository.m_MissionCommonMap.ContainsKey(id))
        {
            MissionCommonData data1 = MissionManager.GetMissionCommonData(id);

            if (data1 != null)
            {
                return;
            }
        }

        MutiPlayMissionRand rand = GetMissRand(id);

        if (rand == null)
        {
            return;
        }

        //  0小怪、1BOSS、2收集、3护送、4探索、5塔防
        if (GameConfig.IsMultiServer)
        {
            type = UnityEngine.Random.Range(1, 3);          //随机1
            //PlayerFactory.RandIds[0] = type;
        }
        else
        {
            //type = PlayerFactory.RandIds[0];
        }

        MissionType          misstype = MissionType.MissionType_Main;
        TypeMonsterData      monData  = null;
        TypeCollectData      colData  = null;
        TypeMessengerData    mesData  = null;
        TypeFollowData       folData  = null;
        TypeSearchData       seaData  = null;
        TypeTowerDefendsData towData  = null;

        //switch (type)
        //{
        //    case 0:
        //        monData = new TypeMonsterData();
        //        break;
        //    case 1:
        //        monData = new TypeMonsterData();
        //        break;
        //    case 2:
        //        colData = new TypeCollectData();
        //        break;
        //    case 3:
        //        folData = new TypeFollowData();
        //        break;
        //    case 4:
        //        seaData = new TypeSearchData();
        //        break;
        //    case 5:
        //        towData = new TypeTowerDefendsData();
        //        break;
        //}

        int idx = 0;
        MissionCommonData data = new MissionCommonData();

        data.m_ID = id;
//        string[] listName = { "Monster Hunter", "Boss Hunter", "Gather", "Escort", "Exploration", "Defend" };

        //data.m_MissionName = listName[type];
        data.m_iNpc      = 0;
        data.m_iReplyNpc = 0;
        data.m_Type      = misstype;
        data.m_MaxNum    = 1;

        TalkData talkdata = TalkRespository.GetTalkData(911);

        if (talkdata != null)
        {
            data.m_Description = talkdata.m_Content;
        }

        if (type == 0 || type == 1)
        {
            if (GameConfig.IsMultiServer)
            {
                idx = 0;                          //随机2
                //PlayerFactory.RandIds[1] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[1];
            }

            monData.m_TargetID   = 1100;
            monData.m_MonsterID  = rand.m_MulKillID[idx];
            monData.m_MonsterNum = rand.m_MulKillNum[idx];
            monData.m_Desc       = "KillMonster : " + AiDataBlock.GetAIDataName(monData.m_MonsterID);

            data.m_TargetIDList.Add(monData.m_TargetID);
        }
        else if (type == 2)
        {
            if (GameConfig.IsMultiServer)
            {
                idx = UnityEngine.Random.Range(0, rand.m_MulCollectID.Count);            //随机3
                //PlayerFactory.RandIds[2] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[2];
            }

            colData.m_TargetID = 2100;

            colData.ItemID  = rand.m_MulCollectID[idx];
            idx             = UnityEngine.Random.Range(0, rand.m_MulCollectNum.Count);
            colData.ItemNum = rand.m_MulCollectNum[idx];
            colData.m_Desc  = "Gather : " + ItemAsset.ItemProto.GetName(colData.ItemID);

            data.m_TargetIDList.Add(colData.m_TargetID);
        }
        if (type == 5)
        {
            towData.m_TargetID = 7100;
            towData.m_Time     = 5;
            towData.m_Desc     = data.m_MissionName;

            //towData.m_Pos = npcobj.transform.position;
            //towData.m_NpcList.Add(npcname);
            if (idx == 1)
            {
                towData.m_Count = UnityEngine.Random.Range(3, 6);
            }
            else if (idx == 2)
            {
                towData.m_Count = UnityEngine.Random.Range(5, 9);
            }
            else
            {
                towData.m_Count = UnityEngine.Random.Range(8, 13);
            }

            //for (int i = 0; i < towData.m_Count; i++)
            //{
            //    if (idx == 1)
            //    {
            //        towData.m_TDInfoList.Add(UnityEngine.Random.Range(17, 22));
            //    }
            //    else if (idx == 2)
            //    {
            //        towData.m_TDInfoList.Add(UnityEngine.Random.Range(22, 26));
            //    }
            //    else
            //    {
            //        towData.m_TDInfoList.Add(UnityEngine.Random.Range(26, 30));
            //    }
            //}

            data.m_TargetIDList.Add(towData.m_TargetID);
        }

        ////  0.小怪、1.BOSS、2.收集、3.护送、4.探索、5.塔防
        MissionIDNum idnum = new MissionIDNum();

        switch (type)
        {
        case 0:
        case 1:
        case 2:
        {
            if (GameConfig.IsMultiServer)
            {
                idx = UnityEngine.Random.Range(0, rand.m_MulRD.Count);                          //随机4
                //PlayerFactory.RandIds[3] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[3];
            }

            idnum.id  = 30000000;                               //统一奖励货币
            idnum.num = rand.m_MulRD[idx];
            data.m_Com_RewardItem.Add(idnum);
        }
        break;

        case 3:
        {
            if (GameConfig.IsMultiServer)
            {
                idx = UnityEngine.Random.Range(0, rand.m_MulEscort.Count);                              //随机4
                //PlayerFactory.RandIds[3] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[3];
            }
            idnum.id  = 30000000;                               //
            idnum.num = rand.m_MulEscort[idx];
            data.m_Com_RewardItem.Add(idnum);
        }
        break;

        case 4:
        {
            if (GameConfig.IsMultiServer)
            {
                idx = UnityEngine.Random.Range(0, rand.m_MulExplore.Count);                             //随机4
                //PlayerFactory.RandIds[3] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[3];
            }

            idnum.id  = 30000000;                               //
            idnum.num = rand.m_MulExplore[idx];
            data.m_Com_RewardItem.Add(idnum);
        }
        break;

        case 5:
        {
            if (GameConfig.IsMultiServer)
            {
                idx = UnityEngine.Random.Range(0, rand.m_MulTD.Count);                                  //随机4
                //PlayerFactory.RandIds[3] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[3];
            }

            idnum.id  = 30000000;                               //
            idnum.num = rand.m_MulTD[idx];
            data.m_Com_RewardItem.Add(idnum);
        }
        break;
        }

        if (monData != null)
        {
            MissionRepository.AddTypeMonsterData(monData.m_TargetID, monData);
        }
        else if (colData != null)
        {
            MissionRepository.AddTypeCollectData(colData.m_TargetID, colData);
        }
        else if (folData != null)
        {
            MissionRepository.AddTypeFollowData(folData.m_TargetID, folData);
        }
        else if (seaData != null)
        {
            MissionRepository.AddTypeSearchData(seaData.m_TargetID, seaData);
        }
        else if (mesData != null)
        {
            MissionRepository.AddTypeMessengerData(mesData.m_TargetID, mesData);
        }
        else if (towData != null)
        {
            MissionRepository.AddTypeTowerDefendsData(towData.m_TargetID, towData);
        }

        if (!MissionRepository.m_MissionCommonMap.ContainsKey(data.m_ID))
        {
            MissionRepository.m_MissionCommonMap.Add(data.m_ID, data);
        }
    }
    public static void Export(BinaryWriter bw)
    {
        //if (PlayerFactory.mMainPlayer == null)
        //    return;

        PlayerMission pm      = MissionManager.Instance.m_PlayerMission;
        List <int>    tmpList = new List <int>();

        foreach (KeyValuePair <int, Dictionary <string, string> > ite in pm.m_MissionInfo)
        {
            if (!m_RandMisMap.ContainsKey(ite.Key))
            {
                continue;
            }

            tmpList.Add(ite.Key);
        }

        bw.Write(tmpList.Count);
        for (int i = 0; i < tmpList.Count; i++)
        {
            MissionCommonData data = MissionManager.GetMissionCommonData(tmpList[i]);
            if (data == null)
            {
                continue;
            }

            bw.Write(data.m_ID);
            bw.Write(data.m_MissionName);
            bw.Write(data.m_iNpc);
            bw.Write(data.m_iReplyNpc);
            bw.Write((int)data.m_Type);
            bw.Write(data.m_MaxNum);
            bw.Write(data.m_Description);
            bw.Write(data.m_TargetIDList.Count);
            for (int m = 0; m < data.m_TargetIDList.Count; m++)
            {
                bw.Write(data.m_TargetIDList[m]);
            }

            bw.Write(data.m_PlayerTalk.Length);
            for (int m = 0; m < data.m_PlayerTalk.Length; m++)
            {
                bw.Write(data.m_PlayerTalk[m]);
            }

            bw.Write(data.m_Get_DemandItem.Count);
            for (int m = 0; m < data.m_Get_DemandItem.Count; m++)
            {
                bw.Write(data.m_Get_DemandItem[m].id);
                bw.Write(data.m_Get_DemandItem[m].num);
            }

            bw.Write(data.m_Get_DeleteItem.Count);
            for (int m = 0; m < data.m_Get_DeleteItem.Count; m++)
            {
                bw.Write(data.m_Get_DeleteItem[m].id);
                bw.Write(data.m_Get_DeleteItem[m].num);
            }

            bw.Write(data.m_Get_MissionItem.Count);
            for (int m = 0; m < data.m_Get_MissionItem.Count; m++)
            {
                bw.Write(data.m_Get_MissionItem[m].id);
                bw.Write(data.m_Get_MissionItem[m].num);
            }

            bw.Write(data.m_Com_RewardItem.Count);
            for (int m = 0; m < data.m_Com_RewardItem.Count; m++)
            {
                bw.Write(data.m_Com_RewardItem[m].id);
                bw.Write(data.m_Com_RewardItem[m].num);
            }

            bw.Write(data.m_Com_SelRewardItem.Count);
            for (int m = 0; m < data.m_Com_SelRewardItem.Count; m++)
            {
                bw.Write(data.m_Com_SelRewardItem[m].id);
                bw.Write(data.m_Com_SelRewardItem[m].num);
            }

            bw.Write(data.m_Com_RemoveItem.Count);
            for (int m = 0; m < data.m_Com_RemoveItem.Count; m++)
            {
                bw.Write(data.m_Com_RemoveItem[m].id);
                bw.Write(data.m_Com_RemoveItem[m].num);
            }

            bw.Write(data.m_TalkOP.Count);
            for (int m = 0; m < data.m_TalkOP.Count; m++)
            {
                bw.Write(data.m_TalkOP[m]);
            }

            bw.Write(data.m_OPID.Count);
            for (int m = 0; m < data.m_OPID.Count; m++)
            {
                bw.Write(data.m_OPID[m]);
            }

            bw.Write(data.m_TalkIN.Count);
            for (int m = 0; m < data.m_TalkIN.Count; m++)
            {
                bw.Write(data.m_TalkIN[m]);
            }

            bw.Write(data.m_INID.Count);
            for (int m = 0; m < data.m_INID.Count; m++)
            {
                bw.Write(data.m_INID[m]);
            }

            bw.Write(data.m_TalkED.Count);
            for (int m = 0; m < data.m_TalkED.Count; m++)
            {
                bw.Write(data.m_TalkED[m]);
            }

            bw.Write(data.m_EDID.Count);
            for (int m = 0; m < data.m_EDID.Count; m++)
            {
                bw.Write(data.m_EDID[m]);
            }
        }
    }
    //Adventure版本随机任务
    public static void CreateRandomMission()
    {
        MutiPlayMissionRand rand = GetMissRand(996);

        if (rand == null)
        {
            return;
        }

        int type = UnityEngine.Random.Range(0, 2);

        string[] listName = { "Monster Hunter", "Gather" };

        int idx = 0;

        MissionCommonData data = new MissionCommonData();

        data.m_ID          = 996;
        data.m_MissionName = listName[type];
        data.m_iNpc        = 0;
        data.m_iReplyNpc   = 0;
        data.m_Type        = MissionType.MissionType_Main;
        data.m_MaxNum      = 1;

        int talkid = 0;

        if (type == 0)
        {
            TypeMonsterData monData = new TypeMonsterData();

            List <int> monidlist = new List <int>();

            //for (int i = 0; i < AiManager.Manager.aiObjects.Count; i++)
            //{
            //    AiDataObject aiobj = AiManager.Manager.aiObjects[i] as AiDataObject;
            //    if (aiobj == null)
            //        continue;

            //    //NpcCommon_N npc = aiobj.GetComponent<NpcCommon_N>();
            //    //if (npc != null)
            //    //    continue;

            //    if (rand.m_MulKillID.Contains(aiobj.dataId))
            //        monidlist.Add(aiobj.dataId);
            //}

            idx = UnityEngine.Random.Range(0, monidlist.Count);
            if (monidlist.Count == 0)
            {
                //Debug.Log("Aiobject.count = " + AiManager.Manager.aiObjects.Count + '\n');
                Debug.Log("idx = " + idx);
            }

            monData.m_TargetID  = 1100;
            monData.m_MonsterID = monidlist[idx];
            monData.m_Desc      = "KillMonster : " + AiDataBlock.GetAIDataName(monData.m_MonsterID);

            idx = UnityEngine.Random.Range(0, rand.m_MulKillNum.Count);
            monData.m_MonsterNum = rand.m_MulKillNum[idx];

            talkid = 901;
            MissionRepository.AddTypeMonsterData(monData.m_TargetID, monData);
            data.m_TargetIDList.Add(monData.m_TargetID);
        }
        else
        {
            TypeCollectData colData = new TypeCollectData();
            idx = UnityEngine.Random.Range(0, rand.m_MulCollectID.Count);

            colData.m_TargetID = 2100;
            colData.ItemID     = rand.m_MulCollectID[idx];
            idx             = UnityEngine.Random.Range(0, rand.m_MulCollectNum.Count);
            colData.ItemNum = rand.m_MulCollectNum[idx];
            colData.m_Desc  = "Gather : " + ItemAsset.ItemProto.GetName(colData.ItemID);

            MissionIDNum tmp;
            tmp.id  = colData.ItemID;
            tmp.num = colData.ItemNum;

            data.m_Com_RemoveItem.Add(tmp);
            talkid = 906;
            MissionRepository.AddTypeCollectData(colData.m_TargetID, colData);
            data.m_TargetIDList.Add(colData.m_TargetID);
        }

        TalkData talkdata = TalkRespository.GetTalkData(talkid);

        if (talkdata != null)
        {
            data.m_Description = talkdata.m_Content;
        }

        MissionIDNum idnum;

        idx = UnityEngine.Random.Range(0, rand.m_MulRD.Count);

        idnum.id  = 30000000;                       //统一奖励货币
        idnum.num = rand.m_MulRD[idx];
        data.m_Com_RewardItem.Add(idnum);

        if (!MissionRepository.m_MissionCommonMap.ContainsKey(data.m_ID))
        {
            MissionRepository.m_MissionCommonMap.Add(data.m_ID, data);
        }

        nextRandomMissionID = data.m_ID;
    }