Beispiel #1
0
 /*
  * /// <summary>
  * ///
  * /// </summary>
  * /// <param name="exp"></param>
  * /// <param name="money">文钱</param>
  * /// <param name="gold">金币</param>
  * /// <param name="itemIds"></param>
  * /// <param name="itemNums"></param>
  * private void SetNormalReward(uint exp,uint money,uint gold,List<uint> itemIds,List<uint> itemNums)
  * {
  *
  *  UIItemShow itemShow = null;
  *  int index = 0;
  *  if (exp > 0)
  *  {
  *      itemShow = index >= m_lstItem.Count ? GetItem() : m_lstItem[index];
  *      itemShow.gameObject.SetActive(true);
  *      itemShow.ShowWithItemIdNum(MainPlayerHelper.ExpID, exp);
  *      itemShow.transform.localPosition = new UnityEngine.Vector3(index * 90, 0, 0);
  *      index++;
  *  }
  *  if (money > 0)//文钱
  *  {
  *      itemShow = index >= m_lstItem.Count ? GetItem() : m_lstItem[index];
  *      itemShow.gameObject.SetActive(true);
  *      itemShow.ShowWithItemIdNum(MainPlayerHelper.MoneyTicketID, money);
  *      itemShow.transform.localPosition = new UnityEngine.Vector3(index * 90, 0, 0);
  *      index++;
  *  }
  *  if (gold > 0)//金币
  *  {
  *      itemShow = index >= m_lstItem.Count ? GetItem() : m_lstItem[index];
  *      itemShow.gameObject.SetActive(true);
  *      itemShow.ShowWithItemIdNum(MainPlayerHelper.GoldID, gold);
  *      itemShow.transform.localPosition = new UnityEngine.Vector3(index * 90, 0, 0);
  *      index++;
  *  }
  *
  *  for (int i = 0; i < itemIds.Count && i < itemNums.Count; ++i)
  *  {
  *      uint itembaseid = itemIds[i];
  *      uint itemNum = itemNums[i];
  *
  *      itemShow = index >= m_lstItem.Count ? GetItem() : m_lstItem[index];
  *      itemShow.gameObject.SetActive(true);
  *
  *      itemShow.ShowWithItemIdNum(itembaseid, itemNum);
  *      itemShow.transform.localPosition = new UnityEngine.Vector3(index * 90, 0, 0);
  *      index++;
  *  }
  *
  *  for (int i = index; i < m_lstItem.Count; i++)
  *  {
  *      m_lstItem[i].gameObject.SetActive(false);
  *  }
  *  m_trans_itemRoot.parent.GetComponent<UIScrollView>().ResetPosition();
  * }
  */
 private void SetTargetLabel(QuestTraceInfo taskInfo, ref table.QuestDataBase quest, ref UILabel targetLable)
 {
     if (taskInfo != null)
     {
         if (taskInfo.taskSubType == TaskSubType.Collection ||
             taskInfo.taskSubType == TaskSubType.KillMonster ||
             taskInfo.taskSubType == TaskSubType.KillMonsterCollect ||
             taskInfo.taskSubType == TaskSubType.DeliverItem)
         {
             GameCmd.TaskProcess process = taskInfo.GetTaskProcess();
             if (process == TaskProcess.TaskProcess_CanDone)
             {
                 targetLable.text = string.Format("{0}[00ff00]({1}/{2})", quest.dwStrTarget, taskInfo.operate, taskInfo.state);
             }
             else if (process == TaskProcess.TaskProcess_Doing)
             {
                 targetLable.text = string.Format("{0}[ff0000]({1}/{2})", quest.dwStrTarget, taskInfo.operate, taskInfo.state);
             }
             else
             {
                 targetLable.text = quest.dwStrTarget;
             }
         }
         else
         {
             targetLable.text = quest.dwStrTarget;
         }
     }
     else
     {
         targetLable.text = quest.dwStrTarget;
     }
 }
Beispiel #2
0
    public void Init(RewardMisssionInfo rInfo)
    {
        m_missionInfo = rInfo;
        if (m_spriteIcon != null)
        {
            m_spriteIcon.spriteName = rInfo.strIcon;
        }

        if (m_labelName != null)
        {
            m_labelName.text = rInfo.strName;
        }

        if (m_labelExp != null)
        {
            table.QuestDataBase taskdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(rInfo.ntaskid);
            if (taskdb != null)
            {
                m_labelExp.text = taskdb.dwRewardExp.ToString();
            }
        }

        if (m_goGet != null)
        {
            m_goGet.gameObject.SetActive(rInfo.nstate == (int)GameCmd.TokenTaskState.TOKEN_STATE_FINISH);
        }
        if (m_goDone != null)
        {
            m_goDone.SetActive(rInfo.nstate == (int)GameCmd.TokenTaskState.TOKEN_STATE_ACCEPT);
        }
        if (m_goProcessing != null)
        {
            m_goProcessing.SetActive(rInfo.nstate == (int)GameCmd.TokenTaskState.TOKEN_STATE_PUBLISH);
        }
    }
Beispiel #3
0
    //     void ClearItems()
    //     {
    //         foreach (UIItemShow item in m_lstItem)
    //         {
    //             item.Release();
    //         }
    //         m_lstItem.Clear();
    //     }

    void ShowUI()
    {
        table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(m_nTaskid);
        if (quest == null)
        {
            return;
        }

        m_widget_demonTask.alpha  = (TaskType)quest.dwType == TaskType.TaskType_Demons ? 1f : 0f;
        m_widget_normalTask.alpha = (TaskType)quest.dwType == TaskType.TaskType_Demons ? 0f : 1f;

        m_label_title.text = quest.strName;


        QuestTraceInfo taskInfo = QuestTranceManager.GetInstance().GetQuestTraceInfo(m_nTaskid);

        if (quest.dwType != (uint)GameCmd.TaskType.TaskType_Demons)
        {
            ShowNormalTaskUI(quest, taskInfo);
        }
        else
        {
            ShowDemonsTaskUI(quest, taskInfo);
        }
    }
Beispiel #4
0
    public void DeleteTaskByTaskID(uint taskid)
    {
        if (CompleteTask.ContainsKey(taskid))
        {
            CompleteTask.Remove(taskid);
        }
        QuestTranceManager.Instance.RemoveTaskTrack(taskid);

        UpdateTaskTraceUI(taskid);

        table.QuestDataBase qtable = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskid);
        if (qtable != null)
        {
            if (qtable.dwType == (int)GameCmd.TaskType.TaskType_Token)
            {
                m_RewardMisssionMgr.DeleteTask(taskid);
            }
        }
        Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_DELETE, taskid);
        //TODO 刷新UI
        if (DataManager.Manager <UIPanelManager>().IsShowPanel(PanelID.MissionPanel))
        {
            DataManager.Manager <UIPanelManager>().SendMsg(PanelID.MissionPanel, UIMsgID.eDeleteTask, taskid);
        }
    }
