I tried everything with the old function. And no success yet.
I don't know why I can't get 0097A0D0 to work, no matter what I do.
But with 0097A310 it works perfectly. That function seems to be much more robust, at the cost of not being able to cast on positions.
Well, I'll use both functions now one for walking and one for attacking
Thanks to everyone who helped!!
_Mike:
Stuff like "Crippling Wave" has a combo-counter, you can look for that.
It gets incremented on each attack and it's time based.
That means when you wait to long (~750ms) it gets reset to 0.
The function itself is called the same way all the time.
So you can spam the spell each frame. It doesn't matter.
Only if you wait too long it won't do the combo attack.
The game client calls the function as fast as the player clicks.
But I don't know how it handles the situation where the player holds down the mousebutton...
Last edited by ChrisSch; 05-19-2012 at 09:34 AM.
xzidez,
Did you ever get your asm wrapper question answered? lol I seen the conversation change a little.
-Bit_Hacker
Question for all, I've been able to set up all the registers properly, but for some reason when I compile it wants to over-write EAX with the function ptr to UsePower then do call eax. Has anyone run into this? Or now how to prevent this from happening?
How I'm doing it (note: OS X, so assembly syntax which is op src, dest):
When compiled it then does:Code:#define UsePower ((signed int (*)(void))0x7028F0) // Step 7: Copy RActor struct ptr into eax //mov eax, [ebp+var_AC] ptr = (int)&RActorStruct; __asm__ __volatile__("movl %0, %%eax" : "=g" (ptr)); //call UsePower UsePower();
Edit: Fixed, just moved function pointer to ebx and called thatCode:0x235e8ead <_Z10_use_poweri+284>: mov $0x7028f0,%eax 0x235e8eb2 <_Z10_use_poweri+289>: call *%eax
Last edited by Tanaris4; 05-21-2012 at 02:59 PM.
https://tanaris4.com