예제 #1
0
        public void ShopUpdateCheckHandler(IIOService service, GameSession session, CNewShopUpdateCheckReqMessage message)
        {
            var shop    = GameServer.Instance.ResourceCache.GetShop();
            var version = shop.Version;

            session.Send(new SNewShopUpdateCheckAckMessage
            {
                Date01 = version,
                Date02 = version,
                Date03 = version,
                Date04 = version,
                Unk    = 0
            });
            //session.Send(new SRandomShopInfoAckMessage
            //{
            //    Info = new RandomShopDto
            //    {
            //        ItemNumbers = new List<ItemNumber> { 2000001, 2000002, 2000003 },
            //        Effects = new List<uint> { 0, 0, 0 },
            //        Colors = new List<uint> { 2, 0, 0 },
            //        PeriodTypes = new List<ItemPeriodType> { ItemPeriodType.Hours, ItemPeriodType.Hours, ItemPeriodType.Hours },
            //        Periods = new List<ushort> { 2, 4, 10 },
            //        Unk6 = 10000,
            //    }
            //});

            if (message.Date01 == version &&
                message.Date02 == version &&
                message.Date03 == version &&
                message.Date04 == version)
            {
                return;
            }


            #region NewShopPrice

            using (var w = new BinaryWriter(new PooledMemoryStream(service.ArrayPool)))
            {
                w.Serialize(shop.Prices.Values.ToArray());

                session.Send(new SNewShopUpdateInfoAckMessage
                {
                    Type = ShopResourceType.NewShopPrice,
                    Data = w.ToArray(),
                    Date = version
                });
            }

            #endregion

            #region NewShopEffect

            using (var w = new BinaryWriter(new PooledMemoryStream(service.ArrayPool)))
            {
                w.Serialize(shop.Effects.Values.ToArray());

                session.Send(new SNewShopUpdateInfoAckMessage
                {
                    Type = ShopResourceType.NewShopEffect,
                    Data = w.ToArray(),
                    Date = version
                });
            }

            #endregion

            #region NewShopItem

            using (var w = new BinaryWriter(new PooledMemoryStream(service.ArrayPool)))
            {
                w.Serialize(shop.Items.Values.ToArray());

                session.Send(new SNewShopUpdateInfoAckMessage
                {
                    Type = ShopResourceType.NewShopItem,
                    Data = w.ToArray(),
                    Date = version
                });
            }

            #endregion

            // ToDo
            using (var w = new BinaryWriter(new PooledMemoryStream(service.ArrayPool)))
            {
                w.Write(0);

                session.Send(new SNewShopUpdateInfoAckMessage
                {
                    Type = ShopResourceType.NewShopUniqueItem,
                    Data = w.ToArray(),
                    Date = version
                });
            }

            using (var w = new BinaryWriter(new PooledMemoryStream(service.ArrayPool)))
            {
                w.Write(new byte[200]);

                session.Send(new SNewShopUpdateInfoAckMessage
                {
                    Type = (ShopResourceType)16,
                    Data = w.ToArray(),
                    Date = version
                });
            }
        }
예제 #2
0
        public void ShopUpdateCheckHandler(GameSession session, CNewShopUpdateCheckReqMessage message)
        {
            var shop    = GameServer.Instance.ResourceCache.GetShop();
            var version = shop.Version;

            session.SendAsync(new SNewShopUpdateCheckAckMessage
            {
                Date01 = version,
                Date02 = version,
                Date03 = version,
                Date04 = version,
                Unk    = 0
            });

            if (message.Date01 == version &&
                message.Date02 == version &&
                message.Date03 == version &&
                message.Date04 == version)
            {
                return;
            }

            var itemList = shop.RandomShop;

            if (itemList.Count > 0)
            {
                var RSItemNumbers = itemList.Select(x => x.ShopItem.ItemNumber).ToArray();
                var RSEffects     = (from ef in GameServer.Instance.ResourceCache.GetEffects()
                                     where ef.Value.Pumbi_star > 0
                                     select ef.Value.Id).ToArray();

                session.SendAsync(new SRandomShopInfoAckMessage
                {
                    Info = new RandomShopDto
                    {
                        ItemNumbers = RSItemNumbers,
                        Effects     = RSEffects,
                        Colors      = (new List <uint> {
                            0
                        }).ToArray(),
                        PeriodTypes = (new List <ItemPeriodType> {
                            ItemPeriodType.Hours
                        }).ToArray(),
                        Periods     = (new List <ushort> {
                            1, 3, 5, 7, 10
                        }).ToArray(),
                        Unk6        = 10000
                    }
                });
            }

            #region NewShopPrice

            using (var w = new BinaryWriter(new MemoryStream()))
            {
                w.Serialize(shop.Prices.Values.ToArray());

                session.SendAsync(new SNewShopUpdateInfoAckMessage
                {
                    Type = ShopResourceType.NewShopPrice,
                    Data = w.ToArray(),
                    Date = version
                });
            }

            #endregion

            #region NewShopEffect

            using (var w = new BinaryWriter(new MemoryStream()))
            {
                w.Serialize(shop.Effects.Values.ToArray());

                session.SendAsync(new SNewShopUpdateInfoAckMessage
                {
                    Type = ShopResourceType.NewShopEffect,
                    Data = w.ToArray(),
                    Date = version
                });
            }

            #endregion

            #region NewShopItem

            using (var w = new BinaryWriter(new MemoryStream()))
            {
                w.Serialize(shop.Items.Values.ToArray());

                session.SendAsync(new SNewShopUpdateInfoAckMessage
                {
                    Type = ShopResourceType.NewShopItem,
                    Data = w.ToArray(),
                    Date = version
                });
            }

            #endregion

            // ToDo
            using (var w = new BinaryWriter(new MemoryStream()))
            {
                w.Write(0);

                session.SendAsync(new SNewShopUpdateInfoAckMessage
                {
                    Type = ShopResourceType.NewShopUniqueItem,
                    Data = w.ToArray(),
                    Date = version
                });
            }

            using (var w = new BinaryWriter(new MemoryStream()))
            {
                w.Write(new byte[200]);

                session.SendAsync(new SNewShopUpdateInfoAckMessage
                {
                    Type = (ShopResourceType)16,
                    Data = w.ToArray(),
                    Date = version
                });
            }
        }