Beispiel #5
0
    public void Init(table.AcceptTokenDataBase database, int index, RewardPanel panel)
    {
        m_PublicTokenDataBase = null;
        m_AcceptTokenDataBase = database;
        m_parent = panel;
        m_nIndex = index;
        if (m_labelName != null)
        {
            m_labelName.text = database.title;
        }

        if (m_textureIcon != null)
        {
            //m_spriteIcon.spriteName = database.icon;
            UIManager.GetTextureAsyn(database.bgId, ref m_iuiIconSeed, () =>
            {
                if (m_textureIcon != null)
                {
                    m_textureIcon.mainTexture = null;
                }
            }, m_textureIcon);
        }

        int level = MainPlayerHelper.GetPlayerLevel();

        if (m_goOpen != null)
        {
            m_goOpen.gameObject.SetActive(level >= database.openLvele);
        }
        if (level >= database.openLvele)
        {
            m_labelOpenLevel.text = "";
            SetBottomUI();
        }
        else
        {
            m_labelOpenLevel.text = string.Format("{0}级开启", database.openLvele);
        }

        //exp
        if (m_lblExp != null)
        {
            table.QuestDataBase taskdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(database.taskid);
            if (taskdb != null)
            {
                List <table.RandomTargetDataBase> randomlist = GameTableManager.Instance.GetTableList <table.RandomTargetDataBase>();
                for (int i = 0, imax = randomlist.Count; i < imax; i++)
                {
                    if (randomlist[i].activity_type == 1 && taskdb.target_group == randomlist[i].group && randomlist[i].level == MainPlayerHelper.GetPlayerLevel())
                    {
                        m_lblExp.text = string.Format("{0}", randomlist[i].level * randomlist[i].exp_ratio);
                        break;
                    }
                }
            }
        }
    }
Beispiel #6
0
 public QuestTraceInfo(table.QuestDataBase questdb, uint nState, uint nOperate, bool bReceived)
 {
     m_clienDB           = questdb;
     state               = nState;
     operate             = nOperate;
     this.time           = UnityEngine.Time.realtimeSinceStartup;
     Received            = bReceived;
     dynamicTranceUpdate = false;
     FormatXmlName();
 }
Beispiel #7
0
        /// <summary>
        /// 通过[任务编号]二分快速查表
        /// </summary>
        /// <param name="dwID">任务编号</param>
        /// <returns></returns>
        public static QuestDataBase Query(this List <QuestDataBase> sorted, uint dwID)
        {
            var key = new QuestDataBase()
            {
                dwID = dwID
            };
            var comparer = new Comparer1();
            var index    = sorted.BinarySearch(key, comparer);

            return(index >= 0 ? sorted[index] : default(QuestDataBase));
        }
Beispiel #8
0
    public void Init(table.PublicTokenDataBase database, int index, RewardPanel panel)
    {
        m_AcceptTokenDataBase = null;
        m_PublicTokenDataBase = database;
        m_parent = panel;
        m_nIndex = index;

        if (m_labelName != null)
        {
            m_labelName.text = database.title;
        }

        if (m_textureIcon != null)
        {
            // m_textureIcon.spriteName = database.icon;

            UIManager.GetTextureAsyn(database.bgId, ref m_iuiIconSeed, () =>
            {
                if (m_textureIcon != null)
                {
                    m_textureIcon.mainTexture = null;
                }
            }, m_textureIcon);
        }

        int level = MainPlayerHelper.GetPlayerLevel();

        if (m_goOpen != null)
        {
            m_goOpen.gameObject.SetActive(level >= database.openLvele);
        }
        if (level >= database.openLvele)
        {
            m_labelOpenLevel.text = "";
            SetBottomUI();
        }
        else
        {
            m_labelOpenLevel.text = string.Format("{0}级开启", database.openLvele);
        }

        //exp
        if (m_lblExp != null)
        {
            table.QuestDataBase taskdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(database.taskid);
            if (taskdb != null)
            {
                m_lblExp.text = taskdb.dwRewardExp.ToString();
            }
        }
    }
Beispiel #9
0
    void ShowNormalTaskUI(table.QuestDataBase quest, QuestTraceInfo taskInfo)
    {
        if (quest == null)
        {
            return;
        }
        SetTaskDesc(ref quest);


        SetTargetLabel(taskInfo, ref quest, ref m_label_normaltargetLabel);


        if (taskInfo != null)
        {
            SetBottomBtnLable(taskInfo);

            if (taskInfo.exp == 0)
            {
                //请求任务奖励
                NetService.Instance.Send(new GameCmd.stRequestTaskRewardScriptUserCmd_C()
                {
                    task_id = m_nTaskid
                });
            }
            else
            {
                m_lstRewardItemInfo = GetRewardInfoList(taskInfo.exp, taskInfo.money, taskInfo.gold, taskInfo.Items, taskInfo.ItemNum);
                m_rewardItemGridCreator.CreateGrids(m_lstRewardItemInfo != null ? m_lstRewardItemInfo.Count : 0);
                //SetNormalReward(taskInfo.exp,taskInfo.money,taskInfo.gold,taskInfo.Items,taskInfo.ItemNum);
                return;
            }

            if (taskInfo.state != 0)
            {
                m_trans_DemonFresh.gameObject.SetActive(taskInfo.state != taskInfo.operate);
            }
            else
            {
                m_trans_DemonFresh.gameObject.SetActive(true);
            }
        }
        else
        {
            NetService.Instance.Send(new GameCmd.stRequestTaskRewardScriptUserCmd_C()
            {
                task_id = m_nTaskid
            });
            m_label_btn_bottom_Label.text = "接取";
            m_trans_DemonFresh.gameObject.SetActive(true);
        }
    }
    /// <summary>
    /// 刷新npc任务状态表示
    /// </summary>
    /// <param name="taskId"></param>
    private void OnUpdateNpcTaskStatus(uint taskId, Client.GameEventID eventID)
    {
        long   uid    = 0;
        string icon   = "";
        bool   enable = false;

        switch (eventID)
        {
        case GameEventID.TASK_ACCEPT:
        case GameEventID.TASK_CANACCEPT:
        case GameEventID.TASK_DONING:
        case GameEventID.TASK_CANSUBMIT:
        {
            enable = RoleStateBarManager.TryGetQuestStatusIcon(taskId, out uid, out icon);
            if (eventID == GameEventID.TASK_ACCEPT)
            {
                table.QuestDataBase questDB = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskId);
                if (questDB != null && questDB.dwBeginNpc != questDB.dwEndNpc)
                {
                    //交接任务不在同一个npc移除任务标示
                    Client.INPC npc = RoleStateBarManager.GetNPCByBaseID(questDB.dwBeginNpc);
                    if (null != npc)
                    {
                        UpdateNpcTaskStatus(npc.GetUID(), false);
                    }
                }
            }
        }
        break;

        case GameEventID.TASK_DELETE:
        case GameEventID.TASK_DONE:
        {
            table.QuestDataBase questDB = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskId);
            if (questDB == null)
            {
                return;
            }
            Client.INPC npc = RoleStateBarManager.GetNPCByBaseID(questDB.dwEndNpc);
            if (null != npc)
            {
                uid = npc.GetUID();
            }
        }
        break;
        }
        if (uid != 0)
        {
            UpdateNpcTaskStatus(uid, enable, icon);
        }
    }
