Has anyone found the proper function for click to move so i can do some nice typedefing and an easy pattern?![]()
Didn't test it: 0x005AEB20 // 3.1.1
This is most likely the foreground window checking stuff. Unless I'm mistaken, WoW checks to make sure that it's the foreground window before processing mouse stuff (not keyboard stuff, interestingly -- which may be why things like keyclone work without hooking WoW). This is why you want to make sure that if you're botting using CTM, either WoW stays in the foreground (obviously breaking multi-bot/single-box configs), or make WoW think it's always in the foreground.
Keeping WoW convinced it's the foreground app may be as simple as sending a WM_ACTIVATE message before doing CTM, but I'm not 100% on this (WM_ACTIVATE worked for me for simple non-focused mouse stuff, but this might well get you banned, since I've heard that it checks to make sure it really is the foreground window -- or that might also just be folklore). Ultimately you should hook and correctly process active window/focus checks to do CTM in the background. To be doubly paranoid, you should hook the windows message loop so that WM_DEACTIVATE stuff never reaches the app (or course, now I'm talking about anti-anti-anti-cheats, so... YMMV).
Someone correct me if I'm TOMA here; this is all just from memory.
ClickToMove works perfectly fine in the background, and calling it directly, you don't need to first do a manual ClickToMove ingame.
Just tried it again (lazy hardcoding 4tw :P) and it's clicking around in the world as I'm writing this.
typedef void (__thiscall *tClickToMove)(void* lp, vec3d* pos);
-- -- -- -- --
Last edited by dnl; 01-14-2010 at 07:38 PM.
im having some trouble with using this, for some reason my toon runs off in random directions? could anyone shed some light?
Code:private void Mover(float xpos, float ypos, float zpos) { try { Memory.WriteFloat(0x0111110C, xpos); Application.DoEvents(); Memory.WriteFloat(0x01111110, ypos); Application.DoEvents(); Memory.WriteFloat(0x01111114, zpos); Application.DoEvents(); Memory.WriteInt(0x0111109C, 4); Application.DoEvents(); LogBox.Items.Add("Now Moving To: " + xpos + ',' + ypos + ',' +zpos); } catch { LogBox.Items.Add("Cannot Connect To WoW..."); Connected_Chk.Checked = false; } }
Do a manual click to move anywhere in game first.
How detectable is this? I mean it does write to the memory.
AFAIK, this is undetectable unless WoW starts scanning the CTM offsets whenever InputEvent() is not called.
Which I have a feeling will happen soon with everyone starting to use it.
I don't see them doing it. Just my opinion. They can't catch it with a stack trace either, so... Yeah. It would be very ugly to be done this way(lots of false positives). I would aim more for them re-doing their CTM.
Guess you should tryor smth like that. If you seriously care of responsibility of your window, make memory writes in a separate thread, but all that 4 memory writings must be as close to each one as possible.Code:Memory.WriteFloat(0x0111110C, xpos); Memory.WriteFloat(0x01111110, ypos); Memory.WriteFloat(0x01111114, zpos); Memory.WriteInt(0x0111109C, 4); Application.DoEvents();