Detecting object ID's (NPC, items, etc.)

04/16/2015 07:14 FxwFran#1
Hello, I've been reading a little about ASM and AutoIt, but there's something I want to know and I can't find it anywhere (Maybe because I don't even know which words to use in order to google it).

Basically I want to code a mmo bot that can make your character move to a specific location, talk to the npc's and buy/sell things to them.

I can make a bot that changes memory addresses and perform certain tasks (Attack, rest) until an address changes, but I just don't know how to even start with things like selling items or talking to npc's.

What kind of language/program/something should I start learning in order to achieve it?
04/16/2015 22:48 _asm#2
Okay first of all AutoIT is a scripting language and despite the Memory / Inline Assembly 3rd-party classes that work fine with AutoIT, it's still not suitable!

I highly recommend you to learn the basics of Assembly language (Intel x86, maybe also Reverse Engineering) and search the coordinates using Cheat Engine -> Find a Pointer (There are a lot of tutorials try Google). After you've successfully managed to obtain the Pointer to the X,Y,Z coordinates and able to change them, head over to C++ (Visual Studio, Code Blocks, Qt... for the program).

Write a function pointer in order to change the X,Y,Z coords like that:

Code:
void set_position(std::float_t x_pos, std::float_t y_pos)
{
    *(std::float_t*)(*(DWORD*)(*(DWORD*)this->m_classptr + 0xC) + 0x638) = x_pos;
    *(std::float_t*)(*(DWORD*)(*(DWORD*)this->m_classptr + 0xC) + 0x63C) = -y_pos;
}

Or simply use WriteProcessMemory, memcpy... Of course you could also use Inline Assembly to change the coordinates of the instance :)
04/17/2015 02:00 FxwFran#3
Edit: I found the X/Y coords and made the character step in the same exact position the npc is standing on, how can I make the character talk with the npc or choose a specific option from the npc?
Are there addresses for open dialogues as well?
04/17/2015 08:45 _asm#4
Attach your game with a Debugger such as OllyDbg and try to reverse the function by searching for referenced strings or intermodular calls and reverse the Send function until you find the "TalkWithNPC" function.
Like I told you, reverse engineering is important for finding the functions you need.
04/17/2015 09:21 FxwFran#5
Thanks a lot! I'll give it a try! If I need something else I'll tell you