Beispiel #11
0
    private void SetType1UI(table.Trailerdatabase data, bool isOpen)
    {
        m_trans_Type1.gameObject.SetActive(true);
        m_trans_Type2.gameObject.SetActive(false);
        if (data == null)
        {
            return;
        }

        UISprite spriteIcon = m_trans_Type1.Find("Icon").GetComponent <UISprite>();

        if (spriteIcon != null)
        {
            spriteIcon.spriteName = data.strIcon;
            //策划要求不适用完美比例
            //spriteIcon.MakePixelPerfect();
        }
        //m_trans_Type1.Find("effect").gameObject.SetActive(isOpen);
        PlayEffect(m_trans_Type1.Find("effect"), isOpen);
        UILabel labelDesc = m_trans_Type1.Find("desc").GetComponent <UILabel>();

        if (labelDesc != null)
        {
            if (isOpen)//可以领奖
            {
                labelDesc.text = string.Format(DataManager.Manager <TextManager>().GetLocalText(LocalTextType.Local_Txt_Trailer_3),
                                               DataManager.Manager <TextManager>().GetLocalText(LocalTextType.Local_Txt_Trailer_4));
            }
            else
            {
                //labelDesc.color = new Color(62 / 255.0f, 71 / 255.0f, 90 / 255.0f);
                int level = MainPlayerHelper.GetPlayerLevel();
                if (level < data.level)
                {
                    labelDesc.text = string.Format(DataManager.Manager <TextManager>().GetLocalFormatText(LocalTextType.Local_TXT_FM_Trailer_Level, data.level));
                }
                else if (data.task != 0)
                {
                    if (DataManager.Manager <TaskDataManager>().CheckTaskFinished(data.task) == false)
                    {
                        table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(data.task);
                        if (quest != null)
                        {
                            labelDesc.text = string.Format(DataManager.Manager <TextManager>().GetLocalFormatText(LocalTextType.Local_TXT_FM_Trailer_Task, quest.strName));
                        }
                    }
                }
            }
        }
    }
Beispiel #12
0
    /// <summary>
    /// 移除特效
    /// </summary>
    /// <param name="nTaskID"></param>
    void DeleteEffectByTaskID(uint nTaskID)
    {
        table.QuestDataBase questDB = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(nTaskID);
        if (questDB == null)
        {
            return;
        }
        Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem();
        if (es == null)
        {
            Engine.Utility.Log.Error("实体系统为null");
            return;
        }
        Client.INPC npc = es.FindNPCByBaseId((int)questDB.dwEndNpc);

        DeleteEffectByNpc(npc);
    }
Beispiel #13
0
    public T GetTableItem <T>(uint itemIndex, TableName name, int childID = 0)
    {
        if (name == TableName.QuestDataBase)
        {
            table.QuestDataBase item = Table.Query <table.QuestDataBase>().FirstOrDefault(i => i.dwID == itemIndex);

            return((T)(object)item);
        }
        else if (name == TableName.GameGlobalConfig)
        {
            table.GameGlobalConfig item = Table.Query <table.GameGlobalConfig>().FirstOrDefault(i => i.TableID == itemIndex);

            return((T)(object)item);
        }
        else
        {
            Log.Info("表格" + name.ToString() + "未找到索引 " + itemIndex.ToString());
        }
        return(default(T));
    }
Beispiel #14
0
    //-----------------------------------------------------------------------------------------------
    /// <summary>
    /// 添加接受的任务
    /// </summary>
    /// <param name="taskid"></param>
    /// <param name="state"></param>
    /// <param name="operate"></param>
    public QuestTraceInfo AddReceivedTask(uint taskid, uint state, uint operate, bool bUpdateCanReceive = true)
    {
        table.QuestDataBase questdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskid);
        if (questdb == null)
        {
            Engine.Utility.Log.Error(" get quest null {0}", taskid);
            return(null);
        }

        for (int k = 0; k < m_lstCanReceive.Count; k++)
        {
            if (m_lstCanReceive[k].taskId == taskid)
            {
                m_lstCanReceive.RemoveAt(k);
                break;
            }
        }

        QuestTraceInfo cri = new QuestTraceInfo(questdb, state, operate, true);

        if (cri.dynamicTrance)
        {
            Protocol.Instance.RequestTaskTip(taskid);
        }
        else
        {
            cri.UpdateDesc();
        }

        //请求任务奖励
        Protocol.Instance.RequestTaskReward(taskid);

        Engine.Utility.Log.LogGroup("LCY", "添加的  taskId ={0}", taskid);

        m_lstReceivedTask.Add(cri);
        if (bUpdateCanReceive)
        {
            UpdateCanReceiveTask();
        }
        return(cri);
    }
Beispiel #15
0
    /// <summary>
    /// 移除npc身上特效(采集完成可提交时)
    /// </summary>
    /// <param name="taskId"></param>
    public void RemoveCollectNpcEffectByTaskId(uint taskId)
    {
        table.QuestDataBase taskInfo = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskId);

        if (taskInfo == null)
        {
            return;
        }

        if (taskInfo.dwSubType != (uint)TaskSubType.Collection)
        {
            return;
        }

        Dictionary <uint, List <int> > .Enumerator etr = m_dicCollectNpcEffectLinkId.GetEnumerator();
        while (etr.MoveNext())
        {
            RemoveCollectNpcEffectByNpcId(etr.Current.Key);
        }
        CleanCollectNpcEffectData();
    }
