public override void BuildPacket() { PushIntoStack(enchantPackNum); PushIntoStack(moShiNum); PushIntoStack(goldNum); PushIntoStack(generalArray.Length); foreach (var general in generalArray) { UserEnchantInfo[] enchantGeneralArray = new UserEnchantInfo[0]; UserItemInfo useritem = EnchantHelper.GetGeneralWeapon(general.UserID, general.GeneralID); ItemBaseInfo itemInfo = null; if (useritem != null) { itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(useritem.ItemID); openNum = EnchantHelper.EnchantOpenGridNum(useritem.ItemLv); if (package != null) { enchantGeneralArray = package.EnchantPackage.FindAll(m => m.UserItemID == useritem.UserItemID).ToArray(); } } DataStruct dsItem = new DataStruct(); dsItem.PushIntoStack(general.GeneralID); dsItem.PushIntoStack(general.GeneralName.ToNotNullString()); dsItem.PushIntoStack((short)general.CareerID); dsItem.PushIntoStack(useritem == null ? string.Empty : useritem.UserItemID.ToNotNullString()); dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemName.ToNotNullString()); dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.HeadID.ToNotNullString()); dsItem.PushIntoStack((short)openNum); dsItem.PushIntoStack(enchantGeneralArray.Length); foreach (var enchant in enchantGeneralArray) { EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(enchant.EnchantID); DataStruct dsItem1 = new DataStruct(); dsItem1.PushIntoStack((short)enchant.Position); dsItem1.PushIntoStack(enchant.UserEnchantID.ToNotNullString()); dsItem1.PushIntoStack(enchantInfo == null ? string.Empty : enchantInfo.EnchantName.ToNotNullString()); dsItem1.PushIntoStack(enchantInfo == null ? string.Empty : enchantInfo.HeadID.ToNotNullString()); dsItem1.PushIntoStack((short)enchant.EnchantLv); dsItem1.PushIntoStack(enchantInfo == null ? (short)0 : (short)enchantInfo.ColorType); dsItem.PushIntoStack(dsItem1); } PushIntoStack(dsItem); } this.PushIntoStack(pageCount); this.PushIntoStack(enchantPackageArray.Length); foreach (var enchant in enchantPackageArray) { EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(enchant.EnchantID); DataStruct dsItem = new DataStruct(); dsItem.PushIntoStack(enchant.UserEnchantID.ToNotNullString()); dsItem.PushIntoStack(enchantInfo == null ? string.Empty : enchantInfo.EnchantName.ToNotNullString()); dsItem.PushIntoStack(enchantInfo == null ? string.Empty : enchantInfo.HeadID.ToNotNullString()); dsItem.PushIntoStack((short)enchant.EnchantLv); dsItem.PushIntoStack(enchantInfo == null ? (short)0 : (short)enchantInfo.ColorType); PushIntoStack(dsItem); } this.PushIntoStack(mosaicList.Length); foreach (var mosaic in mosaicList) { DataStruct dsItem = new DataStruct(); dsItem.PushIntoStack((short)mosaic.Position); dsItem.PushIntoStack(mosaic.MosaicColor.ToNotNullString()); dsItem.PushIntoStack((short)mosaic.DemandLv); this.PushIntoStack(dsItem); } }
public override bool TakeAction() { var syntheList = new CacheList <SynthesisInfo>(); var package = UserEnchant.Get(ContextUser.UserID); if (ops == 1) { UserEnchantInfo userEnchantinfo1 = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID1); UserEnchantInfo userEnchantinfo2 = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID2); if (userEnchantinfo1 == null || userEnchantinfo2 == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_EnchantNotEnough; return(false); } if (userEnchantinfo1.EnchantLv >= GameConfigSet.MaxEnchantLv) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_OutMaxEnchantLv; return(false); } int entExprience1 = 0; int entExprience2 = 0; EnchantInfo enchant1 = new ConfigCacheSet <EnchantInfo>().FindKey(userEnchantinfo1.EnchantID); EnchantInfo enchant2 = new ConfigCacheSet <EnchantInfo>().FindKey(userEnchantinfo2.EnchantID); if (enchant1 != null && enchant2 != null) { entExprience1 = enchant1.Experience; entExprience2 = enchant2.Experience; if (userEnchantinfo1.EnchantLv > userEnchantinfo2.EnchantLv || (userEnchantinfo1.EnchantLv == userEnchantinfo2.EnchantLv && userEnchantinfo1.CurrExprience >= userEnchantinfo2.CurrExprience)) { UpdateEnchant(userEnchantID1, userEnchantID2, entExprience2); syntheList.Add(new SynthesisInfo() { DemandID = userEnchantinfo2.EnchantID, Num = userEnchantinfo2.CurrExprience }); UserLogHelper.AppenEnchantLog(ContextUser.UserID, 4, userEnchantinfo1, syntheList); } else { UpdateEnchant(userEnchantID2, userEnchantID1, entExprience1); syntheList.Add(new SynthesisInfo() { DemandID = userEnchantinfo1.EnchantID, Num = userEnchantinfo1.CurrExprience }); UserLogHelper.AppenEnchantLog(ContextUser.UserID, 4, userEnchantinfo2, syntheList); } } } else if (ops == 2) { int experience = 0; var enchantArray = package.EnchantPackage.FindAll(m => string.IsNullOrEmpty(m.UserItemID)); if (enchantArray.Count == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_EnchantNotEnough; return(false); } if (enchantArray.Count == 1) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_EnchantNumNotEnough; return(false); } enchantArray.QuickSort((x, y) => { int result = 0; if (x == null && y == null) { return(0); } if (x != null && y == null) { return(1); } if (x == null) { return(-1); } result = y.EnchantLv.CompareTo(x.EnchantLv); if (result == 0) { result = y.CurrExprience.CompareTo(x.CurrExprience); } return(result); }); UserEnchantInfo uEnchantInfo = package.EnchantPackage.Find(m => m.UserEnchantID == enchantArray[0].UserEnchantID); if (uEnchantInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1262_EnchantSynthesisNotEnough; return(false); } EnchantLvInfo enchantLvInfo = new ConfigCacheSet <EnchantLvInfo>().FindKey(uEnchantInfo.EnchantID, GameConfigSet.MaxEnchantLv); int maxExprience = enchantLvInfo == null ? 0 : enchantLvInfo.Experience; foreach (var info in enchantArray) { EnchantInfo enchantInfo = new ConfigCacheSet <EnchantInfo>().FindKey(info.EnchantID); if (enchantInfo != null) { experience = enchantInfo.Experience; } if (uEnchantInfo.UserEnchantID != info.UserEnchantID) { if (uEnchantInfo.CurrExprience >= maxExprience) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_OutMaxEnchantLv; return(false); } syntheList.Add(new SynthesisInfo() { DemandID = info.EnchantID, Num = info.CurrExprience }); UpdateEnchant(uEnchantInfo.UserEnchantID, info.UserEnchantID, experience); } } UserLogHelper.AppenEnchantLog(ContextUser.UserID, 4, uEnchantInfo, syntheList); } return(true); }