public static mw.AchieveConfig GetNewConfigAchieve(mw.Enums.TaskType type) { if (spareAchieveIds.Count == 0) { CErrMgr.SetLastErrMsg(EErrType.ERR_ACTIVITY_ACHIEVE_ID_MAX); return(null); } mw.AchieveConfig config = new mw.AchieveConfig(); for (int i = MinAchieveID; i <= MaxAchieveID; ++i) { uint id = CUtils.MakeLong((ushort)type, (ushort)i); if (spareAchieveIds.Contains(id)) { config.id = i; config.type = type; break; } } AddAchieveNode(config); return(config); }
private static bool DoAddQuest(int activiytId, List <STQuestInfo> quests, ref List <mw.AchieveConfig> listAchieve, ref List <mw.RewardConfig> listReward) { for (int i = 0; i < quests.Count; ++i) { mw.Enums.TaskType taskType = (mw.Enums.TaskType)quests[i].type; mw.AchieveConfig configAchieve = GMTActivityMananger.GetNewConfigAchieve(taskType); if (null == configAchieve) { return(false); } configAchieve.activity = activiytId; configAchieve.taskFlag = (quests[i].overlap) ? 1 : 0; configAchieve.opt_type_1 = quests[i].type; configAchieve.opt_val_1_a = quests[i].count_a; configAchieve.opt_val_1_b = quests[i].count_b; configAchieve.opt_val_1_c = quests[i].count_c; if (quests[i].count_a < 1 || quests[i].count_a > 9999 || quests[i].count_b < 0 || quests[i].count_b > 9999 || quests[i].count_c < 0 || quests[i].count_c > 9999 ) { CErrMgr.SetLastErrMsg(EErrType.ERR_ACTIVITY_ACHIEVE_REQUEST_COUNT); return(false); } if (quests[i].rewards.Count == 0 || quests[i].rewards.Count > 4) { CErrMgr.SetLastErrMsg(EErrType.ERR_ACTIVITY_REWARD_COUNT); return(false); } mw.RewardConfig configReward = null; bool ret = MakeRewardConfigWithRewardInfos(quests[i].rewards, out configReward); if (null != configReward) { listReward.Add(configReward); } if (!ret) { return(false); } configAchieve.reward = configReward.id; int taskDescTextId = 0; if (!string.IsNullOrEmpty(quests[i].desc)) { taskDescTextId = TextManager.CreateText(); TextManager.SetText(taskDescTextId, quests[i].desc); } // 这里贼乱, name 是活动标题, txt是活动内容, desc 是活动任务描述 configAchieve.desc = taskDescTextId; listAchieve.Add(configAchieve); } return(true); }