Beispiel #16
0
    void onClick_BtnGiveUp_Btn(GameObject caster)
    {
        Action OK = delegate
        {
            if (m_currquest == null)
            {
                return;
            }
            Engine.Utility.Log.Trace("删除任务:{0}", m_currquest.taskId);
            table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(m_currquest.taskId);
            if (quest != null)
            {
                if (quest.dwType == (uint)GameCmd.TaskType.TaskType_Token)
                {
                    if (DataManager.Manager <TaskDataManager>().RewardMisssionData.receiveReward != null)
                    {
                        NetService.Instance.Send(new GameCmd.stAcceptTokenTaskGiveupScriptUserCmd_C()
                        {
                            tokentaskid = DataManager.Manager <TaskDataManager>().RewardMisssionData.receiveReward.id,
                            //userid = Client.ClientGlobal.Instance().MainPlayer.GetID(),
                        });
                    }
                }
                else
                {
                    NetService.Instance.Send(new GameCmd.stDelRoleTaskScriptUserCmd_CS()
                    {
                        dwTaskID = m_currquest.taskId
                    });
                }
            }
        };

        Action Cancel = delegate
        {
        };
        string des = "放弃任务?";

        TipsManager.Instance.ShowTipWindow(0, 10, Client.TipWindowType.CancelOk, des, OK, Cancel);
    }
Beispiel #17
0
    private void DoAcceptTask(QuestTraceInfo taskInfo)
    {
        table.QuestDataBase questDB = taskInfo.QuestTable;
        if (questDB == null)
        {
            Engine.Utility.Log.Error("QuestTable is null");
            return;
        }
        if (taskInfo.taskType == GameCmd.TaskType.TaskType_Token)
        {
            PanelID pid;
            int     tab = 0;
            int     copyID;

            /* if (taskInfo.IsOpenUI(out pid, out tab,out copyID))
             * {
             * //                 DataManager.Manager<UIPanelManager>().ShowPanel(pid);
             * //                 UIFrameManager.Instance.OnCilckTogglePanel(pid, UIPanelBase.FisrstTabsIndex, tab);
             *   DataManager.Manager<UIPanelManager>().ShowPanel(pid, jumpData: new UIPanelBase.PanelJumpData() { Tabs = new int[] { tab } });
             *
             * }*/
            uint jumpId;
            if (taskInfo.IsOpenUI(out jumpId))
            {
                ItemManager.DoJump(jumpId);
            }
        }
        if (taskInfo.taskSubType == TaskSubType.Guild)
        {
            Protocol.Instance.RequestAcceptTask(taskInfo.taskId);
        }
        else
        {
            DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
            {
                VisitNpc(questDB.dwHelpGoto, questDB.acceptMapID, questDB.dwBeginNpc, questDB.dwID);
            }, null);
        }
    }
Beispiel #18
0
    public void OnReceiveTokenTask(uint nTokenTaskID)
    {
        RewardMisssionInfo missioninfo = new RewardMisssionInfo();

        table.AcceptTokenDataBase reward = GameTableManager.Instance.GetTableItem <table.AcceptTokenDataBase>(nTokenTaskID);
        if (reward != null)
        {
            missioninfo.id      = reward.id;
            missioninfo.strIcon = reward.icon;
            missioninfo.strName = reward.title;
            missioninfo.nType   = 2;
            missioninfo.ntaskid = reward.taskid;
            table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(reward.taskid);
            if (quest != null)
            {
                missioninfo.nExp      = quest.dwRewardExp;
                missioninfo.nleftTime = quest.dwLimitTime * 60 * 60.0f;
            }
            missioninfo.nstate = (int)TokenTaskState.TOKEN_STATE_ACCEPT;
            m_RewardMisssionMgr.receiveReward = missioninfo;
            m_RewardMisssionMgr.RewardAcceptTimes++;

            //直接去做悬赏任务
            //GoToDoTokenTask();
            //延时去做悬赏任务(服务器的悬赏任务数据有可能还没下发)
            TimerAxis.Instance().KillTimer(TOKENTASK_TIMERID, this);
            TimerAxis.Instance().SetTimer(TOKENTASK_TIMERID, 200, this);
        }

        if (DataManager.Manager <UIPanelManager>().IsShowPanel(PanelID.RewardPanel))
        {
            //DataManager.Manager<UIPanelManager>().SendMsg(PanelID.RewardPanel, UIMsgID.eRewardTaskListRefresh, (int)nTokenTaskID);
            //策划要求直接关掉悬赏界面
            DataManager.Manager <UIPanelManager>().HidePanel(PanelID.RewardPanel);
        }

        //悬赏任务更新当前显示环数
        UpdateQuestTraceItemInfoByType(GameCmd.TaskType.TaskType_Token);
    }
Beispiel #19
0
    void ShowDemonsTaskUI(table.QuestDataBase quest, QuestTraceInfo taskInfo)
    {
        if (quest == null)
        {
            return;
        }

        SetTaskDesc(ref quest);

        SetTargetLabel(taskInfo, ref quest, ref m_label_demontargetLabel);

        SetDemonsStar();

        if (taskInfo != null)
        {
            SetBottomBtnLable(taskInfo);
            if (taskInfo.exp == 0)
            {
                //请求任务奖励
                NetService.Instance.Send(new GameCmd.stRequestTaskRewardScriptUserCmd_C()
                {
                    task_id = m_nTaskid
                });
            }
            else
            {
                m_label_labledemonexp.text = taskInfo.exp.ToString();
            }
        }
        else
        {
            NetService.Instance.Send(new GameCmd.stRequestTaskRewardScriptUserCmd_C()
            {
                task_id = m_nTaskid
            });
            m_label_btn_bottom_Label.text = "接取";
        }
    }
Beispiel #20
0
    /// <summary>
    ///  日环任务对话npc
    /// </summary>
    /// <param name="npcId"></param>
    /// <returns></returns>
    static bool GetNpcIdForDaliyRingTask(out uint npcId)
    {
        npcId = 0;
        uint doingTaskId = DataManager.Manager <TaskDataManager>().DoingTaskID;

        table.QuestDataBase qdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(doingTaskId);

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

        if (qdb.dwType == (uint)GameCmd.TaskType.TaskType_Loop)
        {
            if (qdb.dwSubType == (uint)TaskSubType.Talk)
            {
                npcId = qdb.dwEndNpc;
                return(true);
            }
        }

        return(false);
    }
Beispiel #21
0
    [Execute]//发布令牌任务
    public void Excute(stPublicTokenTaskScriptUserCmd_CS cmd)
    {
        TaskDataManager taskMgr = DataManager.Manager <TaskDataManager>();

        RewardMisssionInfo missioninfo = new RewardMisssionInfo();

        table.PublicTokenDataBase reward = GameTableManager.Instance.GetTableItem <table.PublicTokenDataBase>(cmd.tokentaskid, 1);
        if (reward != null)
        {
            missioninfo.strIcon = reward.smallicon;
            missioninfo.strName = reward.title;
            missioninfo.nType   = 1;
            missioninfo.ntaskid = reward.taskid;
            missioninfo.id      = reward.id;
            table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(reward.taskid);
            if (quest != null)
            {
                missioninfo.nExp      = quest.dwRewardExp;
                missioninfo.nleftTime = quest.dwLimitTime * 60 * 60;
            }
            missioninfo.nstate = (int)TokenTaskState.TOKEN_STATE_PUBLISH;
            taskMgr.RewardMisssionData.ReleaseRewardList.Add(missioninfo);
        }
    }
