public static int[] GetRandomUnrepeatArray(int minValue, int maxValue, int count) { int[] numArray = new int[count]; for (int index1 = 0; index1 < count; ++index1) { int num1 = ThreadSafeRandom.NextStatic(minValue, maxValue + 1); int num2 = 0; for (int index2 = 0; index2 < index1; ++index2) { if (numArray[index2] == num1) { ++num2; } } if (num2 == 0) { numArray[index1] = num1; } else { --index1; } } return(numArray); }
public static int[] GetRandomUnrepeatArray(int minValue, int maxValue, int count) { int[] array = new int[count]; for (int i = 0; i < count; i++) { int num = ThreadSafeRandom.NextStatic(minValue, maxValue + 1); int num2 = 0; for (int j = 0; j < i; j++) { if (array[j] == num) { num2++; } } if (num2 == 0) { array[i] = num; } else { i--; } } return(array); }
public static List <TreasureDataInfo> GetTreasureData() { List <TreasureDataInfo> list1 = new List <TreasureDataInfo>(); List <TreasureAwardInfo> list2 = new List <TreasureAwardInfo>(); List <TreasureAwardInfo> treasureInfos = TreasureAwardMgr.GetTreasureInfos(); int num1 = 1; int maxRound = ThreadSafeRandom.NextStatic(Enumerable.Max(Enumerable.Select <TreasureAwardInfo, int>((IEnumerable <TreasureAwardInfo>)treasureInfos, (Func <TreasureAwardInfo, int>)(s => s.Random)))); List <TreasureAwardInfo> list3 = Enumerable.ToList <TreasureAwardInfo>(Enumerable.Where <TreasureAwardInfo>((IEnumerable <TreasureAwardInfo>)treasureInfos, (Func <TreasureAwardInfo, bool>)(s => s.Random >= maxRound))); int num2 = Enumerable.Count <TreasureAwardInfo>((IEnumerable <TreasureAwardInfo>)list3); if (num2 > 0) { int count = num1 > num2 ? num2 : num1; foreach (int index in TreasureAwardMgr.GetRandomUnrepeatArray(0, num2 - 1, count)) { TreasureAwardInfo treasureAwardInfo = list3[index]; list2.Add(treasureAwardInfo); } } foreach (TreasureAwardInfo treasureAwardInfo in list2) { list1.Add(new TreasureDataInfo() { ID = 0, UserID = 0, TemplateID = treasureAwardInfo.TemplateID, Count = treasureAwardInfo.Count, ValidDate = treasureAwardInfo.Validate, pos = -1, BeginDate = DateTime.Now, IsExit = true }); } return(list1); }
protected int MakeCriticalDamage(Living target, int baseDamage) { double lucky = m_owner.Lucky; //Random rd = new Random(); bool canHit = lucky * 75 / (800 + lucky) > ThreadSafeRandom.NextStatic(100); if (canHit) { return((int)((0.5 + lucky * 0.0003) * baseDamage)); } else { return(0); } }
public int HandlePacket(GameClient client, GSPacketIn packet) { PlayerInventory inventory = client.Player.GetInventory(eBageType.Store); PlayerInventory propBag = client.Player.PropBag; for (int i = 1; i < 5; i++) { if (inventory.GetItemAt(i) != null) { inventory.RemoveItemAt(i); } } int ItemRandom = ThreadSafeRandom.NextStatic(listItemRandom.Count); SqlDataProvider.Data.ItemInfo item = SqlDataProvider.Data.ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(listItemRandom[ItemRandom]), 1, 105); inventory.AddItemTo(item, 0); return(1); }
public static BaseSceneGame GetRandomGame(eGameMode type) { BaseSceneGame game = null; _locker.AcquireReaderLock(); try { int rand = ThreadSafeRandom.NextStatic(200); for (int i = rand; i < _games.Length + rand; i++) { BaseSceneGame g = _games[i % _games.Length]; if (g.GameState == eGameState.FREE && g.Count > 0 && g.Pwd == "" && g.Count + g.CloseTotal() < 8 && type == g.GameMode && g.GameClass != eGameClass.CONSORTIA) { game = g; break; } } //for (int i = 0; i < _games.Length; i++) //{ // BaseSceneGame g = _games[i]; // if (g.GameState == eGameState.FREE && g.Count > 0 && g.Pwd == "" && g.Count + g.CloseTotal() < 8 && type == g.GameMode // && g.GameClass != eGameClass.CONSORTIA) // { // game = g; // break; // } //} } finally { _locker.ReleaseReaderLock(); } return(game); }
public static bool CanChangeStyle(BaseRoom game, GSPacketIn pkg) { FightRateInfo[] allFightRateInfo = FightRateMgr.GetAllFightRateInfo(); try { FightRateInfo[] array = allFightRateInfo; for (int i = 0; i < array.Length; i++) { FightRateInfo fightRateInfo = array[i]; if (fightRateInfo.BeginDay.Year <= DateTime.Now.Year && DateTime.Now.Year <= fightRateInfo.EndDay.Year && fightRateInfo.BeginDay.DayOfYear <= DateTime.Now.DayOfYear && DateTime.Now.DayOfYear <= fightRateInfo.EndDay.DayOfYear && fightRateInfo.BeginTime.TimeOfDay <= DateTime.Now.TimeOfDay && DateTime.Now.TimeOfDay <= fightRateInfo.EndTime.TimeOfDay && ThreadSafeRandom.NextStatic(1000000) < fightRateInfo.Rate) { return(true); } } } catch { } pkg.WriteBoolean(false); return(false); }
public bool AddQuest(QuestInfo info, out string msg) { msg = ""; try { if (info == null) { msg = "Game.Server.Quests.NoQuest"; bool result = false; return(result); } if (info.TimeMode && DateTime.Now.CompareTo(info.StartDate) < 0) { msg = "Game.Server.Quests.NoTime"; } if (info.TimeMode && DateTime.Now.CompareTo(info.EndDate) > 0) { msg = "Game.Server.Quests.TimeOver"; } if (this.m_player.PlayerCharacter.Grade < info.NeedMinLevel) { msg = "Game.Server.Quests.LevelLow"; } if (this.m_player.PlayerCharacter.Grade > info.NeedMaxLevel) { msg = "Game.Server.Quests.LevelTop"; } if (info.PreQuestID != "0,") { string[] array = info.PreQuestID.Split(new char[] { ',' }); for (int i = 0; i < array.Length - 1; i++) { if (!this.IsQuestFinish(Convert.ToInt32(array[i]))) { msg = "Game.Server.Quests.NoFinish"; } } } } catch (Exception ex) { QuestInventory.log.Info(ex.InnerException); } if (info.IsOther == 1 && !this.m_player.PlayerCharacter.IsConsortia) { msg = "Game.Server.Quest.QuestInventory.HaveMarry"; } if (info.IsOther == 2 && !this.m_player.PlayerCharacter.IsMarried) { msg = "Game.Server.Quest.QuestInventory.HaveMarry"; } BaseQuest baseQuest = this.FindQuest(info.ID); if (baseQuest != null && baseQuest.Data.IsComplete) { msg = "Game.Server.Quests.Have"; } if (baseQuest != null && !baseQuest.Info.CanRepeat) { msg = "Game.Server.Quests.NoRepeat"; } if (baseQuest != null && DateTime.Now.CompareTo(baseQuest.Data.CompletedDate.Date.AddDays((double)baseQuest.Info.RepeatInterval)) < 0 && baseQuest.Data.RepeatFinish < 1) { msg = "Game.Server.Quests.Rest"; } BaseQuest baseQuest2 = this.m_player.QuestInventory.FindQuest(info.ID); if (baseQuest2 != null) { msg = "Game.Server.Quests.Have"; } if (msg == "") { QuestMgr.GetQuestCondiction(info); int rand = 1; if (ThreadSafeRandom.NextStatic(1000000) <= info.Rands) { rand = info.RandDouble; } this.BeginChanges(); if (baseQuest == null) { baseQuest = new BaseQuest(info, new QuestDataInfo()); this.AddQuest(baseQuest); baseQuest.Reset(this.m_player, rand); } else { baseQuest.Reset(this.m_player, rand); baseQuest.AddToPlayer(this.m_player); this.OnQuestsChanged(baseQuest); } this.CommitChanges(); this.SaveToDatabase(); return(true); } msg = LanguageMgr.GetTranslation(msg, new object[0]); return(false); }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); int num = (int)packet.ReadByte(); int num2 = packet.ReadInt(); int num3 = packet.ReadInt(); int num4 = packet.ReadInt(); int num5 = packet.ReadInt(); string translateId = "AuctionAddHandler.Fail"; num = 1; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); return(0); } if (num2 < 0 || (num3 != 0 && num3 < num2)) { return(0); } int num6 = 1; if (num != 0) { num6 = 1; num = 1; } int num7 = (int)((double)(num6 * num2) * 0.03 * (double)((num4 == 0) ? 1 : ((num4 == 1) ? 3 : 6))); num7 = ((num7 < 1) ? 1 : num7); ItemInfo itemAt = client.Player.GetItemAt(bagType, place); if (itemAt == null) { client.Player.SendMessage("Vật phẩm lạ không tìm thấy!!! Hack chăng???!!!"); return(0); } int num8 = itemAt.Count - num5; if (itemAt.Count < num5 || num5 < 0) { num5 = itemAt.Count; } if (num2 < 0) { translateId = "AuctionAddHandler.Msg1"; } else { if (num3 != 0 && num3 < num2) { translateId = "AuctionAddHandler.Msg2"; } else { if (num7 > client.Player.PlayerCharacter.Gold) { translateId = "AuctionAddHandler.Msg3"; } else { if (itemAt == null) { translateId = "AuctionAddHandler.Msg4"; } else { if (itemAt.IsBinds) { translateId = "AuctionAddHandler.Msg5"; } else { client.Player.SaveIntoDatabase(); AuctionInfo auctionInfo = new AuctionInfo(); auctionInfo.AuctioneerID = client.Player.PlayerCharacter.ID; auctionInfo.AuctioneerName = client.Player.PlayerCharacter.NickName; auctionInfo.BeginDate = DateTime.Now; auctionInfo.BuyerID = 0; auctionInfo.BuyerName = ""; auctionInfo.IsExist = true; auctionInfo.ItemID = itemAt.ItemID; auctionInfo.Mouthful = num3; auctionInfo.PayType = num; auctionInfo.Price = num2; auctionInfo.Rise = num2 / 10; auctionInfo.Rise = ((auctionInfo.Rise < 1) ? 1 : auctionInfo.Rise); auctionInfo.Name = itemAt.Template.Name; auctionInfo.Category = itemAt.Template.CategoryID; auctionInfo.ValidDate = ((num4 == 0) ? 8 : ((num4 == 1) ? 24 : 48)); auctionInfo.TemplateID = itemAt.TemplateID; auctionInfo.goodsCount = num5; auctionInfo.Random = ThreadSafeRandom.NextStatic(GameProperties.BeginAuction, GameProperties.EndAuction); using (PlayerBussiness playerBussiness = new PlayerBussiness()) { if (playerBussiness.AddAuction(auctionInfo)) { itemAt.Count = num5; client.Player.TakeOutItem(itemAt); if (num8 > 0) { client.Player.AddTemplate(itemAt, bagType, num8); } client.Player.SaveIntoDatabase(); client.Player.RemoveGold(num7); translateId = "AuctionAddHandler.Msg6"; client.Out.SendAuctionRefresh(auctionInfo, auctionInfo.AuctionID, true, itemAt); } } } } } } } client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(translateId, new object[0])); return(0); }
private static bool GetDropItems(eDropType type, int dropId, ref List <ItemInfo> itemInfos) { if (dropId == 0) { return(false); } try { int num = 1; List <DropItem> source = DropMgr.FindDropItem(dropId); int maxRound = ThreadSafeRandom.NextStatic(( from s in source select s.Random).Max()); List <DropItem> list = ( from s in source where s.Random >= maxRound select s).ToList <DropItem>(); int num2 = list.Count <DropItem>(); bool result; if (num2 == 0) { result = false; return(result); } num = ((num > num2) ? num2 : num); int[] randomUnrepeatArray = DropInventory.GetRandomUnrepeatArray(0, num2 - 1, num); int[] array = randomUnrepeatArray; for (int i = 0; i < array.Length; i++) { int index = array[i]; int count = ThreadSafeRandom.NextStatic(list[index].BeginData, list[index].EndData); ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(list[index].ItemId); ItemInfo itemInfo = ItemInfo.CreateFromTemplate(itemTemplateInfo, count, 101); if (itemInfo != null) { itemInfo.IsBinds = list[index].IsBind; itemInfo.ValidDate = list[index].ValueDate; if (itemInfos == null) { itemInfos = new List <ItemInfo>(); } if (DropInfoMgr.CanDrop(itemTemplateInfo.TemplateID)) { itemInfos.Add(itemInfo); } } } result = true; return(result); } catch (Exception ex) { if (DropInventory.log.IsErrorEnabled) { DropInventory.log.Error(string.Concat(new object[] { "Drop Error:", type, " @ ", ex })); } } return(false); }
public int HandlePacket(GameClient client, GSPacketIn packet) { new ProduceBussiness(); if (client.Lottery != -1) { client.Out.SendMessage(eMessageType.Normal, "Rương đang hoạt động!"); return(1); } int bageType = (int)packet.ReadByte(); int slot = packet.ReadInt(); int num = packet.ReadInt(); PlayerInventory inventory = client.Player.GetInventory((eBageType)bageType); inventory.GetItemAt(slot); if (inventory.FindFirstEmptySlot() == -1) { client.Out.SendMessage(eMessageType.Normal, "Rương đã đầy không thể mở thêm!"); return(1); } PlayerInventory propBag = client.Player.PropBag; ItemInfo itemByTemplateID = propBag.GetItemByTemplateID(0, 11456); new List <ItemInfo>(); StringBuilder stringBuilder = new StringBuilder(); List <ItemBoxInfo> list = ItemBoxMgr.FindItemBoxAward(num); int index = ThreadSafeRandom.NextStatic(list.Count); ItemMgr.FindItemTemplate(num); ItemInfo itemInfo = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(list[index].TemplateId), 1, 105); bool val = true; int num2 = num; string str; int result = 0; PlayerInventory playerInventory = null; if (itemInfo != null && itemInfo.TemplateID == 112019) { client.tempData = "start"; if (itemInfo.Count > 1) { itemInfo.Count--; playerInventory.UpdateItem(itemInfo); } else { playerInventory.RemoveItem(itemInfo); } GSPacketIn gSPacketIn = new GSPacketIn(29, client.Player.PlayerId); int[] array = LotteryOpenBoxHandler.listRandomitem[num]; for (int i = 0; i < array.Length; i++) { int num6 = array[i]; gSPacketIn.WriteInt(num6); gSPacketIn.WriteBoolean(false); gSPacketIn.WriteByte(1); gSPacketIn.WriteByte(1); } client.Out.SendTCP(gSPacketIn); result = 1; return(result); } if (num2 != 112047) { switch (num2) { case 112100: case 112101: break; default: str = itemInfo.Template.Name; goto IL_17F; } } str = client.Player.PlayerCharacter.NickName; itemInfo.BeginDate = DateTime.Now; itemInfo.ValidDate = 7; itemInfo.RemoveDate = DateTime.Now.AddDays(7.0); if (itemByTemplateID.Count > 4) { itemByTemplateID.Count -= 4; propBag.UpdateItem(itemByTemplateID); } else { propBag.RemoveItem(itemByTemplateID); } IL_17F: GSPacketIn pkg = new GSPacketIn(245, client.Player.PlayerId); pkg.WriteBoolean(val); pkg.WriteInt(1); pkg.WriteString(str); pkg.WriteInt(itemInfo.TemplateID); pkg.WriteInt(4); pkg.WriteBoolean(false); client.Out.SendTCP(pkg); inventory.AddItem(itemInfo); stringBuilder.Append(itemInfo.Template.Name); ItemInfo itemByTemplateID2 = client.Player.PropBag.GetItemByTemplateID(0, num); if (itemByTemplateID2.Count > 1) { itemByTemplateID2.Count--; client.Player.PropBag.UpdateItem(itemByTemplateID2); } else { client.Player.PropBag.RemoveItem(itemByTemplateID2); } client.Lottery = -1; if (stringBuilder != null) { client.Out.SendMessage(eMessageType.Normal, "Bạn nhận được " + stringBuilder.ToString()); } return(1); }
public int HandlePacket(GameClient client, GSPacketIn packet) { byte b = packet.ReadByte(); PlayerInventory inventory = client.Player.GetInventory(eBageType.BeadBag); string text = ""; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); return(0); } if (DateTime.Compare(client.Player.LastDrillUpTime.AddSeconds(2.0), DateTime.Now) > 0) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Quá nhiều thao tác!", new object[0])); return(1); } switch (b) { case 1: { int num = packet.ReadInt(); int num2 = packet.ReadInt(); int num3 = 10; if (num2 == -1) { num2 = inventory.FindFirstEmptySlot(); } if (num <= 12 && num >= 4 && BeadHandle.canEquip(num2, client.Player.PlayerCharacter.Grade, ref num3)) { client.Out.SendMessage(eMessageType.Normal, string.Format("Cấp {0} mở", num3)); return(0); } if (!inventory.MoveItem(num, num2, 1)) { Console.WriteLine("????User move bead error"); } client.Player.MainBag.UpdatePlayerProperties(); break; } case 2: { new List <int>(); ItemInfo itemAt = inventory.GetItemAt(31); if (itemAt == null) { client.Player.SendMessage("Vật phẩm lạ không tìm thấy!!! Hack chăng???!!!"); return(0); } int arg_504_0 = itemAt.Hole1; int num4 = packet.ReadInt(); int num5 = RuneMgr.MaxLv(); for (int i = 0; i < num4; i++) { int num6 = packet.ReadInt(); ItemInfo itemAt2 = inventory.GetItemAt(num6); RuneTemplateInfo runeTemplateInfo = RuneMgr.FindRuneTemplateID(itemAt.TemplateID); if (runeTemplateInfo == null) { inventory.RemoveItem(itemAt2); } else { if (itemAt2.Hole1 < itemAt.Hole1 && !itemAt2.IsUsed) { int hole = itemAt2.Hole2; int hole2 = itemAt.Hole2; int hole3 = itemAt.Hole1; int exp = hole + hole2; inventory.RemoveItemAt(num6); if (BeadHandle.CanUpLv(exp, hole3)) { itemAt.Hole2 += hole; itemAt.Hole1++; } else { itemAt.Hole2 += hole; } int nextTemplateID = runeTemplateInfo.NextTemplateID; RuneTemplateInfo runeTemplateInfo2 = RuneMgr.FindRuneTemplateID(nextTemplateID); if (itemAt.Hole1 == runeTemplateInfo2.BaseLevel) { ItemInfo itemInfo = new ItemInfo(ItemMgr.FindItemTemplate(nextTemplateID)); itemAt.TemplateID = nextTemplateID; itemInfo.Copy(itemAt); inventory.RemoveItemAt(31); inventory.AddItemTo(itemInfo, 31); } else { inventory.UpdateItem(itemAt); } if (itemAt.Hole1 == num5 + 1) { break; } } } } break; } case 3: { string[] array = GameProperties.OpenRunePackageMoney.Split(new char[] { '|' }); int num7 = packet.ReadInt(); packet.ReadBoolean(); int num8 = Convert.ToInt32(array[num7]); if (client.Player.PlayerCharacter.Money < num8) { client.Player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("DivorceApplyHandler.Msg1", new object[0])); return(1); } if (inventory.FindFirstEmptySlot() == -1) { client.Out.SendMessage(eMessageType.Normal, "Rương đã đầy không thể mở thêm!"); return(1); } List <RuneTemplateInfo> list = new List <RuneTemplateInfo>(); switch (num7) { case 1: list = RuneMgr.OpenPackageLv2(); break; case 2: list = RuneMgr.OpenPackageLv3(); break; case 3: list = RuneMgr.OpenPackageLv4(); break; default: list = RuneMgr.OpenPackageLv1(); break; } int index = ThreadSafeRandom.NextStatic(list.Count); ItemInfo itemInfo2 = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(list[index].TemplateID), 1, 105); inventory.AddItem(itemInfo2); client.Out.SendMessage(eMessageType.Normal, "Bạn nhận được " + RuneMgr.FindRuneTemplateID(itemInfo2.TemplateID).Name); client.Player.RemoveMoney(num8); int rand = BeadHandle.NextBeadIndex(client, num7); this.BeadIndexUpdate(client, num7); client.Out.SendRuneOpenPackage(client.Player, rand); break; } case 4: { int num = packet.ReadInt(); ItemInfo itemAt2 = inventory.GetItemAt(num); if (itemAt2.IsUsed) { itemAt2.IsUsed = false; } else { itemAt2.IsUsed = true; } inventory.UpdateItem(itemAt2); break; } case 5: { int num9 = packet.ReadInt(); int templateId = packet.ReadInt(); PlayerInventory inventory2 = client.Player.GetInventory(eBageType.PropBag); inventory2.GetItemByTemplateID(0, templateId); int itemCount = inventory2.GetItemCount(templateId); if (itemCount <= 0) { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("Mủi khoan không đủ!", new object[0])); } else { int num10 = BeadHandle.randomExp.Next(2, 6); text = LanguageMgr.GetTranslation("OpenHoleHandler.GetExp", new object[] { num10 }); UserDrillInfo userDrillInfo = client.Player.UserDrills[num9]; userDrillInfo.HoleExp += num10; if ((userDrillInfo.HoleExp >= GameProperties.HoleLevelUpExp(0) && userDrillInfo.HoleLv == 0) || (userDrillInfo.HoleExp >= GameProperties.HoleLevelUpExp(1) && userDrillInfo.HoleLv == 1) || (userDrillInfo.HoleExp >= GameProperties.HoleLevelUpExp(2) && userDrillInfo.HoleLv == 2) || (userDrillInfo.HoleExp >= GameProperties.HoleLevelUpExp(3) && userDrillInfo.HoleLv == 3) || (userDrillInfo.HoleExp >= GameProperties.HoleLevelUpExp(4) && userDrillInfo.HoleLv == 4)) { userDrillInfo.HoleLv++; userDrillInfo.HoleExp = 0; } client.Player.UpdateDrill(num9, userDrillInfo); using (PlayerBussiness playerBussiness = new PlayerBussiness()) { playerBussiness.UpdateUserDrillInfo(userDrillInfo); } } if (text != "") { client.Out.SendMessage(eMessageType.Normal, text); } client.Player.Out.SendPlayerDrill(client.Player.PlayerCharacter.ID, client.Player.UserDrills); inventory2.RemoveTemplate(templateId, 1); client.Player.LastDrillUpTime = DateTime.Now; break; } } inventory.SaveToDatabase(); return(0); }
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); }