My buddy wanted me to write him a fishbot he can modify using AutoIt (why, I honestly do not know), so I set out to do so. Used to use AutoIt way back when, so getting back into the hang of it wasn't too hard.
I really, really disliked the way NomadMemory.au3 was laid out and how it was used, so I wrote my own memory-manipulation UDF, naming it (of course!) BlackMagicAU3, which hurts me because it's nothing even close to what my C# class library is.
I also dislike doing things half-assed, so instead of hard-coding the functions I was going to use to determine if something was a fishing bobber, if it was my fishing bobber, and when it splashed, I split it up into a WoWConstants.au3 (for all the constants) and WoWAmeliorator.au3 (for all the functions... to ameliorate is to make better or more bearable, which is exactly what AutoIt is NOT, so I found the name ironic/funny).
Anyway, here's the test-script, a simple object dumper, that I wrote today, along with the other three script files, courtesy of pastebin.com. Hopefully someone will be able to make some use of these. I offer these as-is, with no promises of support or troubleshooting or help of any kind. If you don't know what to do with these, tough; learn.
BlackMagicAU3.au3
WoWConstants.au3
WoWAmeliorator.au3
WoWObjectDumper.au3
Caveats:
1. Due to the way that AutoIt handles 64-bit Integers internally, it does not read them from memory and/or display them in a fashion conducive to, oh, I don't know, COMMON SENSE. If you want to really use the full 64-bit GUIDs of objects, you'll need to read both 32-bit high- and low-words and then combine them in a way that doesn't make AutoIt freak the **** out. I was too lazy to figure this out because it's stupid. Just stupid.
2. The BlackMagicAU3.au3 script file was pretty much just thrown together. I spent time on _BMReadRawMemory() and _BMReadMemory, but the rest of it is pretty much typed without any error checking or testing, other than making sure it compiles. I know that _BMReadUInt, _BMReadInt, _BMReadASCIIString, and the open/initialization/close/destroy functions work, as well as _BMWriteUInt, but everything else is un-tested and may or may not work. Your mileage may vary. I didn't document anything that I consider common sense.
3. AutoIt is slow as ****. There, I said it. It's also stupid.
4. You'll need SciTE4AU3 or a similar text editor to register the ConsoleWrite output; SciTE4AU3 is available on the autoitscript.com webpage, under AutoIt3 Downloads.
Have fun.
Credits out to Cypher and anyone else who posted in the 3.1.0 General Info thread. I used quite a few addresses from there that I couldn't be assed to find myself for a project as stupid as this one, so thank you all for your support of this community.