Beispiel #22
0
    /// <summary>
    /// 服务器下发数据初始化
    /// </summary>
    /// <param name="data"></param>
    /// <param name="acceptTaskRemain"></param>
    /// <param name="publicTaskRemain"></param>
    public void InitTask(List <GameCmd.TokenTaskInfo> data, uint acceptTaskRemain, uint publicTaskRemain)
    {
        RewardAcceptTimes  = acceptTaskRemain;//这里应当是已经接受的次数 下面也是
        RewardReleaseTimes = publicTaskRemain;
        ReleaseRewardList.Clear();
        receiveReward = null;
        RewardMisssionInfo missioninfo = null;

        for (int i = 0; i < data.Count; ++i)
        {
            missioninfo = new RewardMisssionInfo();
            //接受任务
            if (data[i].state > (int)GameCmd.TokenTaskState.TOKEN_STATE_FINISH)
            {
                table.AcceptTokenDataBase acceptData = GameTableManager.Instance.GetTableItem <table.AcceptTokenDataBase>(data[i].tokentaskid);
                if (acceptData != null)
                {
                    missioninfo.id      = acceptData.id;
                    missioninfo.strIcon = acceptData.icon;
                    missioninfo.strName = acceptData.title;
                    missioninfo.nType   = 2;
                    missioninfo.ntaskid = acceptData.taskid;
                    table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(acceptData.taskid);
                    if (quest != null)
                    {
                        missioninfo.nExp = quest.dwRewardExp;
                        long lpasstime = DateTimeHelper.Instance.Now - data[i].time;
                        missioninfo.nleftTime = quest.dwLimitTime * 60 * 60 - lpasstime;
                    }
                    missioninfo.nstate = (int)data[i].state;

                    QuestTraceInfo squest = QuestTranceManager.Instance.GetQuestTraceInfo(missioninfo.ntaskid);
                    if (squest != null)
                    {
                        missioninfo.nstate = squest.operate == squest.state ? (int)GameCmd.TokenTaskState.TOKEN_STATE_FINISH : (int)GameCmd.TokenTaskState.TOKEN_STATE_ACCEPT;
                    }
                    receiveReward = missioninfo;
                }
                continue;
            }

            table.PublicTokenDataBase reward = GameTableManager.Instance.GetTableItem <table.PublicTokenDataBase>(data[i].tokentaskid);
            if (reward != null)
            {
                missioninfo.id      = reward.id;
                missioninfo.strIcon = reward.smallicon;
                missioninfo.strName = reward.title;
                missioninfo.nType   = 1;
                missioninfo.ntaskid = reward.taskid;
                Engine.Utility.Log.LogGroup("ZCX", "id :" + data[i].tokentaskid);
                table.QuestDataBase quest = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(reward.taskid);
                if (quest != null)
                {
                    missioninfo.nExp = quest.dwRewardExp;
                    long lpasstime = DateTimeHelper.Instance.Now - data[i].time;
                    missioninfo.nleftTime = quest.dwLimitTime * 60 * 60 - lpasstime;
                }
                missioninfo.nstate = (int)data[i].state;
                ReleaseRewardList.Add(missioninfo);
            }
        }
        if (DataManager.Manager <UIPanelManager>().IsShowPanel(PanelID.RewardPanel))
        {
            DataManager.Manager <UIPanelManager>().SendMsg(PanelID.RewardPanel, UIMsgID.eRewardTaskListRefresh, null);
        }
        else
        {
            for (int i = 0; i < ReleaseRewardList.Count; i++)
            {
                if (ReleaseRewardList[i].nstate == (int)GameCmd.TokenTaskState.TOKEN_STATE_FINISH && true == DataManager.Manager <TaskDataManager>().FirstLoginSuccess)
                {
                    DataManager.Manager <FunctionPushManager>().AddSysMsg(new PushMsg()
                    {
                        msgType  = PushMsg.MsgType.TokenTaskReward,
                        senderId = Client.ClientGlobal.Instance().MainPlayer.GetID(), //m_leaderId,
                        //senderId = cmd.dwAnswerUserID,
                        //name = cmd.byTeamName,
                        //sendName = cmd.byAnswerName,
                        sendTime = UnityEngine.Time.realtimeSinceStartup,
                        cd       = 100000,
                    });
                }
            }
        }

        if (DataManager.Manager <UIPanelManager>().IsShowPanel(PanelID.RewardMissionPanel))
        {
            DataManager.Manager <UIPanelManager>().SendMsg(PanelID.RewardMissionPanel, UIMsgID.eRewardTaskListRefresh, null);
        }

        //悬赏任务更新当前显示环数
        UpdateQuestTraceItemInfoByType(GameCmd.TaskType.TaskType_Token);
    }
Beispiel #23
0
 private void SetTaskDesc(ref table.QuestDataBase quest)
 {
     m_label_RichText.text = quest.dwDesc;
 }
