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);
        }
    }
Ejemplo n.º 2
0
    public void resetCurrentMonsterInfo()
    {
        mCurrentMonsterInfo = new CMonsterInstanceInfo();
        if (mMonsterTable == null)
        {
            return;
        }
        _DBC_CREATURE_ATT monsterAttr = mMonsterTable.Search_Index_EQU(AllMonsterNpcID[mCurrentSelectMonsterIndex]);

        if (monsterAttr == null)
        {
            return;
        }
        mCurrentMonsterInfo.m_popupIndex = mCurrentSelectMonsterIndex;
        mCurrentMonsterInfo.m_iCampId    = monsterAttr.nCamp;
        mCurrentMonsterInfo.m_iLevel     = monsterAttr.nLevel;
        mCurrentMonsterInfo.m_dwObjectId = (uint)AllMonsterNpcID[mCurrentSelectMonsterIndex];
    }
Ejemplo n.º 3
0
    public void AddActor(int ID, CMonsterInstanceInfo theMonsterInfo, Vector3 pos, Quaternion rot)
    {
        _DBC_CREATURE_ATT monsterAttr = mMonsterTable.Search_Index_EQU(ID);

        if (monsterAttr == null)
        {
            return;
        }
        _DBC_CHARACTER_MODEL CharModel = CDataBaseSystem.Instance.GetDataBase <_DBC_CHARACTER_MODEL>((int)DataBaseStruct.DBC_CHARACTER_MODEL).Search_Index_EQU(monsterAttr.nModelID);

        if (CharModel == null)
        {
            return;
        }
        GFX.GfxActor actor = (GFX.GfxActor)GFX.GFXObjectManager.Instance.createObject(CharModel.m_pszModelName, GFX.GFXObjectType.ACTOR);
        actor.position = pos;
        actor.rotation = rot;
        actor.setRenderInterfaceCreateEvt(new GFX.OnRenderInterfaceEvent(OnActorCreate));
        CMonsterInstanceInfo monsterInfo = new CMonsterInstanceInfo();

        CMonsterInstanceInfo.Copy(theMonsterInfo, monsterInfo);
        mAllActor.Add(actor, monsterInfo);
    }
Ejemplo n.º 4
0
    // Use this for initialization
    void Start()
    {
        NPCEditorScriptEnable = true;
        InitAI();
        if (mDBCSystem == null)
        {
            mDBCSystem = CDataBaseSystem.Instance;
            mDBCSystem.Initial(DBStruct.s_dbToLoad, DBStruct.GetResources);
        }
        mMonsterTable = mDBCSystem.GetDataBase <_DBC_CREATURE_ATT>((int)DataBaseStruct.DBC_CREATURE_ATT);
        int lineCount = mMonsterTable.StructDict.Count;

        AllMonsterNpcNames = new string[lineCount];
        AllMonsterNpcID    = new int[lineCount];
        int j = 0;

        foreach (int i in mMonsterTable.StructDict.Keys)
        {
            _DBC_CREATURE_ATT monsterAttr = mMonsterTable.Search_Index_EQU(i);
            if (monsterAttr != null)
            {
                AllMonsterNpcNames[j] = monsterAttr.nID.ToString() + "=" + monsterAttr.pName;
                AllMonsterNpcID[j]    = monsterAttr.nID;
            }
            else
            {
                AllMonsterNpcNames[j] = "none";
                AllMonsterNpcID[j]    = -1;
            }
            IDToPopupIndex[AllMonsterNpcID[j]] = j;
            j++;
        }
        mNPCType[0] = "Monster";
        mNPCType[1] = "NPC";
        mCurrentSelectMonsterIndex = 0;
        resetCurrentMonsterInfo();
    }
