private void parseCustomItem(string CustomItem, ref _MISSION_INFO MissionInfo)
    {
        try
        {
            if (!CustomItem.Equals("nil"))
            {
                MatchCollection matches = StringRegex2.Matches(CustomItem);

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

                foreach (Match match in matches)
                {
                    string      matchstr       = match.Value;
                    int         pos            = matchstr.LastIndexOf(",");
                    QuestCustom newQuestCustom = new QuestCustom();
                    newQuestCustom.szCustomString = FormatString(matchstr.Substring(0, pos));
                    newQuestCustom.nCount         = Convert.ToInt32(FormatString(matchstr.Substring(pos + 1)));

                    MissionInfo.m_vecQuestCustom.Add(newQuestCustom);
                }
            }
        }
        catch (Exception ex)
        {
            CDataBaseSystem.StrError += "--------------------parseCustomItem方法出错。--------------------";
            CDataBaseSystem.StrError += ex.ToString();
            throw new Exception(CDataBaseSystem.StrError);
        }
    }
    public void RemoveMissionInfo(int missIndex)
    {
        _OWN_MISSION OwnMission = CDetailAttrib_Player.Instance.GetMission(missIndex);

        // 统一修改为使用任务ID来管理任务信息 [7/4/2011 ivan edit]
        int           missId      = OwnMission.m_idMission;
        _MISSION_INFO MissionInfo = GetMissionInfo(missId);

        for (int i = 0; i < MissionInfo.m_vecQuestDemandItem.Count; i++)
        {
            if (MissionInfo.m_vecQuestDemandItem[i].pItemImpl != null)
            {
                ObjectSystem.Instance.DestroyItem(MissionInfo.m_vecQuestDemandItem[i].pItemImpl);
            }
        }
        for (int i = 0; i < MissionInfo.m_vecQuestRewardItem.Count; i++)
        {
            if (MissionInfo.m_vecQuestRewardItem[i].pItemImpl != null)
            {
                ObjectSystem.Instance.DestroyItem(MissionInfo.m_vecQuestRewardItem[i].pItemImpl);
            }
        }

        MissionInfo.m_misName = "";
        MissionInfo.m_misDesc = "";

        if (MisInfo.ContainsKey(missId))
        {
            MisInfo.Remove(missId);
        }
    }
    /// <summary>
    /// �如果任务完成了,自动回复任务
    /// </summary>
    /// <param name="pMission"></param>
    private void AutoReplyMission(int missId)
    {
        if (!IsMissionCanCommit(missId))
        {
            return;
        }

        // 刷新采集?[5/11/2011 ivan edit]
        CObjectManager.Instance.FlashAllTripperObjs();

        _MISSION_INFO missInfo = MissionStruct.Instance.GetMissionInfo(missId);
        HyperLink     link     = new HyperLink();

        UIString.Instance.ParseHyperLink(missInfo.m_finishNpcName, ref link);
        // �如果名字是超链接的话,完成任务后自动执行 [4/16/2012 Ivan]
        if (link.allItems.Count != 0)
        {
            // 如果在挂机状态,要先停止 [4/21/2012 Ivan]
            GameInterface.Instance.StopAutoHit();
            AutoReleaseSkill.Instance.SetTargetObject(-1);//停止自动释放技能
            link.allItems[0].Click();

            //CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_MISSION_TUTORIALTIPHIDE);
        }
    }
