public bool ProcessItem(string itemSymbol, bool inner) { int conditionId = Convert.ToInt32(itemSymbol); var condition = _configReader.SingleByIndexes <ITaskConditionConfig>(new { task.TaskId, conditionID = conditionId }); if (condition == null) { Logger.Error($"_TaskCondition Data null! ID = {conditionId}"); if (_desNatural) { task.Conditions.Add(new TaskCondition { _ID = conditionId, OK = false, // TODO _Condition = _TaskConditionDao.Select(task._ID, conditionID) }); } return(false); } bool flag = false; TaskCondition userCondition = null; //记录有掉落道具的条件 对照玩家所拥有的数量。 int iv = 0; if (task.StaticConditions != null && task.StaticConditions.Contains(conditionId)) {//静态数据 并且已经完成了 //task.Conditions.Add(new TaskCondition { _ID = conditionID, OK = true, _Condition = _TaskConditionDao.Select(task._ID, conditionID) }); //return true; userCondition = new TaskCondition { _ID = conditionId, OK = true, //TODO _Condition = _TaskConditionDao.Select(task._ID, conditionId) }; flag = true; iv = condition.V; } else {//非静态条件 TaskConditionDetectContext context = new TaskConditionDetectContext(task.Rid, condition); //flag = context.Execute(); iv = context.GetiV(); flag = TaskConditionDetectContext.Operator(iv, condition.V, condition.Operate); if (flag && condition.IsStatic) {//静态数据 保存已经检测完毕 try { //TODO //if (TaskDao.InsertTaskStaticCondition(task.ID, condition.ID)) //{ // if (task.StaticConditions == null) // task.StaticConditions = new List<int>(); // task.StaticConditions.Add(condition.ID); //} } catch (Exception) { //TODO //Logger.Error("TaskStaticCondition error {0},{1}", task.ID, condition.ID); } } userCondition = new TaskCondition { _ID = conditionId, OK = flag, //TODO _Condition = _TaskConditionDao.Select(task._ID, conditionId) }; } /* * //地图点信息 * if (condition.BattleData != null) * { * TaskMap taskmap = null; * * if (!inner) * {//之计算 * taskmap = TaskMapDao.SelectTaskMap(task.UserID, condition.ID); * if (taskmap != null) * userCondition.Point = new TaskMapPoint { X = taskmap.X, Y = taskmap.Y }; * * userCondition._Condition.BattleData = condition.BattleData; * } * else * {//外部 * taskmap = TaskMapDao.SelectTaskMap(task.UserID, condition.ID); * if (taskmap!=null) * MutiPointFirstOne = new TaskMapPoint{X = taskmap.X,Y = taskmap.Y }; * } * } * * // 掉落数量 * _TaskConditionReward reward = _TaskConditionDao.SelectConditionReward(condition.ID); * if(reward!=null) * { * this.Value = condition.Value; * this.iV = iv; * if(inner) * { * this.rate = reward.Rate; * }else * { * userCondition._Condition.Des = * condition.Des.IndexOf("({X},{Y})", System.StringComparison.Ordinal) < 0 ? condition.Des : * condition.Des.Insert(condition.Des.IndexOf("({X},{Y})", System.StringComparison.Ordinal), String.Format(" {0}/{1} ", iV, Value)); * userCondition._Condition.Rate = reward.Rate; * * } * } * * //钻石 * if (!string.IsNullOrEmpty(condition.Des) && condition.Des.IndexOf("{Coin}", StringComparison.Ordinal) >= 0) * { * object o = ServerCache.GetUserPaymentCount(task.UserID); * if (o == null) * o = TaskDetectDao.GetPaymentAmount(task.UserID); * userCondition._Condition.Des = condition.Des.Replace("{Coin}", Convert.ToString(o)); * } * //用户昵称 * if (!string.IsNullOrEmpty(condition.Des) && condition.Des.IndexOf("{UserName}", StringComparison.Ordinal) >= 0) * { * User user = UserDao.Select(task.UserID); * * if(user!=null) * { * userCondition._Condition.Des = condition.Des.Replace("{UserName}", user.Name); * } * } * * if ( !inner) * { * task.Conditions.Add(userCondition); * } */ return(flag); }