Hello. Please, Are you can help me and make this code for version 8.54? I want this code for learn client memory writning.
Thanks.
Sorry for my bad english
Hello. Please, Are you can help me and make this code for version 8.54? I want this code for learn client memory writning.
Thanks.
Sorry for my bad english
You already asked this question here: http://tpforums.org/forum/threads/61...4241#post54241
Yes, sorry for double topic but i were not active and topic is not active. ;/
help ;d !! please !!
Hook print name function, then search for the GM prefix, and then change RGB to desired color.
oi amiguinhos
I dont know how start this ;/
help
!!!!!!!!!!
Help guys :d
DWORD PrintName = 0x4F0993;Your PrintName function:typedef void _PrintText(int nSurface, int nX, int nY, int nFont, int nRed, int nGreen, int nBlue, char* lpText, int nAlign);
static _PrintText *PrintText = (_PrintText*)PrintName;
Hook function:void MyPrintNAME(int nSurface, int nX, int nY, int nFont, int nRed, int nGreen, int nBlue, char* lpText, int nAlign)
{
if(strcmp(lpText, "GM Blahblah") == 0)
{
PrintText(nSurface, nX, nY, nFont, changle, to, blue, lpText, 0);
}else{
PrintText(nSurface, nX, nY, nFont, nRed, nGreen, nBlue, lpText, nAlign);
}
return;
}
Hook function like this:DWORD HookCall(DWORD dwAddress, DWORD dwFunction)
{
DWORD dwOldProtect, dwNewProtect, dwOldCall, dwNewCall;
BYTE callByte[5] = {0xE8, 0x00, 0x00, 0x00, 0x00};
dwNewCall = dwFunction - dwAddress - 5;
memcpy(&callByte[1], &dwNewCall, 4);
VirtualProtectEx(GetCurrentProcess(), (LPVOID)(dwAddress), 5, PAGE_READWRITE, &dwOldProtect);
memcpy(&dwOldCall, (LPVOID)(dwAddress+1), 4);
memcpy((LPVOID)(dwAddress), &callByte, 5);
VirtualProtectEx(GetCurrentProcess(), (LPVOID)(dwAddress), 5, dwOldProtect, &dwNewProtect);
return dwOldCall;
}
EnjoyHookCall((DWORD)PrintName, (DWORD)&MyPrintNAME);
nvm (short)(short) (pretty sure he didn't specify version when i started writing this post *sigh*)
can't believe otfans died.. and otserv project.. both OT and RL tibia is declining in active players