Sigh.. It's all server sided, they just notify you when you're at full. It's like facebook. Even if you're not on the app on your phone at the moment, you still get notified if someone sends you a message. Same concept.
As for the packet editing with the random generated numbers, it's pretty fucked up.
Say you use a scroll to summon, it sends a packet labeled for example summon123 verified 758 to the server. Server takes it like summon123 verified 758, sends back summon758 verified 345. Your game takes in summon758 verified 345, sends back summon758 verified 345, server takes in summon758 verified 345, sends back summon345 verified 546, etc. That verified number is the random generated number. The fact it comes from the server as a random generated number makes it pretty much impossible to find the packet with your injected code to edit it before it's received in your game. So that's where I'm stuck.
The only way I can think of it, is if you take in their packet, you know what your packet has for a verified code when you send it back, but you edit it before you send it back, Would require you to have a proxy that will let the packet through when you're done with it. But another problem is that every packet has a random generated time attached to it at very small invervals that makes it valid. Go over the time limit, that packet is useless and isn't accepted. This is why people get the data failed error a lot of time, server is lagging from overload, packets being sent out expire before they come back, results in a data failed error.
Creating a fake packet to simulate what you want done doesn't work either cuz of the random generated number. So I'm at a loss for this one pretty much