/// <summary> /// 下发任务 /// </summary> /// <param name="user"></param> /// <param name="taskID"></param> public static List <UserTask> SendAllowTask(GameUser user, int taskID) { List <UserTask> userTaskList = new List <UserTask>(); var cacheSet = new GameDataCacheSet <UserTask>(); UserTask preTask = cacheSet.FindKey(user.UserID, taskID); if (taskID > 0 && preTask != null && (preTask.TaskState != TaskState.Close || preTask.TaskType == TaskType.Offset)) { return(userTaskList); } if (taskID == 0 && cacheSet.FindAll(user.UserID, m => m.TaskType < TaskType.Daily).Count > 0) { return(userTaskList); } IList <StoryTaskInfo> taskList = StoryTaskInfo.GetNextTask(taskID); bool isSend = true; foreach (StoryTaskInfo taskInfo in taskList) { if (taskInfo.CountryID != CountryType.None && user.CountryID != taskInfo.CountryID) { continue; } UserTask userTask = cacheSet.FindKey(user.UserID, taskInfo.TaskID); if (userTask == null) { userTask = new UserTask { TaskID = taskInfo.TaskID, UserID = user.UserID, TaskType = taskInfo.TaskType, TaskState = taskInfo.TaskLv <= user.UserLv ? TaskState.AllowTake : TaskState.NoTake, CompleteNum = 0, CreateDate = DateTime.Now }; cacheSet.Add(userTask); userTask = cacheSet.FindKey(user.UserID, taskInfo.TaskID); userTaskList.Add(userTask); } else { //判断是否已下发过 isSend = false; break; } } if (isSend) { return(userTaskList); } return(new List <UserTask>()); }
protected override void ProcessCmd(string[] args) { int taskID = args.Length > 0 ? args[0].Trim().ToInt() : 0; GameUser user = new GameDataCacheSet <GameUser>().FindKey(UserID); if (user == null) { UserCacheGlobal.Load(UserID); user = new GameDataCacheSet <GameUser>().FindKey(UserID); } var taskList = StoryTaskInfo.GetNextTask(taskID); foreach (StoryTaskInfo taskInfo in taskList) { if (taskInfo.CountryID != CountryType.None && user.CountryID != taskInfo.CountryID) { continue; } var cacheSet = new GameDataCacheSet <UserTask>(); UserTask userTask = cacheSet.FindKey(UserID, taskInfo.TaskID); if (userTask == null) { userTask = new UserTask { TaskID = taskInfo.TaskID, UserID = UserID, TaskType = taskInfo.TaskType, TaskState = TaskState.AllowTake, CreateDate = DateTime.Now }; cacheSet.Add(userTask, GameEnvironment.CacheUserPeriod); } else { userTask.TaskState = TaskState.AllowTake; } } }