When you buy items, you receive a
B034 response
Code:
[S -> C][B034]
[S -> C][B034]
01 // success
08 // item update type (8 == Buy, change to 6 to fake pickup)
00 // shop tab
00 // shop slot
01 // number of inventory slots used
37 // inventory slot
01 00 // amount bought
00 00 00 00 // recipientID? (0== self ?)
which you can intercept in your Agent Server's incoming packet stream.
Then you can choose to either
1. Block it from your client
or
2. Use by faking a pickup response, change the item movement type to "pickup", then send the changed packet to your client as a pickup packet instead.
Blocking is easier because you just filter it after sending the
7034 packet to buy an item.
The downside is that it will not update your client, so you will have to teleport to update your inventory.
Sending a fake packet is more difficult, but you will see the updated inventory right away.

(the amount must be
FakePickUp.WriteUInt16(Amount))