コード例 #1
0
        public void RandomShopRollHandler(GameSession session, CRandomShopRollingStartReqMessage message)
        {
            var shop = GameServer.Instance.ResourceCache.GetShop();

            session.Send(new SRandomShopItemInfoAckMessage
            {
                Item = new RandomShopItemDto()
            });
            //session.Send(new SRandomShopItemInfoAckMessage
            //{
            //    Item = new RandomShopItemDto
            //    {
            //        Unk1 = 2000001,
            //        Value = 2000001,
            //        CurrentWeapon = 2000001,
            //        Unk4 = 2000001,
            //        Unk5 = 2000001,
            //        Unk6 = 0,
            //    }
            //});
        }
コード例 #2
0
        public void RandomShopRollHandler(GameSession session, CRandomShopRollingStartReqMessage message)
        {
            var shop     = GameServer.Instance.ResourceCache.GetShop();
            var itemList = shop.RandomShop;

            if (itemList.Count == 0)
            {
                session.SendAsync(new SRandomShopItemInfoAckMessage
                {
                    Item = new RandomShopItemDto
                    {
                        Unk1       = (uint)(message.IsWeapon ? 1 : 0),
                        ItemNumber = 0,
                        Effect     = 0,
                        PeriodType = 0,
                        Period     = 0
                    }
                });
                return;
            }

            var effectList = shop.Effects;
            var plr        = session.Player;
            var rand       = new Random();

            Shop.ShopItemInfo item = null;

            var PEN = message.IsWeapon ? 3000 : 800;

            if (plr.RandomShop[message.IsWeapon ? 1 : 0] == null)
            {
                plr.RandomShop[message.IsWeapon ? 1 : 0] = new RandomShopInfo();
            }

            var rnd = plr.RandomShop[message.IsWeapon ? 1 : 0];

            if (plr.PEN < PEN)
            {
                session.SendAsync(new SRandomShopItemInfoAckMessage
                {
                    Item = new RandomShopItemDto()
                });
            }

            plr.PEN -= (uint)PEN;

            session.SendAsync(new SRefreshCashInfoAckMessage {
                PEN = plr.PEN, AP = plr.AP
            });

roll:
            if (message.StopItem == 0)
            {
                ItemCategory cat;

                if (message.IsWeapon)
                {
                    cat = ItemCategory.Weapon;
                }
                else
                {
                    cat = ItemCategory.Costume;
                }

                var bag = (from it in itemList
                           where it.ShopItem.ItemNumber.Category == cat
                           select it).ToList();

                item     = bag.ElementAt(rand.Next(bag.Count));
                rnd.Item = item.ShopItem.ItemNumber;
            }
            else
            {
                item = itemList.FirstOrDefault(x => x.ShopItem.ItemNumber == rnd.Item);
            }

            if (item == null)
            {
                goto roll;
            }

            var prices = item.PriceGroup.Prices;
            var price  = prices.ElementAt(rand.Next(prices.Count));

            if (message.StopEffect == 0)
            {
                var effects = item.EffectGroup.Effects;
                rnd.Effect = effects.ElementAt(rand.Next(effects.Count)).Effect;
            }

            rnd.PriceType  = item.PriceGroup.PriceType;
            rnd.PeriodType = price.PeriodType;
            rnd.Period     = price.Period;

            session.SendAsync(new SRandomShopItemInfoAckMessage
            {
                Item = new RandomShopItemDto
                {
                    Unk1       = (uint)(message.IsWeapon ? 1 : 0),
                    ItemNumber = rnd.Item,
                    Effect     = rnd.Effect,
                    PeriodType = rnd.PeriodType,
                    Period     = rnd.Period
                }
            });
        }