Ejemplo n.º 4
0
    private void UpdateCurrentMission()
    {
        int missNum = CDataPool.Instance.GetPlayerMission_Num();

        if (missNum <= 0)
        {
            return;
        }

        for (int i = 0; i < GAMEDEFINE.MAX_MISSION_PARAM_NUM; i++)
        {
            int missid = CDataPool.Instance.GetMissionIdByIndex(i);
            if (missid == -1)
            {
                continue;
            }

            _MISSION_INFO miss = CDataPool.Instance.GetPlayerMissionByIndex(i);
            if (!miss.m_bFill)
            {
                continue;
            }

            AddNewMission(miss, missid, i);
        }
    }
    private void parseTraceDesc(string TraceDesc, ref _MISSION_INFO MissionInfo)
    {
        try
        {
            if (!TraceDesc.Equals("nil"))
            {
                MatchCollection matches = StringRegex2.Matches(TraceDesc);

                if (matches.Count == 0)
                {
                    LogManager.LogError("--------------------客户端配置中不存在匹配的任务追踪信息。--------------------");
                }

                foreach (Match match in matches)
                {
                    string matchstr = match.Value;

                    if (!matchstr.Equals(""))
                    {
                        MissionInfo.m_vecTraceDescList.Add(matchstr.Trim());
                    }
                }
            }
        }
        catch (Exception ex)
        {
            CDataBaseSystem.StrError += "--------------------parseTraceDesc方法出错。--------------------";
            CDataBaseSystem.StrError += ex.ToString();
            throw new Exception(CDataBaseSystem.StrError);
        }
    }
    /// <summary>
    /// 获得强制解析后的任务信息
    /// </summary>
    /// <param name="missionId"></param>
    /// <param name="missScriptId"></param>
    /// <returns></returns>
    internal _MISSION_INFO ParseMissionInfo(int missionId, int scriptId)
    {
        _MISSION_INFO info = GetMissionInfo(missionId);

        if (!info.m_bFill)
        {
            Interface.DataPool.Instance.ParseMission(missionId, scriptId);
            info = GetMissionInfo(missionId);
        }
        return(info);
    }
Ejemplo n.º 7
0
 void UpdateEnableMission()
 {
     foreach (_DBC_MISSION_DEMAND_LIST miss in MissionList.Instance.SortMissions)
     {
         // 只显示没有接过的任务 [4/7/2012 Ivan]
         if ((CDetailAttrib_Player.Instance.GetMissionIndexByID(miss.n_MissionID) == MacroDefine.INVALID_ID))
         {
             _MISSION_INFO info = MissionStruct.Instance.ParseMissionInfo(miss.n_MissionID, miss.n_ScriptID);
             tree.AddItem(info.m_misName, miss.n_MissionID.ToString());
         }
     }
 }
    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);
        }
    }
    // �自动执行任务 [4/17/2012 Ivan]
    public void AutoExecuteMission(int missId)
    {
        _MISSION_INFO missInfo = MissionStruct.Instance.GetMissionInfo(missId);
        HyperLink     link     = new HyperLink();

        UIString.Instance.ParseHyperLink(missInfo.acceptLink, ref link);
        // 如果名字是超链接的话,完成任务后自动执行 [4/16/2012 Ivan]
        if (link.allItems.Count != 0)
        {
            link.allItems[0].Click();
            //CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_MISSION_TUTORIALTIPHIDE);
        }
    }
    private void parseDemandKill(string DemandKill, ref _MISSION_INFO MissionInfo)
    {
        try
        {
            if (!DemandKill.Equals("nil"))
            {
                MatchCollection matches = StringRegex.Matches(DemandKill);

                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 npcId    = Convert.ToUInt32(FormatString(DemandItemstr[0]));
                    int  npcCount = Convert.ToInt32(FormatString(DemandItemstr[1]));

                    string npcName = FormatString(DemandItemstr[2]);

                    _DBC_CREATURE_ATT MissionNPC    = CDataBaseSystem.Instance.GetDataBase <_DBC_CREATURE_ATT>((int)DataBaseStruct.DBC_CREATURE_ATT).Search_Index_EQU((int)npcId);
                    QuestDemandKill   newDemandKill = new QuestDemandKill();
                    newDemandKill.pDemandKill.m_uNPCID = npcId;
                    newDemandKill.pDemandKill.m_yCount = (byte)npcCount;
                    if (MissionNPC.pName == npcName)
                    {
                        newDemandKill.szNPCName = MissionNPC.pName;
                    }
                    else
                    {
                        newDemandKill.szNPCName = npcName;
                        LogManager.LogWarning("--------------------数据库NPC名称与脚本名称不一致。暂以数据库为准。--------------------");
                    }

                    MissionInfo.m_vecQuestDemandKill.Add(newDemandKill);
                }
            }
        }
        catch (Exception ex)
        {
            CDataBaseSystem.StrError += "--------------------parseDemandKill方法出错。--------------------";
            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);
        }
    }
