Bueno lo prometido es deuda, siempre es así. como lo dije antes en el Chat del foro, acá esta mi código (casi el mas actual que tengo), super re-contra testeado y funcional en un: 100% adaptado para main.exe: 1.05D de MU EMU, para cambiar los colores de los nombres de cualquier item, basado en un Hook a la función de color del: Jewel of Soul, en este caso... aunque podría haber sido cualquier otro item, pero con el Soul, es facil hacerlo.
Archivo .cpp:
// -> Item Title Color (1.05.30 MU EMU)
#define oItemTitleColor_Hook 0x00586189
#define oItemTitleColor_Next 0x00586193
#define oItemTitleColor_Stack 0x005862BB
WORD wItemTitleColor_Pointer;
DWORD dwItemTitleColor_Set;
BOOL bItemTitleColor_Switcher;
DWORD dwItemTitleColor_Stack = oItemTitleColor_Stack;
DWORD dwItemTitleColor_Next = oItemTitleColor_Next;
namespace ItemColor
{
enum T
{
White = 0x00,
Blue = 0x01,
Red = 0x02,
Gold = 0x03,
Green = 0x04,
WhiteRed = 0x05,
Violet = 0x06,
WhiteBlue = 0x07,
WhiteBeige = 0x08,
GreenBlue = 0x09,
Gray = 0x0A,
DarkViolet = 0x0B,
};
};
void __declspec(naked) ItemTitleColor()
{
bItemTitleColor_Switcher = FALSE;
dwItemTitleColor_Set = ItemColor::White;
// ----
_asm
{
MOV wItemTitleColor_Pointer,AX
}
// ----
if(wItemTitleColor_Pointer == ItemId(14,14)) // Jewel of Soul
{
bItemTitleColor_Switcher = TRUE;
dwItemTitleColor_Set = ItemColor::Gold;
}
// ----
if(bItemTitleColor_Switcher == TRUE)
{
_asm
{
JE ColorSet
JMP dwItemTitleColor_Next
// ----
ColorSet:
// ----
MOV EDI,dwItemTitleColor_Set
MOV DWORD PTR SS:[ESP+0x24],EDI
// ----
JMP dwItemTitleColor_Stack
}
}
else if(bItemTitleColor_Switcher == FALSE)
{
_asm
{
JMP dwItemTitleColor_Next
}
}
}
void InitItemTitleColor()
{
gToolKit.SetRange((LPVOID)oItemTitleColor_Hook,10,ASM::NOP);
gToolKit.SetJmp((LPVOID)oItemTitleColor_Hook,ItemTitleColor);
}
Archivo .h:
#ifndef __ITEM_H__
#define __ITEM_H__
void ItemTitleColor();
void InitItemTitleColor();
#endif // __ITEM_H__
Offsets para Main.exe versión: 1.05X+ Korea
#define oItemTitleColor_Hook 0x005891F9
#define oItemTitleColor_Next 0x00589203
#define oItemTitleColor_Stack 0x0058932B
Imágenes de mis Tests en: 1.05X+ Korea: PD: Este código funciona para cualquier Item del Juego, no tiene bugs (testeado en: 1.05X+), y lo mas importante es que los colores de los nombres de los items seteados en la función, se mantienen... aun si el Item es: Excellent o esta: +1,+2,+3,etc.
Créditos:
Webzen
Nemesis