So I used this to draw ESP's.
But I've created a much more efficient way.
Class changes on every update.
And since I don't want everyone running around using this, you have to find the pointers yourself.
Example Usage:
Credits:
- M4L1F1C (Me)
But I've created a much more efficient way.
Class changes on every update.
And since I don't want everyone running around using this, you have to find the pointers yourself.
Code:
class CPlayerObject
{
public:
BYTE m_pad01[0x2C];
D3DXVECTOR3 vPos;
};
class CPlayerInfo
{
public:
__int32 PlayerIndex;
char _0x0004[60];
CPlayerObject* pObject;
};
class CILTDrawPrimitive
{
public:
char _0x0000[17212];
D3DVIEWPORT9 ViewPort;
char _0x4348[12];
D3DXMATRIX World;
char _0x4360[52];
D3DXMATRIX View;
char _0x43A0[52];
D3DXMATRIX Projection;
char _0x43E0[12];
};
BOOL bWorldToScreen(IDirect3DDevice9* pDevice, D3DXVECTOR3 vPos, D3DXVECTOR3* vPosOut)
{
// Setup Pointer
CILTDrawPrimitive* pDrawPrimPrimitive = (CILTDrawPrimitive*)(0xPOINTER);
// Execute
D3DXVec3Project(vPosOut, &vPos, &pDrawPrimPrimitive->ViewPort, &pDrawPrimPrimitive->Projection, &pDrawPrimPrimitive->View, &pDrawPrimPrimitive->World);
// Return
return (vPosOut->z < 1.0f);
}
Code:
void DrawEsp(IDirect3DDevice9* pDevice)
{
// Setup Pointers
CPlayerInfo* pPlayerInfo = (CPlayerInfo*)(0xPOINTER);
INT GetPlayerByIndex = pPlayerInfo->PlayerIndex;
// Calculate Players
for (int i; i <= GetPlayerByIndex; i++)
{
// Get Enemy X,Y,Z
D3DXVECTOR3 vPlayerPos = pPlayerInfo->pObject->vPos;
// Get Realtime Positions
D3DXVECTOR3 vNewPosition;
bWorldToScreen(pDevice, vPlayerPos, &vNewPosition);
// Draw Esp Boxes
cMenu[WOLFTEAM][PlayerLoop(i)].DrawBox(vNewPosition.x, vNewPosition.y, 100, 100, cMenu[WOLFTEAM][Colors(RED)]);
}
}
- M4L1F1C (Me)