Ejemplo n.º 12
0
    void UpdateCurrList()
    {
        if (!gameObject.active)
        {
            return;
        }

        treeNode.Clear();
        cmpWin.CleanAll();

        int missNum = CDataPool.Instance.GetPlayerMission_Num();

        if (missNum <= 0)
        {
            treeNode.AddItem("[#D2BE8C]没有任何任务。", "0");
            return;
        }

        int firstMissId = -1;

        for (int i = 0; i < GAMEDEFINE.MAX_MISSION_PARAM_NUM; i++)
        {
            int missid = CDataPool.Instance.GetMissionIdByIndex(i);
            if (missid == -1)
            {
                continue;
            }

            _MISSION_INFO miss = CDataPool.Instance.GetPlayerMissionByIndex(i);
            if (!miss.m_bFill)
            {
                continue;
            }

            if (firstMissId == -1)
            {
                firstMissId = missid;
            }

            string name = UIString.Instance.ParserString_Runtime(miss.m_misName);
            treeNode.AddItem(name, missid.ToString(), KindName(miss.m_nKind));
        }

        SelectMission(firstMissId);
    }
    public _MISSION_INFO GetMissionInfo(int missionId)
    {
        if (!MisInfo.ContainsKey(missionId))
        {
            _MISSION_INFO misInfo = new _MISSION_INFO();
            misInfo.m_bFill       = false;
            misInfo.m_misBillName = "";
            misInfo.m_misDesc     = "";
            misInfo.m_misName     = "";
            misInfo.m_misState    = "";
            misInfo.m_nBill       = -1;
            misInfo.m_nElite      = -1;
            misInfo.m_nKind       = 1;
            misInfo.m_nLevel      = -1;
            misInfo.m_nLimitTime  = -1;
            misInfo.m_nOKFail     = -1;
            misInfo.m_nRound      = -1;

            MisInfo.Add(missionId, misInfo);
        }

        return(MisInfo[missionId]);
    }
    public void ClearAllMissionInfo()
    {
        foreach (int MisInfoKey in MisInfo.Keys)
        {
            _MISSION_INFO MissionInfoValue = MisInfo[MisInfoKey];

            for (int i = 0; i < MissionInfoValue.m_vecQuestDemandItem.Count; i++)
            {
                if (MissionInfoValue.m_vecQuestDemandItem[i].pItemImpl != null)
                {
                    ObjectSystem.Instance.DestroyItem(MissionInfoValue.m_vecQuestDemandItem[i].pItemImpl);
                }
            }
            for (int i = 0; i < MissionInfoValue.m_vecQuestRewardItem.Count; i++)
            {
                if (MissionInfoValue.m_vecQuestRewardItem[i].pItemImpl != null)
                {
                    ObjectSystem.Instance.DestroyItem(MissionInfoValue.m_vecQuestRewardItem[i].pItemImpl);
                }
            }
        }
        MisInfo.Clear();
    }
