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 }); } }
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 }); } }