Hi buddy,
Before anyone reads this, I would not like to see more PMs show up about Alcadia and Justac. You have material here and you can work with it.
You can get it like this, assuming you have at least some idea of how the client works.
The key thing here is that you know what the pseudo 'GetModule' function is. It simply returns a pointer to another module inside the class. It's kind of a funny little module thingy going on in the client and in the server.
So to get the bar interface pointer, you get the AgcmUIMain class, like: GetModule(_this, "AgcmUIMain").
From there you have your incorrectly named variable 'LocalBar'.
Now, to get the actual return value and find the GetModule function in a client, from an external program, without modifying the game state?
Here's how.
To start, this is a pattern which will always give you the correct GetModule function in a client.
\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\x8b\xCC\x CC\xCC\x8b\xCC\x8b\xCC\x8b\xCC\xe8\xCC\xCC\xCC\xCC \x8d\xa4\x24\x00\x00\x00\x00
Now, the function definition for it is typedef void* (__thiscall *tGetModule)(void* this, char* module);
Ideally, you never want the function to have it's first 'this' parameter as null, you'll just crash.
So to retrieve this parameter on any client, you can use a pattern that just so happens to be posted here.
\x8b\x0d\xCC\xCC\xCC\xCC\x68\xCC\xCC\xCC\xCC\xe8\x CC\xCC\xCC\xCC\x85\xc0\x75\xCC\x5e\x59\xC2\x04\x00 \xd9
At +2 read an int to get the 'this' parameter.
As for execution of the function... well... there's plenty of ways. You can check QueueUserAPC or something.
You might also want the current bar number (or in Episode 8, how many bars do you actually have open?)
So. You can get it dynamically, with a pattern which just happens to be posted under this text. (Not tested, I just guess it still works)
\x89\x86\xCC\xCC\xCC\xCC\xe8\xCC\xCC\xCC\xCC\x8b\x 86\xCC\xCC\xCC\xCC\x83\xe8
At +2 you read an int and you get your offset.