Ejemplo n.º 15
0
    void UpdateMission()
    {
        List <int> npcIds = new List <int>();

        foreach (_DBC_MISSION_DEMAND_LIST miss in MissionList.Instance.SceneMissions)
        {
            if (!npcIds.Contains(miss.n_AcceptNpcID))
            {
                npcIds.Add(miss.n_AcceptNpcID);
            }
            if (!npcIds.Contains(miss.n_FinishNpcID))
            {
                npcIds.Add(miss.n_FinishNpcID);
            }
        }

        int currentScene = GameProcedure.s_pWorldManager.GetActiveSceneID();

        foreach (int id in npcIds)
        {
            _DBC_MISSION_DEMAND_LIST currMiss;
            NpcMissState             state = MissionList.Instance.GetNpcMissState(id, out currMiss);
            if (state == NpcMissState.None || currMiss == null)
            {
                continue;
            }

            if ((state == NpcMissState.AcceptNormal && currMiss.n_AcceptSceneId != currentScene) ||
                ((state == NpcMissState.ContinueNormal || state == NpcMissState.FinishNormal) && currMiss.n_FinishSceneId != currentScene))
            {
                continue;
            }

            _MISSION_INFO info = MissionStruct.Instance.ParseMissionInfo(currMiss.n_MissionID, currMiss.n_ScriptID);

            MAP_POS_DEFINE item = new MAP_POS_DEFINE();
            item.nServerID = currMiss.n_MissionID + (int)state * 100;
            string iconName = "";
            string tip      = "";
            if (state == NpcMissState.AcceptNormal)
            {
                iconName = missAcceptIconName;
                tip      = "可接任务:" + info.m_misName;
                item.pos = new Vector2(currMiss.n_AcceptPosX, currMiss.n_AcceptPosZ);
            }
            else if (state == NpcMissState.ContinueNormal)
            {
                iconName = missContinueIconName;
                tip      = "已接任务:" + info.m_misName;
                item.pos = new Vector2(currMiss.n_FinishPosX, currMiss.n_FinishPosZ);
            }
            else if (state == NpcMissState.FinishNormal)
            {
                iconName = missFinishIconName;
                tip      = "可交任务:" + info.m_misName;
                item.pos = new Vector2(currMiss.n_FinishPosX, currMiss.n_FinishPosZ);
            }
            bool     alreadyExist;
            UIButton newWin = AddNewWin(item, iconName, out alreadyExist);
            if (newWin == null || alreadyExist)
            {
                continue;
            }

            newWin.data = UIString.Instance.ParserString_Runtime(tip);
        }
    }
Ejemplo n.º 16
0
    internal _MISSION_INFO GetPlayerMissionById(int id)
    {
        _MISSION_INFO missData = MissionStruct.Instance.GetMissionInfo(id);

        return(missData);
    }
