/// <summary> /// 更新技能 /// </summary> /// <param name="manager"></param> /// <param name="transaction"></param> /// <returns></returns> public static MessageCode SetSkillMapByManagerLevel(NbManagerEntity manager, DbTransaction transaction) { var bag = SkillCardConvert.GetSkillBagWrap(manager.Idx); var skillList = SkillCardCache.Instance().GetSkillCardByManagerLevel(manager.Level); var unLearnedList = new List <DTOSkillSetItem>(); foreach (var entity in skillList) { if (!bag.SetList.ContainsKey(entity.SkillRoot)) { DTOSkillSetItem onItem = SkillCardConvert.GetNewSkillCardOn(entity); unLearnedList.Add(onItem); } } if (unLearnedList.Count > 0) { string onItemMap = FlatTextFormatter.ListToText(unLearnedList, SkillBagWrap.SPLITSect, SkillBagWrap.SPLITUnit); int errorCode = 0; NbManagerskillbagMgr.Add(manager.Idx, onItemMap, bag.RawBag.RowVersion, ref errorCode, transaction); if (errorCode != (int)MessageCode.Success) { return((MessageCode)errorCode); } } return(MessageCode.Success); }
static bool InnerDealMix(DTOSkillCardItem dst, out int newLevel) { newLevel = 0; if (null == dst || !SkillCardConvert.FillSkillCardConfig(dst, true)) { return(false); } newLevel = dst.Cfg.SkillLevel + 1; //int addExp = dst.Exp + 10; //if (!SkillCardCache.Instance().TryCheckSkillLevel(dst.Cfg.SkillClass, addExp, out newLevel)) // return false; //if (dst.Cfg.SkillLevel == newLevel) //{ // dst.Exp = addExp; // return true; //} string newCode = string.Empty; if (!SkillCardCache.Instance().TryGetSkillCode(dst.Cfg.SkillRoot, newLevel, out newCode)) { return(false); } // dst.Exp = addExp; dst.ItemCode = newCode; SkillCardConvert.FillSkillCardConfig(dst, true); return(true); }
List <DTOSkillCardItem> GetShowList(ICollection <DTOSkillCardItem> rawList) { foreach (var item in rawList) { SkillCardConvert.FillSkillCardConfig(item, false); } return(rawList.OrderByDescending(i => i.SkillClass).ThenByDescending(i => i.ItemCode).ThenByDescending(i => i.Exp).ToList()); }
public static RootResponse <DTOSkillSetView> GetSkillSetInfo(Guid mid) { var bag = SkillCardConvert.GetSkillBagWrap(mid); int managerLevel = (int)FrameConvert.GetWorthValue(mid, EnumWorthType.ManagerLevel); var data = new DTOSkillSetView(); data.MaxSetCells = GetMaxSkillCells(managerLevel); var form = MatchDataHelper.GetSolution(mid); if (null != form) { data.FormId = form.FormationId; data.PidStr = form.PlayerString.TrimEnd(); } data.SetList = bag.GetShowSet(); data.CntSetCells = bag.CntSetNum; return(ResponseHelper.CreateRoot <DTOSkillSetView>(data)); }
/// <summary> /// 技能升级 /// </summary> /// <param name="mid"></param> /// <param name="cid"></param> /// <returns></returns> public static RootResponse <DTOSkillSetView> UseSkillExp(Guid mid, string cid) { if (string.IsNullOrEmpty(cid) || !FrameUtil.CheckChar22Id(cid)) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillInvalidCid)); } //var package = ItemCore.Instance.GetPackage(mid, EnumTransactionType.MixSkillExpCard); //if (package == null) // return ResponseHelper.CreateRoot<DTOSkillSetView>(MessageCode.NbParameterError); //var item = package.GetByItemCode(310110); //if (item == null) // return ResponseHelper.CreateRoot<DTOSkillSetView>(MessageCode.SkillExpNotFind); var bag = SkillCardConvert.GetSkillBagWrap(mid); var onlib = bag.SetList; var dstItem = onlib.Values.FirstOrDefault(i => i.ItemId == cid); if (null == dstItem) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMissCard)); } string rawCode = dstItem.ItemCode; if (dstItem.Cfg.SkillLevel <= 0) { dstItem.Cfg.SkillLevel = 1; } if (dstItem.Cfg.SkillLevel >= SkillCardConfig.SKILLCardMaxCardLevel) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMixOverCardLevel)); } var config = SkillCardConfig.GetSkillUpgrade(dstItem.Cfg.SkillLevel + 1, dstItem.Cfg.SkillClass); if (config == null) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMissConfig)); } var manager = ManagerCore.Instance.GetManager(mid); if (manager == null) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.AdMissManager)); } if (manager.Coin < config.Coin) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.LackofCoin)); } int newLevel = 1; if (InnerDealMix(dstItem, out newLevel)) { string setSkills = string.Empty; if (dstItem.ItemCode != rawCode)//升级了 { setSkills = bag.SetSkillsTextFromLib(); MemcachedFactory.SolutionClient.Delete(mid); } var errCode = InnerSaveMixNew(manager, mid, bag, config.Coin, setSkills); if (errCode == MessageCode.Success) { var response = GetSkillSetInfo(mid); response.Data.Coin = manager.Coin; return(response); } } return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.FailUpdate)); }
public static RootResponse <DTOSkillSetView> SkillSet(Guid mid, string cids, bool hasTask) { if (string.IsNullOrEmpty(cids) || cids.Length >= 400) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillSetInvalidArgs)); } string[] skills = cids.Split(','); if (skills.Length != SkillCardConfig.SKILLCardMAXSkillCellSize) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillSetInvalidArgs)); } int managerLevel = (int)FrameConvert.GetWorthValue(mid, EnumWorthType.ManagerLevel); int maxCells = GetMaxSkillCells(managerLevel); var bag = SkillCardConvert.GetSkillBagWrap(mid); var onlib = new Dictionary <string, DTOSkillSetItem>(bag.SetList.Count); foreach (var item in bag.SetList.Values) { item.Index = 0; onlib[item.ItemId] = item; } int cntCells = 0; DTOSkillSetItem setItem = null; var dicChk = new Dictionary <string, byte>(skills.Length); for (int i = 0; i < skills.Length; ++i) { if (skills[i] == string.Empty) { continue; } if (!onlib.TryGetValue(skills[i], out setItem)) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMissCard)); } if (!SkillCardConvert.FillSkillCardConfig(setItem, false)) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMissConfig)); } if (dicChk.ContainsKey(setItem.Cfg.SkillRoot)) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillSetLimitRepeat)); } ++cntCells; setItem.Index = i + 1; dicChk[setItem.Cfg.SkillRoot] = 0; skills[i] = setItem.ItemCode; } if (cntCells > maxCells) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillSetLackofCells)); } string setSkills = string.Join(",", skills); string setMap = bag.SetMap; MemcachedFactory.SolutionClient.Delete(mid); int errorCode = 0; NbManagerskillbagMgr.Set(mid, setSkills, null, setMap, bag.RawBag.RowVersion, ref errorCode); if (errorCode != (int)MessageCode.Success) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(errorCode)); } var data = new DTOSkillSetView(); data.MaxSetCells = maxCells; data.CntSetCells = cntCells; data.SetList = bag.GetShowSet(); //if (hasTask) //{ data.PopMsg = TaskHandler.Instance.SkillSet(mid); //} //data.CardList = bag.GetShowBag(); return(ResponseHelper.CreateRoot <DTOSkillSetView>(data)); }