/// <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; }
/// <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); }
/// <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); }
/// <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); } }
/// <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)); }