コード例 #1
0
        public static void VendorBuyReply(NetState state, CircularBufferReader reader)
        {
            var vendor = World.FindMobile(reader.ReadUInt32());

            if (vendor == null)
            {
                return;
            }

            var flag = reader.ReadByte();

            if (!vendor.Deleted && Utility.RangeCheck(vendor.Location, state.Mobile.Location, 10) && flag == 0x02)
            {
                var msgSize = reader.Remaining;

                if (msgSize / 7 > 100)
                {
                    return;
                }

                var buyList = new List <BuyItemResponse>(msgSize / 7);
                while (msgSize > 0)
                {
                    var    layer  = reader.ReadByte();
                    Serial serial = reader.ReadUInt32();
                    int    amount = reader.ReadInt16();

                    buyList.Add(new BuyItemResponse(serial, amount));
                    msgSize -= 7;
                }

                if (buyList.Count <= 0 || (vendor as IVendor)?.OnBuyItems(state.Mobile, buyList) != true)
                {
                    return;
                }
            }

            state.SendEndVendorBuy(vendor.Serial);
        }