Some of you may have noticed a slight change in how WoW handles 'key movement'. (E.g.; movement that doesn't use CTM. Strafing, moving backwards, turning, etc)
Prior to 3.3.3, you only needed to set the control flags, and that was it. For both turning the movement on, and off.
However, 3.3.3a apparently lost this functionality. (And added a few more flags to the mix)
You can still 'start' moving via your normal flags. However, you'll have to add another call, or manually update your local player's movement flags, to actually stop.
The new flags are near the end
Code:
[Flags]
public enum MovementDirection : uint
{
None = 0,
RMouse = 0x1,
LMouse = 0x2,
// 2 and 3 not used apparently. Possibly for flag masking?
Forward = 0x10,
Backward = 0x20,
StrafeLeft = 0x40,
StrafeRight = 0x80,
TurnLeft = 0x100,
TurnRight = 0x200,
PitchUp = 0x400,// For flying/swimming
PitchDown = 0x800, // For flying/swimming
AutoRun =0x1000,
JumpAscend = 0x2000,// For flying/swimming
Descend = 0x4000,// For flying/swimming
ClickToMove = 0x400000,// Note: Only turns the CTM flag on or off. Has no effect on movement!
IsCTMing = 0x200000,
ForwardBackMovement = 0x10000,
StrafeMovement = 0x20000,
TurnMovement = 0x40000,
All = 0xFFFFFFFF,
}
Note: IsCTMing is 'on' while you're moving from a CTM click. It's most likely the auto-follow flag, but I'm not entirely sure. (Someone with a nearby player should be able to confirm it)
There are 2 ways to 'fix' the stopping bug.
You can either overwrite your local players movement flags (search if you don't know where they're located), to turn the movement flag off. (Note: movement flags are NOT input control flags!)
Or you can call CGInputControl__UpdatePlayer.
The C# prototype is as follows:
Code:
[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
private delegate void CGInputControl__UpdatePlayer(IntPtr pThis, uint timeStamp, int forceUpdate);
You can find the address in the dump thread.
Called like so:
Code:
UpdatePlayer(InputControlPtr, LastHardwareAction, 1);
I may be the only person with this problem, but I'm fairly sure I'm not.
TL;DR: WoW doesn't automatically update local player movement flags when unsetting control flags;