-
Active Member
2.4.3 Memory Editing for Model Swap
I'm trying to make a basic model swapper for items by using memory editing. The problem i'm encountering is refreshing the character's models.
In the 2.4.3 client, for example I can change the main hand attached to the character by modifying the address at
BASE + 0x2F68
I can refresh the weapon model by either sheath/unsheathing or attacking something.
I can change the cloak memory address from
BASE + 0x2F28
and refresh this by ticking/unticking display cloak.
Does anybody know of a way I can refresh my visuals for all of my items easily?
I also tried a simple /console reloadui but it does not seem to actually reload the models.
-
Did you try UpdateDisplayInfo?,
Originally Posted by
DarkLinux
Code:
typedef int (__thiscall* dUpdateDisplayInfo)(PVOID _this, int unknown, int unknown2);
static int UpdateDisplayInfo(PVOID _this)
{
dUpdateDisplayInfo _UpdateDisplayInfo = (dUpdateDisplayInfo)0x00622520; // 2.4.3
return _UpdateDisplayInfo(_this, 1, 1);
}
2.4.3 Offsets & Pointers (2.4.3 Offsets & Pointers)
Code:
UpdateDisplayInfo((PVOID)*(DWORD*)0x00E29D28);
Last edited by DarkLinux; 01-24-2018 at 02:23 PM.
-
Post Thanks / Like - 2 Thanks
bone91,
pinny (2 members gave Thanks to DarkLinux for this useful post)
-
Active Member
Originally Posted by
DarkLinux
Thank you very much for the reply.
I have been messing with this for a few hours trying different things, and i'm a bit stuck.
I am injecting an ASM codecave and detouring to it from EndScene for when I am calling in game functions in C#.
Can anybody tell me if there is something that sticks out as wrong in this example ASM to attempt to call that function?
Code:
String[] asm = new String[]
{
"push eax", //push current eax register to stack
"mov eax, 0", //move 0 to eax for 3rd parm
"push eax", //push 3rd parm to stack
"mov eax, 0", //move 0 to eax for 2nd parm
"push eax", //push 2nd parm to stack
"mov eax, "+((uint)myProc.cc.Target.baseAddress).ToString(), //insert base address of entity to update into eax
"push eax", //push (this) parm to stack of object to update display info on
"call 00622520", //call update display info
"pop eax", //pop eax from where it was pushed at the beginning
"retn",
};
myProc.inj.InjectAndExecute(asm);
Last edited by pinny; 01-25-2018 at 01:26 AM.
-
Banned
My guess without testing is that you using 0x00622520 but the offset linked was 0x00E29D28, assuming the rest of the parameters are correct.
Edit: Ignore my mistake i did I didnt realise that 0x00E29D28 was the localplayer
Last edited by WiNiFiX; 01-25-2018 at 03:51 AM.
Reason: Sleepy
-
Should be,
Code:
push 1
push 1
mov ecx, localplayer
call 0x00622520
-
Post Thanks / Like - 1 Thanks
pinny (1 members gave Thanks to DarkLinux for this useful post)
-
Active Member
Originally Posted by
DarkLinux
Should be,
Code:
push 1
push 1
mov ecx, localplayer
call 0x00622520
Thank you so much everybody you are the best DarkLinux!!