Exemplo n.º 1
0
        /// <summary>
        /// 初始化同类型工作任务
        /// </summary>
        /// <param name="task"></param>
        public static void WorkTasksInit(object b)
        {
            var task     = b as tg_task;
            var basetask = Variable.BASE_TASKVOCATION.FirstOrDefault(q => q.id == task.task_id);

            if (basetask == null)
            {
                return;
            }
            var task_id    = basetask.id;
            var step       = basetask.stepInit;
            var step_type  = basetask.stepType;
            var taskextend = Variable.WorkInfo.FirstOrDefault(q => q.userid == task.user_id);

            if (taskextend == null)
            {
                Variable.WorkInfo.Add(new Variable.UserTaskInfo()
                {
                    userid = task.user_id
                });
            }
            if (basetask.stepType == (int)TaskStepType.FIGHTING_CONTINUOUS ||
                basetask.stepType == (int)TaskStepType.SEARCH_GOODS ||
                basetask.stepType == (int)TaskStepType.ESCORT || basetask.stepType == (int)TaskStepType.RUMOR ||
                basetask.stepType == (int)TaskStepType.FIRE || basetask.stepType == (int)TaskStepType.BREAK ||
                basetask.stepType == (int)TaskStepType.SEll_WINE ||
                basetask.stepType == (int)TaskStepType.ASSASSINATION ||
                basetask.stepType == (int)TaskStepType.GUARD || basetask.stepType == (int)TaskStepType.ARREST_RUMOR ||
                basetask.stepType == (int)TaskStepType.ARREST_FIRE ||
                basetask.stepType == (int)TaskStepType.ARREST_BREAK ||
                basetask.stepType == (int)TaskStepType.ARREST_SEll_WINE ||
                basetask.stepType == (int)TaskStepType.STAND_GUARD)
            {
                var basetasks = Variable.BASE_TASKVOCATION.Where(q => q.stepType == basetask.stepType).ToList();

                var newtask = RandomTask(new List <int> {
                }, basetasks, basetask.stepType);
                if (newtask == null)
                {
                    return;
                }
                task_id   = newtask.id;
                step      = newtask.stepInit;
                step_type = newtask.stepType;
            }
            task = new TGTask().BuildSpecialTask(step, step_type, task_id, task.user_id, task.task_base_identify, (int)TaskType.WORK_TASK);
#if DEBUG
            XTrace.WriteLine("id {0},step:{1}", task.task_id, task.task_step_data);
#endif
            var a = true;
            Variable.CD.TryRemove(string.Format("{0}_{1}_{2}", (int)CDType.WorkTask, task.user_id, task.id), out a);
            return;
        }
