@[Only registered and activated users can see links. Click Here To Register...] @[Only registered and activated users can see links. Click Here To Register...]
decipação
Pets.h
Citação:
#ifndef __PETS_H__
#define __PETS_H__
#define ItemId(x, y) ((x * 512) + y)
class Pets
{
public:
void Load();
// ----
static bool ResetPetPreviewEx(int ItemId);
};
extern Pets gPets;
#endif
Pets.cpp
Citação:
#include "stdafx.h"
#include "Pets.h"
#include "TMemory.h"
#include "Defines.h"
Pets gPets;
bool Pets::ResetPetPreviewEx(int ItemId)
{
bool Result;
// ----
if (ItemId)
Result = *(WORD*)ItemId == ItemId(13,0) //Angel
|| *(WORD*)ItemId == ItemId(13,1) //Satan
|| *(WORD*)ItemId == ItemId(13,2) //Unicorn
|| *(WORD*)ItemId == ItemId(13,3) //Dinorant
|| *(WORD*)ItemId == ItemId(13,4) //Dark Horse
|| *(WORD*)ItemId == ItemId(13,5) //Dark Raven
|| *(WORD*)ItemId == ItemId(13,37) //Fenrir
|| *(WORD*)ItemId == ItemId(13,76);
else
Result = 0;
return Result;
}
void Pets::Load()
{
SetOp((LPVOID)0x00734B9F,this->ResetPetPreviewEx,ASM::CALL);
}
HP Bar Pet
HPPet.h
Citação:
#define SearchLineText ((int(__thiscall*)(LPVOID This, int a2)) 0x4024D0)
#define SearchLineTextThis 0x79F5190
#define CopyText ((int(__cdecl*)(int a1,int a2)) 0x4B23E0)
#define sub_7169E9 ((int(__thiscall*)(LPVOID* This, int a2,int a3,int a4,int a5,int a6,int a7)) 0x07169E9)
class PETS
{
public:
char __thiscall PetBarHP(int a1, int a2);
void PetAddEffect();
void Hook();
};extern PETS cPets;
HPPet.cpp
Citação:
#include "stdafx.h"
#include "HPPet.h"
#include "Monster.h"
#include "Util.h"
PETS cPets;
char PETS::PetBarHP(int a1, int a2)
{
int v2;
char result; // al@17
char PetName[254]; // [sp+14h] [bp-100h]@7
OBJECTSTRUCT * gObj = (OBJECTSTRUCT *)( *(DWORD*)0x79B9D48);
if (gObj->objPet < 7475 || gObj->objPet > 7479
&& gObj->objPet != 0x1D73
&& gObj->objPet != 0x1D74
&& gObj->objPet != 0x1D76
&& gObj->objPet != 0x1D58
&& gObj->objPet != 0x1D7F)
{
result = 0;
}
else
{
switch ( gObj->objPet )
{
case 0x1D33:
v2 = SearchLineText((LPVOID)SearchLineTextThis,353);
CopyText((int)&PetName, v2);
break;
case 0x1D34:
v2 = SearchLineText((LPVOID)SearchLineTextThis,354);
CopyText((int)&PetName, v2);
break;
case 0x1D35:
v2 = SearchLineText((LPVOID)SearchLineTextThis,355);
CopyText((int)&PetName, v2);
break;
case 0x1D36:
v2 = SearchLineText((LPVOID)SearchLineTextThis,354);
CopyText((int)&PetName, v2);
break;
case 0x1D37:
v2 = SearchLineText((LPVOID)SearchLineTextThis,1187);
CopyText((int)&PetName, v2);
break;
case 0x1D58:
v2 = SearchLineText((LPVOID)SearchLineTextThis,1916);
CopyText((int)&PetName, v2);
break;
case 0x1D7F:
v2 = SearchLineText((LPVOID)SearchLineTextThis,2118);
CopyText((int)&PetName, v2);
break;
case 0x1D73:
CopyText((int)&PetName, *(DWORD*)0x79FAE58 + 0x89D00);
break;
case 0x1D74:
CopyText((int)&PetName, *(DWORD*)0x79FAE58 + 0x89D54);
break;
case 0x1D76:
CopyText((int)&PetName, *(DWORD*)0x79FAE58 + 0x89DFC);
break;
default:
break;
}
sub_7169E9((LPVOID*)this,a1, a2, (int)&PetName, *(BYTE *)(*(DWORD*)0x79FAE5C + 0x13DE), 0xFF, 0);
result = 1;
}
return result;
}
void PETS::Hook()
{
SetCompleteHook(0xE9,0x0716CF3,&PETS::PetBarHP);
}
Main.cpp
Citação:
gPets.Load();
cPets.Hook();
4 minutes:------- Atualizado -------
Posição do pet no inventório
Código:
void __declspec(naked) PetPosition()
{
_asm
{
CMP ESI,0x1D76
JNZ Pet
FLD DWORD PTR SS:[ESP+0x18]
FSUB DWORD PTR DS:[0x814498]
MOV DWORD PTR DS:[0x7B544F8],0x43870000
MOV DWORD PTR DS:[0x7B544FC],0x42200000
FSTP DWORD PTR SS:[ESP+0x18]
mov eax, 0x00591B2F
Pet :
CMP ESI,New_Pet
JNZ Return
FLD DWORD PTR SS:[ESP+0x18]
FSUB DWORD PTR DS:[0x814498]
MOV DWORD PTR DS:[0x7B544F8],0x43870000
MOV DWORD PTR DS:[0x7B544FC],0x42200000
FSTP DWORD PTR SS:[ESP+0x18]
mov eax, 0x00591B2F
Return :
mov eax,0x00592B09;
jmp eax
}
}
//hook
ToolKit.WriteJmp(0x00592ADA,(DWORD)&PetPosition);