Beispiel #24
0
    private void OnCommitTask(QuestTraceInfo taskInfo)
    {
        table.QuestDataBase questDB = taskInfo.QuestTable;
        if (questDB == null)
        {
            Engine.Utility.Log.Error("QuestTable is null");
            return;
        }

        if (taskInfo.taskSubType == TaskSubType.Guild)
        {
            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.MissionMessagePanel, data: taskInfo.taskId);
            return;
        }

        PanelID pid;
        int     tab    = 0;
        int     copyId = 0;

        uint jumpId;

        if (taskInfo.IsOpenUI(out jumpId))
        {
            ItemManager.DoJump(jumpId);
            return;
        }
        else if (taskInfo.IsChangeBodyTask())
        {
            //bool isChange = (bool)Client.ClientGlobal.Instance().MainPlayer.SendMessage(Client.EntityMessage.EntityCommand_IsChange, null);
            //if (!isChange)
            //{
            //    m_nDoingTaskID = taskInfo.taskId;
            //    if (m_bAddChangeListener)
            //    {
            //        return;
            //    }

            //    m_bAddChangeListener = true;
            //    Engine.Utility.Log.Info("{0}CanDone 等待.......变身回来 执行任务{1}", TAG, m_nDoingTaskID);
            //    Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_CHANGE, OnEvent);
            //    return;
            //}

            m_nDoingTaskID = taskInfo.taskId;
            if (false == m_bAddChangeListener && false == MainPlayerIsChangeBody())
            {
                m_bAddChangeListener = true;
                Engine.Utility.Log.Info("{0}CanDone 等待.......变身回来 执行任务{1}", TAG, m_nDoingTaskID);
                Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_CHANGE, OnEvent);
            }

            VisitNpc(questDB.dwHelpCommit, questDB.submitMapID, questDB.dwEndNpc, questDB.dwID);
            return;
        }
        uint npcid = 0;

        if (taskInfo.IsKillMonster(out npcid))
        {
            Client.ISkillPart skillPart = Client.ClientGlobal.Instance().MainPlayer.GetPart(Client.EntityPart.Skill) as Client.ISkillPart;
            if (skillPart != null)
            {
                if (skillPart.GetCurSkillState() != (int)Client.SkillState.None)
                {
                    m_nDoingTaskID = taskInfo.taskId;
                    Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.SKILLNONESTATE_ENTER, OnEvent);
                    Engine.Utility.Log.Info("等待.......技能播放完毕 执行任务{0}", m_nDoingTaskID);
                    return;
                }
            }
        }

        //令牌悬赏无交任务npc
        if (taskInfo.taskType != GameCmd.TaskType.TaskType_Token)
        {
            DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
            {
                VisitNpc(questDB.dwHelpCommit, questDB.submitMapID, questDB.dwEndNpc, questDB.dwID);
            }, null);
        }
    }
Beispiel #25
0
 //***********************************************//
 public Quest(table.QuestDataBase config)
 {
     tableInfo = config;
 }
Beispiel #26
0
    private void OnDoingTask(QuestTraceInfo taskInfo)
    {
        DataManager.Manager <TaskDataManager>().DoingTaskID = taskInfo.taskId;

        Client.IController controller = Client.ClientGlobal.Instance().GetControllerSystem().GetActiveCtrl();
        if (controller == null)
        {
            Engine.Utility.Log.Error("IController is null");

            return;
        }
        table.QuestDataBase questDB = taskInfo.QuestTable;
        if (questDB == null)
        {
            Engine.Utility.Log.Error("QuestTable is null");
            return;
        }
        UnityEngine.Vector2 pos;
        uint    npcid = 0;
        PanelID pid;
        int     copyID;
        int     tab = 0;
        uint    jumpId;

        //背包满了  无法执行任务
        if (false == taskInfo.TaskItemCanPutInKanpsack())
        {
            TipsManager.Instance.ShowTips(LocalTextType.Task_Commond_3);
            return;
        }

        if (MainPlayerIsChangeBody())
        {
            return;
        }
        else if (taskInfo.taskSubType == TaskSubType.SubmitLimit) //断档任务
        {
            if (taskInfo.IsOpenUI(out jumpId))
            {
                ItemManager.DoJump(jumpId);
            }
            else
            {
                string des = string.Format("将等级提升到{0}级继续主线任务", taskInfo.finishLevel);
                TipsManager.Instance.ShowTips(des);
            }
            return;
        }
        else if (taskInfo.IsDynamicCommitItem) //动态道具递交(蚩尤乱世除外)
        {
            taskInfo.DoJump();
            return;
        }
        else if (DataManager.Manager <ComBatCopyDataManager>().IsEnterCopy == false && taskInfo.IsOpenUI(out jumpId))
        {
            ItemManager.DoJump(jumpId);
            return;
        }
        else if (taskInfo.IsMoveToTargetPos(out pos))
        {
            //if (DataManager.Manager<TaskDataManager>().IsShowSlider)
            if (DataManager.Manager <SliderDataManager>().IsReadingSlider)
            {
                return;
            }
            Client.IControllerSystem cs = Client.ClientGlobal.Instance().GetControllerSystem();
            if (cs == null)
            {
                return;
            }

            if (!m_bAddStopMoveListener)
            {
                m_bAddStopMoveListener = true;
                Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYSTOPMOVE, OnEvent);
            }

            if (EqualsMapID(questDB.destMapID))
            {
                cs.GetCombatRobot().Stop();
                DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
                {
                    //if (!m_bAddStopMoveListener)
                    //{
                    //    m_bAddStopMoveListener = true;
                    //    Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYSTOPMOVE, OnEvent);
                    //}
                    m_nDoingTaskID = taskInfo.taskId;
                    controller.GotoMap(questDB.destMapID, new Vector3(pos.x, 0, -pos.y));
                }, null);
                return;
            }
            else
            {
                DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
                {
                    if (questDB.dwHelpDoing)
                    {
                        m_nDoingTaskID = taskInfo.taskId;

                        //下载地图检查
                        if (!KHttpDown.Instance().SceneFileExists(questDB.destMapID))
                        {
                            //打开下载界面
                            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
                            return;
                        }

                        controller.GotoMapDirectly(questDB.destMapID, new Vector3(pos.x, 0, -pos.y), questDB.dwID);
                    }
                }, null);
            }
        }
        else if (taskInfo.IsVisitCollectNpc(out npcid) || taskInfo.IsDeleverItem(out npcid))
        {
            AddCollectNpcEffect(taskInfo);

            DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
            {
                VisitNpc(questDB.dwHelpDoing, questDB.destMapID, npcid, questDB.dwID);
            }, null);
        }
        else if (taskInfo.IsDirectlyVisitCopy(taskInfo.copyId) && false == EqualsMapID(questDB.destMapID))
        {
            //直接跳副本
            VisitCopy(taskInfo.copyId);
        }
        else if (taskInfo.IsKillMonster(out npcid))
        {
            Client.ICombatRobot robot = Client.ClientGlobal.Instance().GetControllerSystem().GetCombatRobot();
            if (robot == null)
            {
                Engine.Utility.Log.Error("robotis null");

                return;
            }
            if (robot.Status == Client.CombatRobotStatus.RUNNING && robot.TargetId == npcid)
            {
                Engine.Utility.Log.Info("已经在挂机杀怪{0}", npcid);
                return;
            }
            //TODO 优化
            bool getPos = false;
            if (EqualsMapID(questDB.destMapID))
            {
                Client.IMapSystem ms = Client.ClientGlobal.Instance().GetMapSystem();
                if (ms.GetClienNpcPos((int)npcid, out pos))
                {
                    getPos = true;
                    Vector3 mainPos = Client.ClientGlobal.Instance().MainPlayer.GetPos();
                    if ((mainPos - new Vector3(pos.x, mainPos.y, -pos.y)).sqrMagnitude < 5)
                    {
                        Client.IControllerSystem cs = Client.ClientGlobal.Instance().GetControllerSystem();
                        if (cs != null)
                        {
                            cs.GetCombatRobot().StartWithTarget((int)npcid);
                            Engine.Utility.Log.LogGroup("ZCX", "挂机杀怪物{0}", npcid);
                            return;
                        }
                    }
                }
            }

            DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
            {
                if (!m_bAddStopMoveListener)
                {
                    m_bAddStopMoveListener = true;
                    Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYSTOPMOVE, OnEvent);
                }
                m_nDoingTaskID = taskInfo.taskId;
                if (getPos)
                {
                    controller.MoveToTarget(new Vector3(pos.x, 0, -pos.y), null, true);
                }
                else if (EqualsMapID(questDB.destMapID))
                {
                    Client.IMapSystem ms = Client.ClientGlobal.Instance().GetMapSystem();
                    if (ms.GetClienNpcPos((int)npcid, out pos))
                    {
                        controller.MoveToTarget(new Vector3(pos.x, 0, -pos.y), null, true);
                    }
                }
                else
                {
                    VisitNpc(questDB.dwHelpDoing, questDB.destMapID, npcid, questDB.dwID);
                }
            }, null);
        }
    }