Exemplo n.º 2
0
        /// <summary>
        /// 初始化同类型工作任务
        /// </summary>
        /// <param name="task"></param>
        public tg_task WorkTasksInit(tg_task task)
        {
            var basetask = Variable.BASE_TASKVOCATION.FirstOrDefault(q => q.id == task.task_id);

            if (basetask == null)
            {
                return(task);
            }
            var task_id   = basetask.id;
            var step      = basetask.stepInit;
            var step_type = basetask.stepType;

            if (basetask.stepType == (int)TaskStepType.FIGHTING_CONTINUOUS ||
                basetask.stepType == (int)TaskStepType.SEARCH_GOODS ||
                basetask.stepType == (int)TaskStepType.ESCORT || basetask.stepType == (int)TaskStepType.RUMOR ||
                basetask.stepType == (int)TaskStepType.FIRE || basetask.stepType == (int)TaskStepType.BREAK ||
                basetask.stepType == (int)TaskStepType.SEll_WINE ||
                basetask.stepType == (int)TaskStepType.ASSASSINATION ||
                basetask.stepType == (int)TaskStepType.GUARD || basetask.stepType == (int)TaskStepType.ARREST_RUMOR ||
                basetask.stepType == (int)TaskStepType.ARREST_FIRE ||
                basetask.stepType == (int)TaskStepType.ARREST_BREAK ||
                basetask.stepType == (int)TaskStepType.ARREST_SEll_WINE ||
                basetask.stepType == (int)TaskStepType.STAND_GUARD)
            {
                var basetasks = Variable.BASE_TASKVOCATION.Where(q => q.stepType == basetask.stepType).ToList();

                var newtask = RandomTask(basetasks, basetask.stepType);
                if (newtask == null)
                {
                    return(task);
                }
                task_id   = newtask.id;
                step      = newtask.stepInit;
                step_type = newtask.stepType;
            }
            var coolingtime = task.task_coolingtime;

            task = new TGTask().BuildSpecialTask(step, step_type, task_id, task.user_id, task.task_base_identify, (int)TaskType.WORK_TASK);
            task.task_coolingtime = coolingtime;
            var a = true;

            Variable.CD.TryRemove(string.Format("{0}_{1}_{2}", (int)CDType.WorkTask, task.user_id, task.id), out a);
            return(task);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 从小事赚起 任务验证
        ///任务步骤值:401|1_200059_1|1_200067_1|4_6_00_2|3_6_00_200066_2
        /// / </summary>
        private bool CheckDiaAndSend(string basestep, int npc, tg_task task)
        {
            var mysteplist   = new TGTask().SplitTaskToList(task.task_step_data);
            var basesteplist = new TGTask().SplitTaskToList(basestep);
            var diff         = mysteplist.Except(basesteplist).ToList(); //找出未完成的任务

            if (!diff.Any())
            {
                return(false);
            }
            for (var i = 0; i < diff.Count; i++)
            {
                var splitdiff = diff[i].Split('_').ToList();
                if (Convert.ToInt32(splitdiff[0]) != Convert.ToInt32(TaskStepType.TYPE_DIALOG))
                {
                    continue;
                }
                if (splitdiff[1] != npc.ToString() || splitdiff[2] != "0")
                {
                    continue;
                }
                var index = mysteplist.IndexOf(diff[i]);
                //任务更新
                if (!UpdateStep(mysteplist, index, 2, basesteplist))
                {
                    return(false);
                }
                if (!UpdateStep(mysteplist, mysteplist.Count - 2, 3, basesteplist))
                {
                    return(false);
                }
                if (!UpdateStep(mysteplist, mysteplist.Count - 1, 4, basesteplist))
                {
                    return(false);
                }
                var newstep = string.Join("|", mysteplist);
                Common.getInstance().TaskUpdate(task, newstep, basestep);
                return(true);
            }
            return(false);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 初始新身份得到的工作任务
        /// </summary>
        /// <param name="userid">用户id</param>
        /// <param name="identify">身份值</param>
        /// <returns></returns>
        private static void SpecialTasksInit(object a)
        {
            var b           = a as TestTask;
            var userid      = b.user_id;
            var identify    = b.identify;
            var entitytasks = new List <tg_task>();

            var baseidentify = Variable.BASE_IDENTITY.FirstOrDefault(q => q.id == b.identify);

            if (baseidentify == null)
            {
                return;
            }
            var mytasks = Variable.BASE_TASKVOCATION.Where(q => q.type == 2 && q.identifyValue <= baseidentify.value).ToList();

            if (!mytasks.Any())
            {
                return;
            }
            var taskextend = Variable.WorkInfo.FirstOrDefault(q => q.userid == b.user_id);

            if (taskextend == null)
            {
                Variable.WorkInfo.Add(new Variable.UserTaskInfo()
                {
                    userid = b.user_id
                });
            }

            foreach (var item in mytasks)
            {
                var step     = item.stepInit;
                var steptype = item.stepType;
                var taskid   = item.id;
                if (item.stepType == (int)TaskStepType.FIGHTING_CONTINUOUS || item.stepType == (int)TaskStepType.SEARCH_GOODS ||
                    item.stepType == (int)TaskStepType.ESCORT || item.stepType == (int)TaskStepType.RUMOR ||
                    item.stepType == (int)TaskStepType.FIRE || item.stepType == (int)TaskStepType.BREAK ||
                    item.stepType == (int)TaskStepType.SEll_WINE || item.stepType == (int)TaskStepType.ASSASSINATION ||
                    item.stepType == (int)TaskStepType.GUARD || item.stepType == (int)TaskStepType.ARREST_RUMOR ||
                    item.stepType == (int)TaskStepType.ARREST_FIRE || item.stepType == (int)TaskStepType.ARREST_BREAK ||
                    item.stepType == (int)TaskStepType.ARREST_SEll_WINE || item.stepType == (int)TaskStepType.STAND_GUARD)
                {
                    var steptypelist = entitytasks.Select(q => q.task_step_type).ToList();
                    var basetask     = RandomTask(steptypelist, mytasks, steptype);
                    if (basetask == null)
                    {
                        continue;
                    }
                    step     = basetask.stepInit;
                    steptype = basetask.stepType;
                    taskid   = basetask.id;
                    var newone = new TGTask().BuildSpecialTask(step, steptype, taskid, userid, identify,
                                                               (int)TaskType.WORK_TASK);
                    entitytasks.Add(newone);
#if DEBUG
                    XTrace.WriteLine("id {0},step:{1}", newone.task_id, newone.task_step_data);
#endif
                    continue;
                }
                var newone1 = new TGTask().BuildSpecialTask(step, steptype, taskid, userid, identify,
                                                            (int)TaskType.WORK_TASK);
#if DEBUG
                XTrace.WriteLine("id {0},step:{1}", newone1.task_id, newone1.task_step_data);
#endif
                entitytasks.Add(newone1);
            }
        }
Exemplo n.º 5
0
            /// <summary>
            /// 提交任务验证
            /// </summary>
            /// <param name="task">tg_task实体</param>
            /// <param name="npc">前端提交的npcid</param>
            /// <param name="baseindex"></param>
            private ASObject SubmitTaskCheck(tg_task task, int npc, int baseindex)
            {
                if (task == null)
                {
                    return(null);
                }
                if (Variable.BASE_TASKMAIN[baseindex].finishedId != npc)
                {
                    return(BulidReturnData((int)ResultType.TASK_NPC_FALSE, null));
                }
                //验证任务是不是最后一个主线任务
                var tuple = CheckIsLastTask(task, baseindex);

                if (tuple.Item1)
                {
                    return(tuple.Item2);
                }
                //领取奖励验证
                var reward = new Share.Reward();

                if (!reward.GetReward(Variable.BASE_TASKMAIN[baseindex].reward, task.user_id, (int)ModuleNumber.TASK, (int)TaskCommand.TASK_FINISH)) //领取奖励
                {
                    reward.Dispose();
                    return(BulidReturnData((int)ResultType.BAG_ISFULL_ERROR, null));
                }
                reward.Dispose();
                var newtask = new TGTask().BuildNewMainTask(Variable.BASE_TASKMAIN[baseindex + 1].id, Variable.BASE_TASKMAIN[baseindex + 1].stepCondition, task.id, task.user_id);

                if (newtask == null)
                {
                    return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
                }
                var tuple1 = CheckLevel(Variable.BASE_TASKMAIN[baseindex + 1].openLevel, newtask);

                if (!tuple1.Item1)
                {
                    return(tuple1.Item2);
                }
                IsPushCard(task.task_id, task.user_id);
                //引导任务不需要接受
                if (newtask.task_step_data.StartsWith(string.Format("{0}_", (int)TaskStepType.TYPE_BUSINESS)) ||
                    newtask.task_step_data.StartsWith(string.Format("{0}_", (int)TaskStepType.STUDY_SKILL)) ||
                    newtask.task_step_data.StartsWith(string.Format("{0}_", (int)TaskStepType.TRAIN)))
                {
                    newtask.task_state = (int)TaskStateType.TYPE_UNFINISHED;
                }
#if DEBUG
                if (newtask.task_id == 2010018)
                {
                    newtask.task_id        = 2010017;
                    newtask.task_step_data = "1_200019_1|8_15020003_1_1";
                    newtask.task_state     = 2;
                }
#endif
                tg_task.GetTaskUpdate(newtask.task_state, newtask.task_step_data, newtask.task_id, newtask.id, newtask.user_id);
                if (!Variable.OnlinePlayer.ContainsKey(task.user_id))
                {
                    return(BulidReturnData((int)ResultType.UNKNOW_ERROR, null));
                }

                var session = Variable.OnlinePlayer[task.user_id] as TGGSession;
                if (session == null)
                {
                    return(BulidReturnData((int)ResultType.UNKNOW_ERROR, null));
                }
                session.MainTask = newtask;
                //验证大名令主线任务是否已完成
                var rule = Variable.BASE_RULE.FirstOrDefault(m => m.id == "2018");
                if (rule != null)
                {
                    if (newtask.task_id == Convert.ToInt32(rule.value))
                    {
                        var daming = session.Player.DamingLog;
                        var bigbag = daming.FirstOrDefault(m => m.base_id == (int)DaMingType.大礼包);
                        if (bigbag != null)
                        {
                            if (bigbag.is_finish == 1)
                            {
                                newtask = new TGTask().GetNewTask(newtask);
                            }
                        }
                    }
                }
                return(BulidReturnData((int)ResultType.SUCCESS, newtask));
            }