Ejemplo n.º 5
0
    void OnGUI()
    {
        if (NPCEditorScript.NPCEditorScriptEnable == false)
        {
            return;
        }
        GUILayout.BeginHorizontal("box");
        GUILayout.Label("怪物NPC");
        int oldIndex = mNPCScript.mCurrentSelectMonsterIndex;

        mNPCScript.mCurrentSelectMonsterIndex = EditorGUILayout.Popup(mNPCScript.mCurrentSelectMonsterIndex, mNPCScript.AllMonsterNpcNames);
        if (oldIndex != mNPCScript.mCurrentSelectMonsterIndex || mNPCScript.mCurrentMonsterInfo == null)
        {
            mNPCScript.resetCurrentMonsterInfo();
        }
        GUILayout.EndHorizontal();

        _DBC_CREATURE_ATT monsterAttr = mNPCScript.mMonsterTable.Search_Index_EQU(mNPCScript.AllMonsterNpcID[mNPCScript.mCurrentSelectMonsterIndex]);

        if (monsterAttr == null)
        {
            return;
        }
        GUILayout.BeginHorizontal("box");
        if (GUILayout.Button("打开文件"))
        {
            openINIFile();
        }
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("名字(不能修改)");
        EditorGUILayout.TextField(monsterAttr.pName);

        GUILayout.Label("等级");
        mNPCScript.mCurrentMonsterInfo.m_iLevel = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iLevel);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("复活时间");
        mNPCScript.mCurrentMonsterInfo.m_iRefreshTime = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iRefreshTime);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("阵营ID");
        mNPCScript.mCurrentMonsterInfo.m_iCampId = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iCampId);
        GUILayout.Label("名誉ID");
        mNPCScript.mCurrentMonsterInfo.m_iReputationID = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iReputationID);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("基础AI类型");
        mNPCScript.mCurrentMonsterInfo.m_iBaseAIId = EditorGUILayout.Popup(mNPCScript.mCurrentMonsterInfo.m_iBaseAIId, mNPCScript.mBaseAIString);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("AI文件");
        mNPCScript.mCurrentMonsterInfo.m_iAdvanceAIId = EditorGUILayout.Popup(mNPCScript.mCurrentMonsterInfo.m_iAdvanceAIId, mNPCScript.mAdvanceAIString);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("脚本文件");
        mNPCScript.mCurrentMonsterInfo.m_EvenId = EditorGUILayout.Popup(mNPCScript.mCurrentMonsterInfo.m_EvenId + 1, mNPCScript.mScriptFileString) - 1;
        GUILayout.EndHorizontal();


        GUILayout.BeginHorizontal("box");
        GUILayout.Label("群ID");
        mNPCScript.mCurrentMonsterInfo.m_iGroupId = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iGroupId);
        GUILayout.Label("队伍ID");
        mNPCScript.mCurrentMonsterInfo.m_iTeamId = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iTeamId);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("实例名");
        mNPCScript.mCurrentMonsterInfo.m_strInstanceName = EditorGUILayout.TextField(mNPCScript.mCurrentMonsterInfo.m_strInstanceName);
//         GUILayout.Label("GUID");
//         mNPCScript.mCurrentMonsterInfo.m_dwMonsterGUID = (uint)EditorGUILayout.IntField((int)mNPCScript.mCurrentMonsterInfo.m_dwMonsterGUID);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("巡逻路线ID");
        mNPCScript.mCurrentMonsterInfo.m_iLineid = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iLineid);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("头衔");
        mNPCScript.mCurrentMonsterInfo.m_strTitleName = EditorGUILayout.TextField(mNPCScript.mCurrentMonsterInfo.m_strTitleName);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("NPC类型");
        mNPCScript.mCurrentMonsterInfo.m_iType = EditorGUILayout.Popup(mNPCScript.mCurrentMonsterInfo.m_iType, mNPCScript.mNPCType);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("店铺1");
        mNPCScript.mCurrentMonsterInfo.m_iShopArray[0] = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iShopArray[0]);
        GUILayout.Label("店铺2");
        mNPCScript.mCurrentMonsterInfo.m_iShopArray[1] = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iShopArray[1]);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("店铺3");
        mNPCScript.mCurrentMonsterInfo.m_iShopArray[2] = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iShopArray[2]);
        GUILayout.Label("店铺4");
        mNPCScript.mCurrentMonsterInfo.m_iShopArray[3] = EditorGUILayout.IntField(mNPCScript.mCurrentMonsterInfo.m_iShopArray[3]);
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal("box");

        if (GUILayout.Button("修改"))
        {
            save();
        }
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal("box");
        if (GUILayout.Button("保存到文件"))
        {
            saveToFile();
        }

        GUILayout.EndHorizontal();
    }
        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;
            }
        }