Ejemplo n.º 17
0
    ////////////////////////////////////////////////////////////////////
    // MissionParam_Index使用 :ivan 2011-3-29
    //Index 0 --------------------------------		任务是否完成
    //Index 1 --------------------------------		杀怪
    //Index 2 --------------------------------		需求物品
    //Index 3 --------------------------------		使用物品
    //Index 4 --------------------------------		需求BUFF
    //Index 5 --------------------------------		交互物件
    //Index 6 --------------------------------		区域
    //Index 7 --------------------------------		暂留
    ////////////////////////////////////////////////////////////////////
    void SelectMission(int missId)
    {
        _MISSION_INFO miss           = CDataPool.Instance.GetPlayerMissionById(missId);
        int           missIndex      = CDetailAttrib_Player.Instance.GetMissionIndexByID(missId);
        int           missParamIndex = 1;//第0位用于判断任务是否完成

        cmpWin.CleanAll();

        string name = UIString.Instance.ParserString_Runtime(miss.m_misName);
        string desc = UIString.Instance.ParserString_Runtime(miss.m_misDesc);

        cmpWin.AddText(name);
        cmpWin.AddText(desc);

        // 任务需求物品
        if (miss.m_vecQuestDemandItem.Count != 0)
        {
            cmpWin.AddSpaceLine();
            cmpWin.AddText("需求物品:");

            foreach (QuestDemandItem item in miss.m_vecQuestDemandItem)
            {
                int    itemNum = CDataPool.Instance.UserBag_CountItemByIDTable(item.pItemImpl.GetIdTable());
                string text    = item.pItemImpl.GetName() + "(" + itemNum + "/" + item.pDemandItem.m_yCount + ")";
                cmpWin.AddText(text);
            }
        }

        // 任务需求杀怪
        if (miss.m_vecQuestDemandKill.Count != 0)
        {
            cmpWin.AddSpaceLine();
            cmpWin.AddText("已杀死:");

            foreach (QuestDemandKill monster in miss.m_vecQuestDemandKill)
            {
                int paramValue = CDetailAttrib_Player.Instance.GetMissionParam(missIndex, missParamIndex++);
                if (paramValue == 0)
                {
                    paramValue = monster.pDemandKill.m_yCount;
                }
                else
                {
                    paramValue -= 1;
                }
                string text = monster.szNPCName + "(" + paramValue + "/" + monster.pDemandKill.m_yCount + ")";
                cmpWin.AddText(text);
            }
        }

        // 自定义物品
        if (miss.m_vecQuestCustom.Count != 0)
        {
            cmpWin.AddSpaceLine();
            cmpWin.AddText("其他物品:");

            foreach (QuestCustom item in miss.m_vecQuestCustom)
            {
                int paramValue = CDetailAttrib_Player.Instance.GetMissionParam(missIndex, missParamIndex++);
                if (paramValue == 0)
                {
                    paramValue = item.nCount;
                }
                else
                {
                    paramValue -= 1;
                }
                string text = item.szCustomString;
                if (paramValue != item.nCount && item.nCount > 0)
                {
                    text += "(" + paramValue + "/" + item.nCount + ")";
                }
                cmpWin.AddText(text);
            }
        }

        // 奖励物品
        bool alreadyShowItem = false;

        if (miss.m_vecQuestRewardItem.Count != 0)
        {
            cmpWin.AddSpaceLine();

            foreach (QuestRewardItem rewardItem in miss.m_vecQuestRewardItem)
            {
                if (rewardItem == null)
                {
                    LogManager.LogError("GetMissionContinue_Bonus Empty Event Item");
                    continue;
                }
                switch (rewardItem.pItemData.m_nType)
                {
                case ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_INVALID:
                    break;

                case ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_MONEY:    // 金钱
                    cmpWin.AddMoney(rewardItem.pItemData.m_uMoney);
                    break;

                case ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_ITEM:    // 物品
                    if (!alreadyShowItem)
                    {
                        cmpWin.AddText("奖励物品:");
                        alreadyShowItem = true;
                    }
                    cmpWin.AddItem((uint)rewardItem.pItemImpl.GetID(), rewardItem.pItemData.m_ItemBonus.m_yCount);
                    break;

                case ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_ITEM_RAND:    // 随机物品
                    break;

                case ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_ITEM_RADIO:    // 多选1物品
                    cmpWin.AddItem((uint)rewardItem.pItemImpl.GetID(), rewardItem.pItemData.m_ItemBonus.m_yCount);
                    break;

                case ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_EXP:    // 经验
                    cmpWin.AddExp(rewardItem.pItemData.m_uExp);
                    break;

                default:
                    break;
                }
            }
        }

        cmpWin.ReLayout();
    }
    private bool ParseScript(Dictionary <string, string> ScriptInfoMap)
    {
        try
        {
            _MISSION_INFO MissionInfo = new _MISSION_INFO();
            int           MissionID   = MacroDefine.INVALID_ID;
            foreach (string stringkey in ScriptInfoMap.Keys)
            {
                if (ScriptInfoMap[stringkey].Equals(""))
                {
                    LogManager.LogError("--------------------参数 " + stringkey + " 属性未赋值!--------------------");
                    return(false);
                }
                if (stringkey == "ScriptId")
                {
                    continue;
                }
                if (stringkey == "MissionId")
                {
                    MissionID = Convert.ToInt32(FormatString(ScriptInfoMap[stringkey]));
                    continue;
                }
                if (stringkey == "MissionIdPre")
                {
                    continue;
                }
                if (stringkey == "MissionIdNext")
                {
                    continue;
                }
                if (stringkey == "AccomplishNPC_Name")
                {
                    continue;
                }
                if (stringkey == "NPC_Name")
                {
                    MissionInfo.m_finishNpcName = FormatString(ScriptInfoMap[stringkey]);
                    continue;
                }
                if (stringkey == "AcceptLink")
                {
                    MissionInfo.acceptLink = UIString.Instance.parseStringDictionary(FormatString(ScriptInfoMap[stringkey]));
                    continue;
                }
                if (stringkey == "MissionKind")
                {
                    MissionInfo.m_nKind = Convert.ToInt32(FormatString(ScriptInfoMap[stringkey]));
                    continue;
                }
                if (stringkey == "MissionLevel")
                {
                    MissionInfo.m_nLevel = Convert.ToInt32(FormatString(ScriptInfoMap[stringkey]));
                    continue;
                }
                if (stringkey == "IfMissionElite")
                {
                    MissionInfo.m_nElite = Convert.ToInt32(FormatString(ScriptInfoMap[stringkey]));
                    continue;
                }
                if (stringkey == "MisParamIndex_KillObjOne")
                {
                    continue;
                }
                if (stringkey == "MissionName")
                {
                    MissionInfo.m_misName = FormatString(ScriptInfoMap[stringkey]);
                    continue;
                }
                if (stringkey == "MissionOKFail")
                {
                    MissionInfo.m_nOKFail = Convert.ToInt32(FormatString(ScriptInfoMap[stringkey]));
                    continue;
                }
                if (stringkey == "MissionLimitTime")
                {
                    MissionInfo.m_nLimitTime = Convert.ToInt32(FormatString(ScriptInfoMap[stringkey]));
                    continue;
                }
                if (stringkey == "MissionRound")
                {
                    MissionInfo.m_nRound = Convert.ToInt32(FormatString(ScriptInfoMap[stringkey]));
                    continue;
                }
                if (stringkey == "MissionBill")
                {
                    continue;
                }
                if (stringkey == "MissionBillName")
                {
                    continue;
                }
                if (stringkey == "MissionStrForePart")
                {
                    continue;
                }
                if (stringkey == "MissionInfo" || stringkey == "MissionInfo2")
                {
                    MissionInfo.m_misDesc = FormatString(ScriptInfoMap[stringkey]);
                    continue;
                }
                if (stringkey == "MissionComplete")
                {
                    continue;
                }
                if (stringkey == "MissionInfo1")
                {
                    continue;
                }
                if (stringkey == "MissionTarget")
                {
                    continue;
                }
                if (stringkey == "MissionBriefTarget")
                {
                    continue;
                }
                if (stringkey == "MissionFormatList")
                {
                    continue;
                }
                if (stringkey == "MissionStrList")
                {
                    continue;
                }
                if (stringkey == "MissionTraceDesc" || stringkey == "TraceDesc")
                {
                    parseTraceDesc(ScriptInfoMap[stringkey], ref MissionInfo);
                    continue;
                }
                if (stringkey == "MoneyBonus")
                {
                    SMissionBonus rewardItem = new SMissionBonus();
                    rewardItem.m_uMoney = Convert.ToUInt32(FormatString(ScriptInfoMap[stringkey]));
                    rewardItem.m_nType  = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_MONEY;

                    QuestRewardItem newRewardItem = new QuestRewardItem();

                    newRewardItem.pItemData = rewardItem;
                    newRewardItem.bSelected = 0;

                    MissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                    continue;
                }
                if (stringkey == "ExpBonus")
                {
                    SMissionBonus rewardItem = new SMissionBonus();
                    rewardItem.m_uExp  = Convert.ToUInt32(FormatString(ScriptInfoMap[stringkey]));
                    rewardItem.m_nType = ENUM_MISSION_BONUS_TYPE.MISSION_BONUS_TYPE_EXP;

                    QuestRewardItem newRewardItem = new QuestRewardItem();

                    newRewardItem.pItemData = rewardItem;
                    newRewardItem.bSelected = 0;

                    MissionInfo.m_vecQuestRewardItem.Add(newRewardItem);
                    continue;
                }
                if (stringkey == "NeedItem")
                {
                    parseDemandItem(ScriptInfoMap[stringkey], ref MissionInfo);
                    continue;
                }
                if (stringkey == "ItemBonus")
                {
                    parseItemBonus(ScriptInfoMap[stringkey], ref MissionInfo);
                    continue;
                }
                if (stringkey == "MustDeleteItem")
                {
                    continue;
                }
                if (stringkey == "DemandItem")
                {
                    parseDemandItem(ScriptInfoMap[stringkey], ref MissionInfo);
                    continue;
                }
                if (stringkey == "KillObj")
                {
                    parseDemandKill(ScriptInfoMap[stringkey], ref MissionInfo);
                    continue;
                }
                if (stringkey == "CustomItem")
                {
                    parseCustomItem(ScriptInfoMap[stringkey], ref MissionInfo);
                    continue;
                }
                if (stringkey == "MissionFinish")
                {
                    MissionInfo.m_finishTarget = FormatString(ScriptInfoMap[stringkey]);
                    continue;
                }
            }

            if (MissionID == MacroDefine.INVALID_ID)
            {
                return(false);
            }

            MissionInfo.m_bFill = true;
            MisInfo[MissionID]  = MissionInfo;

            return(true);
        }
        catch (Exception ex)
        {
            CDataBaseSystem.StrError += "--------------------解析脚本出错。--------------------";
            CDataBaseSystem.StrError += ex.ToString();
            throw new Exception(CDataBaseSystem.StrError);
        }
    }