Beispiel #27
0
    public void OnClickCard(RewardCard card)
    {
        if (UnityEngine.Time.realtimeSinceStartup - m_fClickCardTime < 0.3f)
        {
            return;
        }

        if (m_nLastIndex == card.Index)
        {
            m_fClickCardTime = UnityEngine.Time.realtimeSinceStartup;
            for (int i = m_nLastIndex + 1 < m_lstRewardCard.Count ? m_nLastIndex + 1 : 0; i < m_lstRewardCard.Count; i++)
            {
                Vector3 pos = m_lstRewardCard[i].transform.localPosition;
                pos.x = m_nLastIndex + 1 < m_lstRewardCard.Count ? pos.x - OFFSETX : pos.x + OFFSETX;
                TweenPosition tp = TweenPosition.Begin(m_lstRewardCard[i].gameObject, 0.25f, pos);
            }

            if (m_nLastIndex + 1 < m_lstRewardCard.Count)
            {
                TweenPosition.Begin(m_widget_rewardInfo.gameObject, 0.15f, new UnityEngine.Vector3(-OFFSETX, 0, 0));
            }
            else
            {
                TweenPosition.Begin(m_widget_rewardInfo.gameObject, 0.15f, new UnityEngine.Vector3(OFFSETX, 0, 0));
            }

            m_nLastIndex = -1;
            return;
        }

        if (m_nLastIndex >= 0 && m_trans_PanelInfo.gameObject.activeSelf)
        {
            for (int i = m_nLastIndex + 1 < m_lstRewardCard.Count ? m_nLastIndex + 1 : 0; i < m_lstRewardCard.Count; i++)
            {
                Vector3 pos = m_lstRewardCard[i].transform.localPosition;
                pos.x = m_nLastIndex + 1 < m_lstRewardCard.Count ? pos.x - OFFSETX : pos.x + OFFSETX;
                m_lstRewardCard[i].transform.localPosition = pos;
            }
            m_widget_rewardInfo.transform.localPosition = new UnityEngine.Vector3(-OFFSETX, 0, 0);
        }
        m_nLastIndex = card.Index;


        for (int i = card.Index + 1 < m_lstRewardCard.Count ? card.Index + 1 : 0; i < m_lstRewardCard.Count; i++)
        {
            Vector3 pos = m_lstRewardCard[i].transform.localPosition;
            pos.x = card.Index + 1 < m_lstRewardCard.Count ? pos.x + OFFSETX : pos.x - OFFSETX;
            TweenPosition tp = TweenPosition.Begin(m_lstRewardCard[i].gameObject, 0.15f, pos);
        }

        m_label_release_Label.enabled = card.TaskType == 1;
        m_label_take_Label.enabled    = card.TaskType == 2;

        m_widget_rewardInfo.transform.Find("Sprite/release_tips").gameObject.SetActive(card.TaskType == 1);
        m_widget_rewardInfo.transform.Find("Sprite/take_tips").gameObject.SetActive(card.TaskType == 2);

        if (card.TaskType == 1)
        {
            table.QuestDataBase taskdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(card.TaskId);
            //if (taskdb != null)
            //{
            //    m_label_infoexpNum.text = taskdb.dwRewardExp.ToString();
            //}
            //m_label_receiveCost.transform.parent.gameObject.SetActive(false);
            //m_label_acceptExp.text = "";
        }
        else if (card.TaskType == 2)
        {
            //m_label_receiveCost.transform.parent.gameObject.SetActive(true);
            //m_label_infoexpNum.text = "";
            //m_label_receiveCost.text = card.CostMoney.ToString();
            table.QuestDataBase taskdb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(card.TaskId);
            if (taskdb != null)
            {
                List <table.RandomTargetDataBase> randomlist = GameTableManager.Instance.GetTableList <table.RandomTargetDataBase>();
                for (int i = 0, imax = randomlist.Count; i < imax; i++)
                {
                    if (randomlist[i].activity_type == 1 && taskdb.target_group == randomlist[i].group && randomlist[i].level == MainPlayerHelper.GetPlayerLevel())
                    {
                        m_label_acceptExp.text = string.Format("{0}", randomlist[i].level * randomlist[i].exp_ratio);
                        break;
                    }
                }
            }
        }

        m_trans_PanelInfo.transform.parent        = m_trans_gridroot;
        m_trans_PanelInfo.transform.localPosition = card.transform.localPosition;
        m_trans_PanelInfo.gameObject.SetActive(true);
        if (card.Index + 1 < m_lstRewardCard.Count)
        {
            m_trans_PanelInfo.transform.localPosition   = card.transform.localPosition + new Vector3(OFFSETX, 0, 0);
            m_widget_rewardInfo.transform.localPosition = new UnityEngine.Vector3(-OFFSETX, 0, 0);
            TweenPosition tp = TweenPosition.Begin(m_widget_rewardInfo.gameObject, 0.15f, Vector3.zero);
        }
        else
        {
            m_widget_rewardInfo.transform.localPosition = new UnityEngine.Vector3(OFFSETX, 0, 0);
            TweenPosition tp = TweenPosition.Begin(m_widget_rewardInfo.gameObject, 0.15f, Vector3.zero);
        }
        m_fClickCardTime = UnityEngine.Time.realtimeSinceStartup;
    }
