Example #1
0
 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);
 }
Example #2
0
 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);
 }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }
Example #5
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);
        }
Example #6
0
        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);
        }
Example #7
0
 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);
 }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
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);
        }
Example #12
0
        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);
        }
Example #13
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);
        }