Originally Posted by
Nesox
Or you can use SetFacing, alot easier or even better up you could use clicktomove for all the movement it's really nice
Code:
PlayerInfo pInfo = new PlayerInfo(_process);
if (Radians != true)
{ Angle = Angle * PI / 180; }
uint pAngle = wow.AllocateMemory(0x4);
wow.WriteFloat(pAngle, Angle);
wow.Asm.Clear();
wow.Asm.AddLine("mov EDX, [{0}]", 0x011CA310); //Start UpdateCurMgr
wow.Asm.AddLine("mov EDX, [EDX+{0}]", 0x000028A4);
wow.Asm.AddLine("FS mov EAX, [0x2C]");
wow.Asm.AddLine("mov EAX, [EAX]");
wow.Asm.AddLine("add EAX, 8");
wow.Asm.AddLine("mov [EAX], EDX"); // End UpdateCurMgr
wow.Asm.AddLine("mov ecx, {0}", pInfo.GetLocalPlayer());
wow.Asm.AddLine("push {0}", pAngle);
wow.Asm.AddLine("call {0}", 0x006705E0);
wow.Asm.AddLine("retn");
wow.Asm.AddLine("add esp, 0x8");
wow.Asm.InjectAndExecute(wow.AllocateMemory());
I can't seem to get this working. WoW crashes every time for me. The code I'm using is:
Code:
public void FacingInjection(float AngleRadins)
{
if (this.ObjectPointer != 0)
{
try
{
uint pAngle = this.Memory.AllocateMemory(0x4);
this.Memory.WriteFloat(pAngle, AngleRadins);
uint codecave = this.Memory.AllocateMemory();
//this.Memory.Asm.Clear();
//this.Memory.Asm.AddLine("fs mov eax, [0x2C]");
//this.Memory.Asm.AddLine("mov eax, [eax]");
//this.Memory.Asm.AddLine("add eax, 8");
//this.Memory.Asm.AddLine("mov dword [eax], {0}", new object[] { curMgr });
//this.Memory.Asm.AddLine("mov ecx, {0}", new object[] { this.ObjectPointer });
//this.Memory.Asm.AddLine("push {0}", pAngle);
//this.Memory.Asm.AddLine("call {0}", 0x006705E0);
//this.Memory.Asm.AddLine("retn");
this.Memory.Asm.AddLine("mov EDX, [{0}]", 0x011CA310); //Start UpdateCurMgr
this.Memory.Asm.AddLine("mov EDX, [EDX+{0}]", 0x000028A4);
this.Memory.Asm.AddLine("FS mov EAX, [0x2C]");
this.Memory.Asm.AddLine("mov EAX, [EAX]");
this.Memory.Asm.AddLine("add EAX, 8");
this.Memory.Asm.AddLine("mov [EAX], EDX"); // End UpdateCurMgr
this.Memory.Asm.AddLine("mov ecx, {0}", new object[] { this.ObjectPointer });
this.Memory.Asm.AddLine("push {0}", pAngle);
this.Memory.Asm.AddLine("call {0}", 0x006705E0);
this.Memory.Asm.AddLine("retn");
this.Memory.Asm.AddLine("add esp, 0x8");
this.Memory.Asm.InjectAndExecute(codecave);
this.Memory.FreeMemory(codecave);
}
catch
{
}
}
}
I also tried
Code:
0x008D8E00 - SetFacing
from other threads claiming accurate 3.0.9 offsets.
The GetName and Interact VMT offsets are working and are described as:
Code:
VMT_GetName = 47 * 4,
VMT_INTERACT = 36 * 4,
My primary questions are:
Where do the indexes 36, and 47 come from? I realize the base object + 36 * valsize could be the real offset for the target of the "call" symbol, but: How do I calculate other offsets like this based on known static LUA call offsets? I'm not even sure I'm going about this the right way.
Would using the base object pointer for (say a NODE type) be any different than using the base object pointer for the base type? And if so, would calling the different base object type for the more specific abstraction (NODE type) cause the offsets to be misaligned somehow? I noticed the XYZ offsets for a NODE type are different than XYZ offsets for the base object type
Any help would be greatly appreciated. 
edit: The following does NOT crash wow, but it seems to have no effect. Changing the offset 0x008D8E00 to 0x006705E0 (value in first quote) DOES crash wow.
Code:
uint pAngle = this.Memory.AllocateMemory(0x4);
this.Memory.WriteFloat(pAngle, AngleRadins);
uint codecave = this.Memory.AllocateMemory();
this.Memory.Asm.Clear();
this.Memory.Asm.AddLine("fs mov eax, [0x2C]");
this.Memory.Asm.AddLine("mov eax, [eax]");
this.Memory.Asm.AddLine("add eax, 8");
this.Memory.Asm.AddLine("mov dword [eax], {0}", new object[] { curMgr });
this.Memory.Asm.AddLine("mov ecx, {0}", new object[] { this.ObjectPointer });
//this.Memory.Asm.AddLine("push {0}", pAngle);
//this.Memory.Asm.AddLine("call {0}", 0x006705E0);
//this.Memory.Asm.AddLine("retn");
//this.Memory.Asm.AddLine("mov EDX, [{0}]", 0x011CA310); //Start UpdateCurMgr
//this.Memory.Asm.AddLine("mov EDX, [EDX+{0}]", 0x000028A4);
//this.Memory.Asm.AddLine("FS mov EAX, [0x2C]");
//this.Memory.Asm.AddLine("mov EAX, [EAX]");
//this.Memory.Asm.AddLine("add EAX, 8");
//this.Memory.Asm.AddLine("mov [EAX], EDX"); // End UpdateCurMgr
//this.Memory.Asm.AddLine("mov ecx, {0}", new object[] { this.ObjectPointer });
this.Memory.Asm.AddLine("push {0}", pAngle);
this.Memory.Asm.AddLine("call {0}", 0x008D8E00);
this.Memory.Asm.AddLine("retn");
//this.Memory.Asm.AddLine("add esp, 0x8");
this.Memory.Asm.InjectAndExecute(codecave);
this.Memory.FreeMemory(codecave);