Reversed with Reclass by KN4CK3R
C++:
struct i3Color
{
BYTE R;
BYTE G;
BYTE B;
BYTE A;
};
struct GAMEINFO_CHARACTER
{
char pad_0000[44]; //0x0000
int32_t Idk; //0x002C
char pad_0030[4]; //0x0030
int32_t HP; //0x0034
char pad_0038[16]; //0x0038
int32_t curWeapSlot; //0x0048
char pad_004C[72]; //0x004C
int32_t CurWeapon; //0x0094
char pad_0098[104]; //0x0098
D3DXVECTOR3 Start; //0x0100
D3DXVECTOR3 End; //0x010C
};
struct CTeam
{
BYTE iTeam;
};
class BattleSlotContext
{
public:
#define PTR_SLOT 0x000175B4
int getMySlotIdx()
{
return (int)(*reinterpret_cast<DWORD*>((DWORD)this + PTR_SLOT));
}
int GetMyCharaIndex()
{
CTeam* MyTeam = (CTeam*)((DWORD)this + PTR_SLOT);
return MyTeam->iTeam;
}
BOOL isAlive(int iSlot) {
if (this->getGameInfo_Chara(iSlot)->HP > 0)
return true;
return false;
}
GAMEINFO_CHARACTER* getGameInfo_Chara(int index) {
return (GAMEINFO_CHARACTER*)(((DWORD)this + 0x740) + (index * 0x1668));
}
};
class i3InputKeyboard
{
public:
char pad_0000[0x1A];
int8_t A; //0x001A
int8_t B; //0x001B
int8_t C; //0x001C
int8_t D; //0x001D
int8_t E; //0x001E
int8_t F; //0x001F
int8_t G; //0x0020
int8_t H; //0x0021
int8_t I; //0x0022
int8_t J; //0x0023
int8_t K; //0x0024
int8_t L; //0x0025
int8_t M; //0x0026
int8_t N; //0x0027
int8_t P; //0x0028
int8_t O; //0x0029
int8_t Q; //0x002A
int8_t R; //0x002B
int8_t S; //0x002C
int8_t T; //0x002D
int8_t U; //0x002E
int8_t V; //0x002F
int8_t W; //0x0030
int8_t X; //0x0031
int8_t Y; //0x0032
int8_t Z; //0x0033
int8_t Escape; //0x0034
int8_t Enter; //0x0035
int8_t Ctrl; //0x0036
int8_t N0000175B; //0x0037
int8_t Shift; //0x0038
int8_t N00001761; //0x0039
int8_t Alt; //0x003A
int8_t N00001762; //0x003B
int8_t SpaceBar; //0x003C
int8_t ArrowRight; //0x003D
int8_t ArrowLeft; //0x003E
int8_t ArrowUp; //0x003F
int8_t ArrowDown; //0x0040
int8_t PageUp; //0x0041
int8_t PageDown; //0x0042
int8_t Home; //0x0043
int8_t End; //0x0044
int8_t Delete; //0x0045
int8_t Insert; //0x0046
int8_t Tab; //0x0047
int8_t NumLock; //0x0048
int8_t CapsLock; //0x0049
int8_t ScrollLock; //0x004A
int8_t PauseBreak; //0x004B
int8_t Unk1; //0x004C
int8_t Unk2; //0x004D
int8_t Unk3; //0x004E
int8_t F1; //0x004F
int8_t F2; //0x0050
int8_t F3; //0x0051
int8_t F4; //0x0052
int8_t F5; //0x0053
int8_t F6; //0x0054
int8_t F7; //0x0055
int8_t F8; //0x0056
int8_t F9; //0x0057
int8_t F10; //0x0058
int8_t F11; //0x0059
int8_t F12; //0x005A
int8_t NumPad0; //0x005B
int8_t NumPad1; //0x005C
int8_t NumPad2; //0x005D
int8_t NumPad3; //0x005E
int8_t NumPad4; //0x005F
int8_t NumPad5; //0x0060
int8_t NumPad6; //0x0061
int8_t NumPad7; //0x0062
int8_t NumPad8; //0x0063
int8_t NumPad9; //0x0064
int8_t NumDivide; //0x0065
int8_t NumMultiply; //0x0066
int8_t NumMinus; //0x0067
int8_t NumPlus; //0x0068
};
class i3InputMouse//Wag gamitin yung mousepos sa aimbot
{
public:
char pad_0000[16]; //0x0000
D3DXVECTOR3 MousePos; //0x0010
int32_t MouseState; //0x001C
char pad_0020[4]; //0x0020
D3DXVECTOR3 MouseDelta; //0x0024
};
class CGameFrameWork
{
public:
char pad_0000[44]; //0x0000
class UIFramework* pUIFrame; //0x002C
char pad_0030[348]; //0x0030
class i3CollisionContext* pi3CollisionContext; //0x018C
char pad_0190[76]; //0x0190
class i3InputKeyboard* pKey; //0x01DC
class i3InputMouse* pMouse; //0x01E0
};
class i3RenderContext
{
public:
char pad_0000[2224]; //0x0000
D3DXMATRIX ViewMatrix; //0x08B0
D3DXMATRIX ProjectionMatrix; //0x08F0
D3DXMATRIX InverseMatrix; //0x0930
D3DXMATRIX WorldMatrix; //0x0970
char pad_09B0[17828]; //0x09B0
int32_t Width; //0x4F54
int32_t Height; //0x4F58
char pad_4F5C[256]; //0x4F5C
LPDIRECT3DDEVICE9 pDevice; //0x505C
char pad_5060[16]; //0x5060
int32_t HWND; //0x5070
char pad_5074[236]; //0x5074
D3DXMATRIX TextureMatrix; //0x5160
BOOL WorldToScreen(LPDIRECT3DDEVICE9 pDevice,D3DVECTOR Player, D3DVECTOR& Out)
{
D3DXVECTOR3 PlayerPos(Player.x, Player.y, Player.z);
D3DXVECTOR3 vScreen;
D3DVIEWPORT9 Viewport;
pDevice->GetViewport(&Viewport);
Viewport.X = Viewport.Y = 0;
Viewport.MinZ = 0;
Viewport.MaxZ = 1;
D3DXVec3Project(&vScreen, &PlayerPos, &Viewport, &this->ProjectionMatrix, &this->ViewMatrix, &this->WorldMatrix);
if (vScreen.z < 1.0f && vScreen.x > 0.0f && vScreen.y > 0.0f && vScreen.x < Viewport.Width && vScreen.y < Viewport.Height)
{
Out.x = vScreen.x;
Out.y = vScreen.y;
Out.z = vScreen.z;
return true;
}
return false;
}
}; //Size: 0x09B0
DWORD GetCurHpAddr = NULL;//Variable na nagpaparse nung address galing sa FindPattern
class CGameCharaManager : public i3GameObj
{
public:
char pad_0000[44]; //0x0000
CWeaponBase* pWeaponBase; //0x002C
char pad_0030[56]; //0x0030
i3AttrSet* pAttrSet; //0x0068
i3MaterialAttr* pMaterial; //0x006C
i3AlphaBlendAttr* pAlpha; //0x0070
char pad_0074[92]; //0x0074
i3SceneObject* pObject; //0x00D0
static CGameCharaManager* g_pPlayer()
{
DWORD pPlayer = ((DWORD)NoClass + 0x9590);
auto Func = (CGameCharaManager*)(*(DWORD*)(pPlayer));
return Func;
}
CGameCharaManager* GetEnemy(int i)
{
auto uBase = *reinterpret_cast<DWORD*>((DWORD)this + 0x14 + (0x114 * i));
return (CGameCharaManager*)uBase;
}
bool isAlive()
{
if (this->getCurHP() > 0)
return true;
else
return false;
}
int getCurHP(void)
{
typedef int(__thiscall * tgetCurHP)(CGameCharaManager*);
tgetCurHP getCurHP = (tgetCurHP)(GetCurHpAddr);
return getCurHP(this);
}
};
class i3Viewer
{
public:
char pad_0000[12]; //0x0000
class i3PhysixContext* pPhysix; //0x000C
class i3RenderContext* pRender; //0x0010
}; //Size: 0x0014
DWORD BattleSlotCtx = NULL;//BattleSlotContext ito yung pinaka class instance ko sa lahat para maaccsess yung subclass
class GameClass
{
public:
class BattleSlotContext* pBattle; //0x0000
char pad_0004[1332]; //0x0004
class CGameFrameWork* pFrameWork; //0x0538
class i3Viewer* pViewer; //0x053C
char pad_0540[4]; //0x0540
class CGameCharaManager* pCharaMgr; //0x0544
static GameClass* Inst()
{
return (GameClass*)(BattleSlotCtx);//AOB : 8B 0D ?? ?? ?? ?? 8B 91 ?? ?? ?? ?? - BattleSlotContext(2nd result)
}
}; //Size: 0x0594