Beispiel #28
0
    public bool RemoveTaskTrack(uint nTaskID)
    {
        if (m_lstReceivedTask == null)
        {
            return(false);
        }
        for (int i = 0; i < m_lstReceivedTask.Count; i++)
        {
            if (m_lstReceivedTask[i].taskId == nTaskID)
            {
                m_lstReceivedTask.RemoveAt(i);
                UpdateCanReceiveTask();
                break;
            }
        }


        //检查魔族急袭可接任务
        table.QuestDataBase qDb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(nTaskID);
        if (qDb != null)
        {
            if (qDb.dwType == (uint)GameCmd.TaskType.TaskType_Demons)
            {
                Dictionary <uint, uint>             completeTaskDic = DataManager.Manager <TaskDataManager>().CompleteTask;
                Dictionary <uint, uint> .Enumerator etr             = completeTaskDic.GetEnumerator();

                uint count = 0;
                while (etr.MoveNext())
                {
                    table.QuestDataBase tempDb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(etr.Current.Key);
                    if (tempDb.dwType == (uint)GameCmd.TaskType.TaskType_Demons)
                    {
                        count++;
                    }
                }

                if (count == 0)
                {
                    m_lstCanReceive.RemoveAll((d) => { return(d.taskType == GameCmd.TaskType.TaskType_Demons); });
                    UpdateCanReceiveTask();
                    return(true);
                }

                // 2、
                List <QuestTraceInfo> list = m_lstCanReceive.FindAll((data) => { return(data.taskType == GameCmd.TaskType.TaskType_Demons); });
                for (int i = list.Count - 1; i >= 0; i--)
                {
                    //前置任务没完成  从可接任务中删除
                    if (false == DataManager.Manager <TaskDataManager>().CheckTaskFinished(list[i].PreTask))
                    {
                        Engine.Utility.Log.LogGroup("LCY", "手动删除可接任务的  taskId ={0}", list[i].taskId);
                        m_lstCanReceive.Remove(list[i]);

                        UpdateCanReceiveTask();
                    }
                }
            }
        }

        return(true);
    }
Beispiel #29
0
    /// <summary>
    /// 升级 删除 或者接取任务的时候刷新可以接取任务
    /// </summary>
    public void UpdateCanReceiveTask()
    {
        if (m_lstCanReceive == null)
        {
            m_lstCanReceive = new List <QuestTraceInfo>();
        }
        //m_lstCanReceive.Clear();

        if (Client.ClientGlobal.Instance().MainPlayer == null)
        {
            return;
        }
        int playerLevel = Client.ClientGlobal.Instance().MainPlayer.GetProp((int)Client.CreatureProp.Level);

        int job = Client.ClientGlobal.Instance().MainPlayer.GetProp((int)Client.PlayerProp.Job);

        List <table.QuestDataBase> allTableQuest = GameTableManager.Instance.GetTableList <table.QuestDataBase>();

        table.QuestDataBase stTask  = null;
        TaskDataManager     taskMgr = DataManager.Manager <TaskDataManager>();

        for (int i = 0, imax = allTableQuest.Count; i < allTableQuest.Count; i++)
        {
            stTask = allTableQuest[i];

            bool contain = false;

            for (int k = 0; k < m_lstCanReceive.Count; k++)
            {
                if (m_lstCanReceive[k].taskId == stTask.dwID)
                {
                    contain = true;
                    break;
                }
            }

            if (contain)
            {
                continue;
            }

            if (taskMgr.CheckTaskFinished(stTask.dwID))
            {
                continue;
            }

            //职业限制
            if (stTask.job != 0 && stTask.job != job)
            {
                continue;
            }

            //不能接的任务
            if (playerLevel < stTask.dwMinLevel || playerLevel > stTask.dwMaxLevel)
            {
                continue;
            }

            //前置任务没完成直接跳过
            if (!string.IsNullOrEmpty(stTask.dwPreTask))
            {
                if (stTask.Type != GameCmd.TaskType.TaskType_Loop && !taskMgr.CheckTaskFinished(stTask.dwPreTask))
                {
                    continue;
                }
            }

            //环任务不主动添加,由服务器下发
            if (stTask.Type == GameCmd.TaskType.TaskType_Loop)
            {
                continue;
            }

            //已经接了
            if (CheckTaskAccepted(stTask.dwID))
            {
                continue;
            }
            if (stTask.dwMinLevel > playerLevel)
            {
                continue;
            }
            if (taskMgr.CheckTaskFinished(stTask.dwID)) //完成过的任务
            {
                continue;
            }

            QuestTraceInfo questTranceInfo = new QuestTraceInfo(stTask, 0, 0, false);
            questTranceInfo.UpdateDesc();

            m_lstCanReceive.Add(questTranceInfo);

            if (DataManager.Manager <TaskDataManager>().FirstLoginSuccess)
            {
                Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_CANACCEPT, stTask.dwID);
            }
            //引导任务
            if (stTask.dwSubType == (uint)TaskSubType.Guild)
            {
                if (stTask.startStatus == 2)//主动接取
                {
                    Protocol.Instance.RequestAcceptTask(stTask.dwID);
                }
            }
        }
    }
Beispiel #30
0
 void ExecuteGoto(DailyDataBase dailyData)
 {
     if (null == dailyData)
     {
         return;
     }
     if (dailyData.isClosePanel == 1)
     {
         HideSelf();
     }
     if (dailyData.taskID > 0)
     {
         table.QuestDataBase questDb = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(dailyData.taskID);
         if (questDb != null)
         {
             //如果是魔族任务 找当前在做的魔族任务执行 否则直接执行当前配置任务id
             if (questDb.dwType == (uint)GameCmd.TaskType.TaskType_Demons)
             {
                 List <QuestTraceInfo> lstdata = null;
                 DataManager.Manager <TaskDataManager>().GetAllQuestTraceInfo(out lstdata);
                 for (int i = 0; i < lstdata.Count; i++)
                 {
                     if (lstdata[i].taskType != TaskType.TaskType_Demons)
                     {
                         continue;
                     }
                     Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_DONING,
                                                                         new Client.stDoingTask()
                     {
                         taskid = lstdata[i].taskId
                     });
                     return;
                 }
             }
             Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_DONING,
                                                                 new Client.stDoingTask()
             {
                 taskid = dailyData.taskID
             });
         }
     }
     else if (dailyData.puGuaID > 0)
     {
         List <QuestTraceInfo> lstdata = new List <QuestTraceInfo>();
         DataManager.Manager <TaskDataManager>().GetAllQuestTraceInfo(out lstdata);
         for (int i = 0; i < lstdata.Count; i++)
         {
             if (lstdata[i].taskType != TaskType.TaskType_Loop)
             {
                 continue;
             }
             Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_DONING,
                                                                 new Client.stDoingTask()
             {
                 taskid = lstdata[i].taskId
             });
             return;
         }
         if (dailyData.jumpID > 0)
         {
             ItemManager.DoJump(dailyData.jumpID);
         }
     }
     else if (dailyData.jumpID > 0)
     {
         ItemManager.DoJump(dailyData.jumpID);
     }
 }