-
Member
Alternative to teleporting from EndScene?
Hello, I'm not really a WoW player but my friends play on a vanilla 1.12.1 server.
I had a poke through memory and quickly found that you could teleport by iterating ObjMgr and overwriting your players location.
The problem is that I'm calling a function to do this from ImGui through dx9 EndScene, and for obvious reasons I imagine that it's fairly far down the calls made in the main loop of WoW.
I believe that a bad side effect of this is that teleporting while your character is in motion does not seem to work properly every time.
I am not very good with reverse engineering, so I was wondering if someone could point me toward a function that gets called before any player movement is made / sent.
An example of this in a Source engine game would be CreateMove, used by most people for aimbots.
Could not find anything on search.
Thank you all very much in advanced, and apologies if this has been answered before.
-
The reason that using that method to teleport while you're moving has nothing to do with how far down in a call string you are. It has to do with the fact that the client was not designed to allow for the position to change like that. It has code to say basically "I'm walking and my last position was (x,y,z)", then you teleport to (a, b, c), then the client's movement code executes saying "i need to move from (x, y, z) to (x+1, y+1, z+1)".
-
Post Thanks / Like - 1 Thanks
hamgaacaan (1 members gave Thanks to namreeb for this useful post)
-
Member
Thanks namreeb, bad mistake on my part. What solution would you propose? I was thinking of somehow neutralizing movement before teleport. Don't have time now, but I will play around later. I appreciate the correction.
-
In my opinion, the easiest solution is to require the player to not be moving. So when a teleport is initiated, you first check the movement flags. If they indicate movement, refuse the teleport, and provide feedback to the user.
-
Post Thanks / Like - 1 Thanks
hamgaacaan (1 members gave Thanks to namreeb for this useful post)
-
What are you calling to set your position? I'm pretty sure CGUnit_C::SetPosition works perfectly fine while moving..
-
My understanding was that he was manually writing the coordinates to the appropriate location in memory.
-
Contributor
Originally Posted by
hamgaacaan
I am not very good with reverse engineering, so I was wondering if someone could point me toward a function that gets called before any player movement is made / sent.
BOOL __thiscall CMovement::UpdatePlayerMovement(CMovement *this, int timeStamp) @ 0x00615C30
-
Post Thanks / Like - 1 Thanks
hamgaacaan (1 members gave Thanks to tutrakan for this useful post)
-
Originally Posted by
tutrakan
BOOL __thiscall CMovement::UpdatePlayerMovement(CMovement *this, int timeStamp) @ 0x00615C30
I've never actually used this function, but I am assuming the timestamp is from what the GetCurTimeMs or whatever it is returns?
-
Originally Posted by
lolp1
I've never actually used this function, but I am assuming the timestamp is from what the GetCurTimeMs or whatever it is returns?
Movement uses a slightly different timestamp: CMovement_C::GetCurrUpdateTime
-
Contributor
Originally Posted by
lolp1
I've never actually used this function, but I am assuming the timestamp is from what the GetCurTimeMs or whatever it is returns?
It is taken from CMovementGlobals->m_lastUpdateTime and is verified against 250ms elapsed time and CMovement->TimeSinceLastMoveEvent somehow. I didn't get in detail because I don't use it neither.
Originally Posted by
Jadd
Movement uses a slightly different timestamp: CMovement_C::GetCurrUpdateTime
Do you have the address for 1.12.1?
Last edited by tutrakan; 02-26-2017 at 05:59 PM.