Help - Search - Members - Calendar
Full Version: The FFXI Chatlog, Reading
AC Tools Everything Macro > AC Tool Macros > Final Fantasy XI Online
Sirkivin
I'm currently the developer of a .NET based fishing bot called "Phish" (available at http://filexoom.com/files/2006/10/20/26226...shbot181500.zip for anyone who's interested)...

In order to implement some functionality, I'd like to harness the chatlog and the information it contains. Specifically, I'd like to be able to read from the last message posted in a reverse order until I find certain things. I'm wondering if brilliant developers have come up with an easy way of "indexing" (if that's the correct word?) the chat buffer.

What I do know is:

- The chat buffer begins at a fixed offset.
- The chat buffer stores fifty chat lines, then begins looping back on itself, over-writing old data.
- The individual chat lines are probably concatenated at a fixed-length in the buffer.

So we're dealing with something like
[ Chat Line 50 ]\0 [ Chat Line 1 ]\0 [ Chat Line 2]\0

With that said, I can only suspect that there's either a pointer or an integral offset someplace in memory that stores either the last item in the buffer, or the next available "slot".
Has anyone been able to harness this? Any pointers you can offer me?
segfault
I haven't actually checked whether the chat log is stored more like an array or linked list, but here's the memloc offset for the last chat line: 2DA435.

If you're gonna check, I suggest you start up art money, go the base address + offset, and start reading the memory there.
Sirkivin
Ok, first off, please read my initial post again. The (first two, at least) statements I made about the chat log appear to be fact.

The chat log is stored in a buffer large enough to hold fifty lines of chat. Once the fiftieth line is exhausted, it loops around to the beginning and starts over-writing old lines.

What I am seeking is a memloc that indicates where inside that buffer the game is writing to. The game must have some way of knowing where (a) the last chat line exists in memory and (b) the next segment of the chat buffer to write to.

P.S. Thanks for the memloc, but I'm not able to read any meaningful information at that offset. Is it supposed to be an address or a pointer?

::edit::

So, after some intimate screwing around with ArtMoney (in other words, a lot of headdesking), I've found an address that does exactly this, it indexes the last chunk of log buffer that was written to.

X = 1,2,3,4...50,1,2,3...

Unfortunately I haven't been able to find a pointer that works after a soft restart. Any of the gurus know the memloc for this?
sean1976
if you found it once then you should be able to track down it's pointer by finding it again and then running searches for the pointer
Sirkivin
*sigh*

... If it were that easy, I wouldn't be wasting people's time here.

With 50+ filtrations, I narrowed down 96 pointers that give the correct value. After a soft reset, they're all pooched. They're all static at 0 or 4.
rzn
You're making this way too hard on yourself.
Sirkivin
What do you recommend, then, Sir Rzn? I respect your advice; it's not failed me yet. I find an address (or several), I find a list of pointers to that address. Then I restart XI and they're all dead.
rzn
pointer to chat
+4 pointer to offset index //this is a list of line lenghts
+240 line count
+244 pointer to start of log
+256 endlog offset 2byte
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2010 Invision Power Services, Inc.