Вы находитесь на странице: 1из 3

void InitPrintPlayer() // OK

{
SetDword(0x0049F6ED, 0xA0000001); // PrintTextReplace 64

SetDword(0x004AB73A, 0xA0000002); // PrintTextReplace 64

SetDword(0x005B3AD4, 0xA0000003); // PrintTextReplace 64

SetDword(0x005B4931, 0xA0000004); // PrintTextReplace 64

SetDword(0x0049F68B, 0xA0000001); // PrintTextReplace 203

SetDword(0x004AB6DE, 0xA0000002); // PrintTextReplace 203

SetCompleteHook(0xE9, 0x00402267, &PrintPlayerViewText); //1.04j 00402267


}

__declspec(naked) void PrintPlayerViewText() // OK


{
static DWORD PrintPlayerViewTextAddress1 = 0x0040226E; //>>> 1.04j
0040226E

_asm
{
Cmp Ecx, 0xA0000000
Jle NEXT1
Mov Dword Ptr Ss : [Ebp - 0x04], 0x0750DF88 //>>> 1.04j 0750DF88
Sub Ecx, 0xA0000000
Jmp NEXT2
NEXT1 :
Xor Ecx, Ecx
NEXT2 :
Push Ecx
Mov Edx, Ebp
Add Edx, 0x08
Push Edx
Call[PrintTextReplace]
Add Esp, 0x08
Mov Eax, Dword Ptr Ss : [Ebp + 0x08]
Push Eax
Mov Ecx, Dword Ptr Ss : [Ebp - 0x04]
Jmp[PrintPlayerViewTextAddress1]
}
}

void PrintTextReplace(DWORD* value, DWORD type) // OK


{
switch (value[0])
{
case 64: //"Velocidade de ataque: %d"
switch (type)
{
case 1:
value[1] = ViewDarkSpiritAttackSpeed;
break;
case 2:
value[1] = ViewDarkSpiritAttackSpeed;
break;
case 3:
value[1] = ViewDarkSpiritAttackSpeed;
break;
case 4:
value[1] = ViewPhysiSpeed;
break;
}
break;
case 170: //"Dano m�gico:%d~%d"
GetViewMagicDamage(&value[1], &value[2]);
break;
case 203: //"Taxa de dano: %d~%d (%d)"
GetViewPhisyDamage(&value[1], &value[2]);
value[3] = ViewAttackSuccessRate;
break;
case 204: //"Dano: %d~%d"
GetViewPhisyDamage(&value[1], &value[2]);
break;
case 206: //"Taxa de defesa: %d (%d +%d)"
value[0] = 208;
value[1] = ViewDefense;
value[2] = ViewDefenseSuccessRate;
break;
case 207: //"Defesa: %d (+%d)"
value[0] = 209;
value[1] = ViewDefense;
break;
case 208: //"Taxa de defesa: %d (%d)"
value[1] = ViewDefense;
value[2] = ViewDefenseSuccessRate;
break;
case 209: //"Defesa: %d"
value[1] = ViewDefense;
break;
case 211: //"HP: %d / %d"
value[1] = ViewCurHP;
value[2] = ViewMaxHP;
break;
case 213: //"Mana: %d / %d"
value[1] = ViewCurMP;
value[2] = ViewMaxMP;
break;
case 214: //"AG: %d / %d"
value[1] = ViewCurBP;
value[2] = ViewMaxBP;
break;
case 215: //"Dano m�gico: %d~%d (+%d)"
GetViewMagicDamage(&value[1], &value[2], &value[3]);
break;
case 216: //"Dano m�gico: %d~%d"
GetViewMagicDamage(&value[1], &value[2]);
break;
case 217: //"Ponto(s): %d"
value[1] = ViewPoint;
break;
case 358: //"Vida: %d/%d"
switch (type)
{
case 1:
value[1] = ViewCurHP;
value[2] = ViewMaxHP;
break;
case 2:
value[1] = value[1];
value[2] = value[2];
break;
case 3:
value[1] = value[1];
value[2] = value[2];
break;
}
break;
case 359: //"Mana: %d/%d"
value[1] = ViewCurMP;
value[2] = ViewMaxMP;
break;
case 379: //"(%s fruta(s)) %d pontos de atributo foram %s."
value[2] = ViewValue;
break;
case 582: //"Dano da habilidade: %d%%"
value[1] = ViewDamageMultiplier;
break;
case 879: //"Dano da habilidade: %d~%d"
GetViewSkillDamage(&value[1], &value[2]);
break;
case 1692: //"Curse Spell: %d ~ %d"
GetViewCurseDamage(&value[1], &value[2]);
break;
case 1693: //"Curse Spell: %d ~ %d(+%d)"
GetViewCurseDamage(&value[1], &value[2], &value[3]);
break;
case 1694: //"Curse Spell: %d ~ %d"
GetViewCurseDamage(&value[1], &value[2]);
break;
case 2037: //"SD : %d / %d"
value[1] = ViewCurSD;
value[2] = ViewMaxSD;
break;
case 2044: //"Taxa de ataque: %d"
value[1] = ViewAttackSuccessRatePvP;
break;
case 2045: //"Taxa de defesa: %d"
value[1] = ViewDefenseSuccessRatePvP;
break;
case 2109: //"Taxa de ataque: %d (+%d)"
value[0] = 2044;
value[1] = ViewAttackSuccessRatePvP;
break;
case 2110: //"Taxa de defesa:%d (+%d)"
value[0] = 2045;
value[1] = ViewDefenseSuccessRatePvP;
break;
}
}

Вам также может понравиться