Ejemplo n.º 19
0
    private void AddNewMission(_MISSION_INFO miss, int missId, int missIndex)
    {
        string missName = miss.m_misName;

        int missParamIndex = 1;//第0位用于判断任务是否完成
        int traceDescIndex = 1;

        if (missionTab == 0)
        {
            // 已接任务,完成的直接显示完成内容
            int isFinish = CDetailAttrib_Player.Instance.GetMissionParam(missIndex, 0);
            if (isFinish == 0)
            {
                string finishContent = "";
                if (miss.m_vecTraceDescList.Count != 0)
                {
                    finishContent = miss.m_vecTraceDescList[0];
                }
                tree.AddItem(finishContent, missId.ToString(), missName);
                return;
            }
        }
        // 任务需求物品
        if (miss.m_vecQuestDemandItem.Count != 0)
        {
            foreach (QuestDemandItem item in miss.m_vecQuestDemandItem)
            {
                int itemNum = 0;
                if (missionTab == 0)// 只有当前任务需要解析任务完成度,可接任务不用
                {
                    itemNum = CDataPool.Instance.UserBag_CountItemByIDTable(item.pItemImpl.GetIdTable());
                }
                string text = "";
                if (miss.m_vecTraceDescList.Count > traceDescIndex)
                {
                    text = miss.m_vecTraceDescList[traceDescIndex];
                }
                text += "(" + itemNum + "/" + item.pDemandItem.m_yCount + ")";
                tree.AddItem(text, missId.ToString(), missName);
                traceDescIndex++;
            }
        }

        // 任务需求杀怪
        if (miss.m_vecQuestDemandKill.Count != 0)
        {
            foreach (QuestDemandKill monster in miss.m_vecQuestDemandKill)
            {
                int paramValue = 0;
                if (missionTab == 0)// 只有当前任务需要解析任务完成度,可接任务不用
                {
                    paramValue = CDetailAttrib_Player.Instance.GetMissionParam(missIndex, missParamIndex++);
                    if (paramValue == 0)
                    {
                        paramValue = monster.pDemandKill.m_yCount;
                    }
                    else
                    {
                        paramValue -= 1;
                    }
                }
                string text = "";
                if (miss.m_vecTraceDescList.Count > traceDescIndex)
                {
                    text = miss.m_vecTraceDescList[traceDescIndex];
                }
                text += "(" + paramValue + "/" + monster.pDemandKill.m_yCount + ")";
                tree.AddItem(text, missId.ToString(), missName);
                traceDescIndex++;
            }
        }

        // 自定义物品
        if (miss.m_vecQuestCustom.Count != 0)
        {
            foreach (QuestCustom item in miss.m_vecQuestCustom)
            {
                int paramValue = 0;
                if (missionTab == 0)// 只有当前任务需要解析任务完成度,可接任务不用
                {
                    paramValue = CDetailAttrib_Player.Instance.GetMissionParam(missIndex, missParamIndex++);
                    if (paramValue == 0)
                    {
                        paramValue = item.nCount;
                    }
                    else
                    {
                        paramValue -= 1;
                    }
                }
                string text = "";
                if (miss.m_vecTraceDescList.Count > traceDescIndex)
                {
                    text = miss.m_vecTraceDescList[traceDescIndex];
                }
                if (paramValue != item.nCount && item.nCount > 0)
                {
                    text += "(" + paramValue + "/" + item.nCount + ")";
                }
                tree.AddItem(text, missId.ToString(), missName);
                traceDescIndex++;
            }
        }

        //如果都不属于以上类型,则默认添加第一条
        if (traceDescIndex == 1)
        {
            if (miss.m_vecTraceDescList.Count != 0)
            {
                string text = miss.m_vecTraceDescList[0];
                tree.AddItem(text, missId.ToString(), missName);
            }
        }
    }
        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;
            }
        }