public static bool CreateItemBox(int DateId, List <ItemInfo> itemInfos, ref int gold, ref int point, ref int giftToken, ref int gp) { List <ItemBoxInfo> FiltInfos = new List <ItemBoxInfo>(); List <ItemBoxInfo> unFiltInfos = ItemBoxMgr.FindItemBox(DateId); bool result; if (unFiltInfos == null) { result = false; } else { FiltInfos = ( from s in unFiltInfos where s.IsSelect select s).ToList <ItemBoxInfo>(); int dropItemCount = 1; int maxRound = 0; foreach (ItemBoxInfo boxInfo in unFiltInfos) { if (!boxInfo.IsSelect && maxRound < boxInfo.Random) { maxRound = boxInfo.Random; } } maxRound = ItemBoxMgr.random.Next(maxRound); List <ItemBoxInfo> RoundInfos = ( from s in unFiltInfos where !s.IsSelect && s.Random >= maxRound select s).ToList <ItemBoxInfo>(); int maxItems = RoundInfos.Count <ItemBoxInfo>(); if (maxItems > 0) { dropItemCount = ((dropItemCount > maxItems) ? maxItems : dropItemCount); int[] randomArray = ItemBoxMgr.GetRandomUnrepeatArray(0, maxItems - 1, dropItemCount); int[] array = randomArray; for (int j = 0; j < array.Length; j++) { int i = array[j]; ItemBoxInfo item = RoundInfos[i]; if (FiltInfos == null) { FiltInfos = new List <ItemBoxInfo>(); } FiltInfos.Add(item); } } foreach (ItemBoxInfo info in FiltInfos) { if (info == null) { result = false; return(result); } int templateId = info.TemplateId; if (templateId <= -200) { if (templateId == -300) { giftToken += info.ItemCount; continue; } if (templateId == -200) { point += info.ItemCount; continue; } } else { if (templateId == -100) { gold += info.ItemCount; continue; } if (templateId == 11107) { gp += info.ItemCount; continue; } } ItemTemplateInfo temp = ItemMgr.FindItemTemplate(info.TemplateId); ItemInfo item2 = ItemInfo.CreateFromTemplate(temp, info.ItemCount, 101); if (item2 != null) { item2.IsBinds = info.IsBind; item2.ValidDate = info.ItemValid; item2.StrengthenLevel = info.StrengthenLevel; item2.AttackCompose = info.AttackCompose; item2.DefendCompose = info.DefendCompose; item2.AgilityCompose = info.AgilityCompose; item2.LuckCompose = info.LuckCompose; item2.IsTips = info.IsTips; item2.IsLogs = info.IsLogs; if (itemInfos == null) { itemInfos = new List <ItemInfo>(); } itemInfos.Add(item2); } } result = true; } return(result); }
public static bool CreateItemBox(int DateId, List <ItemInfo> itemInfos, ref int gold, ref int point, ref int giftToken, ref int medal) { List <ItemBoxInfo> list = new List <ItemBoxInfo>(); List <ItemBoxInfo> list2 = ItemBoxMgr.FindItemBox(DateId); if (list2 == null) { return(false); } list = ( from s in list2 where s.IsSelect select s).ToList <ItemBoxInfo>(); int num = 1; int maxRound = 0; foreach (ItemBoxInfo current in list2) { if (!current.IsSelect || maxRound >= current.Random) { maxRound = current.Random; } } maxRound = ItemBoxMgr.random.Next(maxRound); List <ItemBoxInfo> list3 = ( from s in list2 where !s.IsSelect && s.Random >= maxRound select s).ToList <ItemBoxInfo>(); int num2 = list3.Count <ItemBoxInfo>(); if (num2 > 0) { num = ((num > num2) ? num2 : num); int[] randomUnrepeatArray = ItemBoxMgr.GetRandomUnrepeatArray(0, num2 - 1, num); int[] array = randomUnrepeatArray; for (int i = 0; i < array.Length; i++) { int index = array[i]; ItemBoxInfo item = list3[index]; if (list == null) { list = new List <ItemBoxInfo>(); } list.Add(item); } } foreach (ItemBoxInfo current2 in list) { if (current2 == null) { return(false); } int templateId = current2.TemplateId; if (templateId <= -800) { if (templateId <= -1000) { if (templateId == -1100) { giftToken += current2.ItemCount; continue; } if (templateId == -1000) { continue; } } else { if (templateId == -900 || templateId == -800) { continue; } } } else { if (templateId <= -200) { if (templateId == -300) { medal += current2.ItemCount; continue; } if (templateId == -200) { point += current2.ItemCount; continue; } } else { if (templateId == -100) { gold += current2.ItemCount; continue; } if (templateId == 11408) { medal += current2.ItemCount; continue; } } } ItemTemplateInfo goods = ItemMgr.FindItemTemplate(current2.TemplateId); ItemInfo itemInfo = ItemInfo.CreateFromTemplate(goods, current2.ItemCount, 101); if (itemInfo != null) { itemInfo.Count = current2.ItemCount; itemInfo.IsBinds = current2.IsBind; itemInfo.ValidDate = current2.ItemValid; itemInfo.StrengthenLevel = current2.StrengthenLevel; itemInfo.AttackCompose = current2.AttackCompose; itemInfo.DefendCompose = current2.DefendCompose; itemInfo.AgilityCompose = current2.AgilityCompose; itemInfo.LuckCompose = current2.LuckCompose; if (itemInfos == null) { itemInfos = new List <ItemInfo>(); } itemInfos.Add(itemInfo); } } return(true); }
public static bool CreateItemBox(int DateId, List <SqlDataProvider.Data.ItemInfo> itemInfos, ref int gold, ref int point, ref int giftToken, ref int medal, ref int exp) { List <ItemBoxInfo> list1 = new List <ItemBoxInfo>(); List <ItemBoxInfo> itemBox = ItemBoxMgr.FindItemBox(DateId); if (itemBox == null) { return(false); } List <ItemBoxInfo> list2 = Enumerable.ToList <ItemBoxInfo>(Enumerable.Where <ItemBoxInfo>((IEnumerable <ItemBoxInfo>)itemBox, (Func <ItemBoxInfo, bool>)(s => s.IsSelect))); int num1 = 1; int maxRound = 0; if (list2.Count < itemBox.Count) { maxRound = ThreadSafeRandom.NextStatic(Enumerable.Max(Enumerable.Select <ItemBoxInfo, int>(Enumerable.Where <ItemBoxInfo>((IEnumerable <ItemBoxInfo>)itemBox, (Func <ItemBoxInfo, bool>)(s => !s.IsSelect)), (Func <ItemBoxInfo, int>)(s => s.Random)))); } List <ItemBoxInfo> list3 = Enumerable.ToList <ItemBoxInfo>(Enumerable.Where <ItemBoxInfo>((IEnumerable <ItemBoxInfo>)itemBox, (Func <ItemBoxInfo, bool>)(s => !s.IsSelect && s.Random >= maxRound))); int num2 = Enumerable.Count <ItemBoxInfo>((IEnumerable <ItemBoxInfo>)list3); if (num2 > 0) { int count = num1 > num2 ? num2 : num1; foreach (int index in ItemBoxMgr.GetRandomUnrepeatArray(0, num2 - 1, count)) { ItemBoxInfo itemBoxInfo = list3[index]; if (list2 == null) { list2 = new List <ItemBoxInfo>(); } list2.Add(itemBoxInfo); } } foreach (ItemBoxInfo itemBoxInfo in list2) { if (itemBoxInfo == null) { return(false); } int templateId = itemBoxInfo.TemplateId; if (templateId <= -900) { if (templateId <= -1100) { if (templateId == -1200 || templateId == -1100) { giftToken += itemBoxInfo.ItemCount; continue; } } else if (templateId == -1000 || templateId == -900) { continue; } } else if (templateId <= -300) { if (templateId != -800) { if (templateId == -300) { medal += itemBoxInfo.ItemCount; continue; } } else { continue; } } else if (templateId == -200) { point += itemBoxInfo.ItemCount; continue; } else if (templateId == -100) { gold += itemBoxInfo.ItemCount; continue; } else if (templateId == 11107) { exp += itemBoxInfo.ItemCount; continue; } SqlDataProvider.Data.ItemInfo fromTemplate = SqlDataProvider.Data.ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(itemBoxInfo.TemplateId), itemBoxInfo.ItemCount, 101); if (fromTemplate != null) { fromTemplate.Count = itemBoxInfo.ItemCount; fromTemplate.IsBinds = itemBoxInfo.IsBind; fromTemplate.ValidDate = itemBoxInfo.ItemValid; fromTemplate.StrengthenLevel = itemBoxInfo.StrengthenLevel; fromTemplate.AttackCompose = itemBoxInfo.AttackCompose; fromTemplate.DefendCompose = itemBoxInfo.DefendCompose; fromTemplate.AgilityCompose = itemBoxInfo.AgilityCompose; fromTemplate.LuckCompose = itemBoxInfo.LuckCompose; fromTemplate.IsTips = itemBoxInfo.IsTips != 0; fromTemplate.IsLogs = itemBoxInfo.IsLogs; if (itemInfos == null) { itemInfos = new List <SqlDataProvider.Data.ItemInfo>(); } itemInfos.Add(fromTemplate); } } return(true); }