Code:
#ifndef _ESP_H_
#define _ESP_H_
#define M_PI 3.14159265358979323846f
#define DegToRad(degree) ((degree) * (M_PI / 180.0f))
#define PITCH 0
#define YAW 1
#define ROLL 2
#define TNormal DT_NOCLIP
#define TCenter DT_NOCLIP | DT_CENTER
#define TLeft DT_NOCLIP | DT_LEFT
#define TRight DT_NOCLIP | DT_RIGHT
#define SubtractVector(v1, v2, v3) ((v3[0] = v1[0] - v2[0]), (v3[1] = v1[1] - v2[1]), (v3[2] = v1[2] - v2[2]))
class cPlayerMgr;
class cPlayerInfo;
class CILTDrawPrim;
class cCharacterFX;
class cGameClientShell;
class cClientWeaponMgr;
typedef cPlayerInfo *(__thiscall *lpGetLocalPlayer)(unsigned long ulThis);
lpGetLocalPlayer GetLocalPlayer;
typedef cPlayerInfo *(__thiscall *lpGetPlayerByIndex)(unsigned long ulThis, INT index, INT unk);
lpGetPlayerByIndex GetPlayerByIndex;
class cSFXList
{
public :
unsigned long unk0;
unsigned long *List;
unsigned long unk1;
int Num;
};
class cSFXMgr
{
public :
cSFXList SFXList[0x3B];
};
class cGameClientShell
{
public :
virtual void Function0();
virtual void Function1();
virtual void Function2();
virtual void Function3();
virtual void Function4();
virtual void Function5();
virtual void Function6();
virtual void Function7();
virtual void Function8();
virtual void Function9();
virtual void Function10();
virtual void Function11();
virtual void Function12();
virtual void Function13();
virtual void Function14();
virtual void Function15();
virtual void Function16();
virtual void Function17();
virtual void Function18();
virtual void Function19();
virtual void Function20();
virtual void Function21();
virtual void Function22();
virtual void Function23();
virtual void Function24();
virtual void Function25();
virtual void Function26();
virtual void Function27();
virtual void Function28();
virtual void Function29();
virtual void Function30();
virtual void Function31();
virtual void Function32();
virtual void Function33();
virtual void Function34();
virtual void Function35();
virtual void Function36();
virtual void Function37();
virtual void Function38();
virtual void Function39();
virtual void Function40();
virtual void Function41();
virtual void Function42();
virtual void Function43();
virtual void Function44();
virtual void Function45();
virtual DWORD GetClientInfoMgr();
virtual DWORD GetInterfaceManager();
virtual DWORD GetPlayerManager();
virtual void Function49();
virtual void Function50();
virtual void Function51();
virtual void Function52();
virtual void Function53();
virtual void Function54();
virtual void Function55();
virtual void Function56();
virtual void Function57();
virtual void Function58();
virtual void Function59();
virtual void Function60();
virtual void Function61();
virtual void Function62();
virtual void Function63();
virtual void Function64();
virtual void Function65();
virtual void Function66();
virtual void Function67();
virtual void Function68();
virtual cSFXMgr *GetSFXMgr();
};
struct __Object
{
public:
DWORD Unknown; //0x0000
float xBound1; //0x0004
float yBound1; //0x0008
float zBound1; //0x000C
float xBound2; //0x0010
float yBound2; //0x0014
float zBound2; //0x0018
char unknown28[172]; //0x001C
D3DXVECTOR3 Pos; //0x00C8
D3DXMATRIX Rot; //0x00D4
char unknown228[180]; //0x00E4
D3DXVECTOR3 Vel; //0x0198
};
class cPlayerInfo
{
public :
char _0x0000[4];
__int32 Index;
char _0x0008[8];
char pName[12];
char _0x001C[12];
__Object *Object;
__int32 pKills;
__int32 pDeaths;
char _0x0034[48];
__int32 pFTMission;
char _0x0068[8];
__int32 pTeam;
char _0x0074[4];
BYTE pIsDead;
char _0x0079[307];
__int32 pRank;
char _0x01B0[80];
__int32 pFTScore;
char _0x0204[4];
__int32 pFTLongestLife;
__int32 pFTKill;
char _0x0210[80];
cPlayerInfo *PlayerNext;
};
class cPlayerMgr
{
public :
char pad[24];
cClientWeaponMgr *WeaponMgr;
char unknown0[48];
float Pitch;
float Yaw;
float Roll;
char unknown3[220];
int *CameraObject;
};
class cCharacterFX
{
public :
char unk1[16];
int *Object;
char unk2[44];
int IsPlayer;
char unk3[40];
unsigned char Index;
char unknown112[8];
float fStartPitch;
float fStartYaw;
char unknown128[1224];
BYTE unk1287;
bool bIsDead;
bool bSpawnSheild;
BYTE unk5563;
char unknown1356[12];
int *hHitbox;
char unknown1372[96];
WORD wUnk;
WORD wHealth;
WORD wArmor;
};
class CILTDrawPrim
{
public :
virtual void function0();
virtual void function1();
virtual void function2();
virtual void function3();
virtual void function4();
virtual void function5();
virtual void function6();
virtual void function7();
virtual void function8();
virtual void function9();
virtual void function10();
virtual void function11();
virtual void function12();
virtual void function13();
virtual void function14();
virtual void function15();
virtual void function16();
virtual void function17();
virtual void function18();
virtual void function19();
virtual void function20();
virtual void function21();
virtual void function22();
virtual void function23();
virtual void function24();
virtual void function25();
virtual void function26();
virtual void function27();
virtual void function28();
virtual void function29();
virtual void function30();
virtual void function31();
virtual void function32();
virtual void function33();
virtual void function34();
virtual void function35();
virtual void function36();
virtual void function37();
virtual void function38();
virtual void function39();
virtual void function40();
virtual void function41();
virtual void function42();
virtual void function43();
virtual void function44();
virtual void function45();
virtual void function46();
virtual void function47();
virtual void function48();
virtual void function49();
virtual HRESULT Project(float x, float y, float z, D3DXVECTOR3 *pProjectOut, D3DXVECTOR3 *pTransformOut);
char unknown[17232];
D3DXMATRIX World;
D3DXMATRIX View;
D3DXMATRIX Projection;
};
bool WorldToScreen(LPDIRECT3DDEVICE9 pDevice, CONST D3DXVECTOR3 &vWorld, D3DXVECTOR3 *pScreen)
{
CILTDrawPrim *pDrawPrimitive = *(CILTDrawPrim **)DrawPrimitive;
D3DVIEWPORT9 D3DViewport = {0};
D3DXMATRIX matrixProjection, matrixView, matrixWorld;
pDevice->GetTransform(D3DTS_VIEW, &matrixView);
pDevice->GetTransform(D3DTS_PROJECTION, &matrixProjection);
pDevice->GetTransform(D3DTS_WORLD, &matrixWorld);
pDevice->GetViewport(&D3DViewport);
D3DXVec3Project(pScreen, &vWorld, &D3DViewport, &pDrawPrimitive->Projection, &pDrawPrimitive->View, &pDrawPrimitive->World);
return(pScreen->z < 1.0f);
}
FLOAT GetDistance(D3DXVECTOR3 Local, D3DXVECTOR3 Target)
{
FLOAT fResult[3];
SubtractVector(Target, Local, fResult);
return (sqrt((fResult[0] * fResult[0]) + (fResult[1] * fResult[1]) + (fResult[2] * fResult[2])) / 100);
}
VOID DrawHealthBars(INT x, INT y, WORD health, LPDIRECT3DDEVICE9 pDevice)
{
DWORD dwColor;
if(health > 100)
health = 100;
if(health > 75)
dwColor = 0xFF00FF00;
else if(health > 40)
dwColor = 0xFFFF9B00;
else
dwColor = 0xFFFF0000;
DWORD dwDrawWidth = health / 4;
if(dwDrawWidth <= 2)
dwDrawWidth = 4;
Menu.FillRGB(x - 1, y - 1, 27, 5, 0xFF000000, pDevice);
Menu.FillRGB(x, y, dwDrawWidth, 3, dwColor, pDevice);
}
VOID ESP(BOOL Names, BOOL Lines, BOOL Distances, BOOL Boxes, BOOL Warning, BOOL HealthBars, LPDIRECT3DDEVICE9 pDevice)
{
pDevice->SetRenderState(D3DRS_ZENABLE, FALSE);
INT CenterX = (GetSystemMetrics(0) / 2) - 1;
INT CenterY = (GetSystemMetrics(1) / 2) - 1;
CHAR CName[50], CDistance[50];
if((*(BYTE *)GameStatus == 1) && (Names || Lines || Distances || Boxes || Warning || HealthBars))
{
GetPlayerByIndex = (lpGetPlayerByIndex)PlayerByIndex;
unsigned long ulThis = *(unsigned long *)ClientInfoMgr;
GetLocalPlayer = (lpGetLocalPlayer)LocalPlayer;
cGameClientShell *pGameClientShell = *(cGameClientShell **)GCS;
for(INT i = 0; i < 24; i++)
{
cPlayerInfo *pLocal = GetLocalPlayer(ulThis);
cPlayerInfo *pPlayer = GetPlayerByIndex(ulThis, i, 0);
cCharacterFX *PlayerFX = (cCharacterFX *)pGameClientShell->GetSFXMgr()->SFXList[0x18].List[i];
if(pPlayer != 0 && pPlayer->Object != 0 && pPlayer->pIsDead == 0 && pLocal->pIsDead == 0)
{
D3DXVECTOR3 vPos, vFootScreen, vScreen;
vPos.x = pPlayer->Object->Pos.x;
vPos.y = pPlayer->Object->yBound2;
vPos.z = pPlayer->Object->Pos.z;
if(WorldToScreen(pDevice, vPos, &vScreen))
{
if(pPlayer->pTeam != pLocal->pTeam)
{
if(Names)
{
sprintf(CName, "%s", pPlayer->pName);
Main.Texto(vScreen.x, vScreen.y, Red, TCenter, Main.pFont, CName);
}
if(Lines)
{
Main.DrawLine(CenterX, CenterY, vScreen.x, vScreen.y, Red, pDevice);
}
if(Distances)
{
sprintf(CDistance, "%0.2f metros", GetDistance(pLocal->Object->Pos, pPlayer->Object->Pos));
Main.Texto(vScreen.x, vScreen.y + 15, Red, TCenter, Main.pFont, CDistance);
}
if(Boxes)
{
vPos.x = pPlayer->Object->Pos.x;
vPos.y = pPlayer->Object->yBound1;
vPos.z = pPlayer->Object->Pos.z;
if(WorldToScreen(pDevice, vPos, &vFootScreen))
{
INT BoxDist = INT(0.2f * (vFootScreen.y - vScreen.y));
#pragma warning(push)
D3DRECT rectBoxes[4] =
{
{vScreen.x - BoxDist, vScreen.y , vScreen.x - BoxDist + 1, vFootScreen.y},
{vScreen.x - BoxDist, vFootScreen.y, vScreen.x + BoxDist + 1, vFootScreen.y + 1},
{vScreen.x + BoxDist, vScreen.y , vScreen.x + BoxDist + 1, vFootScreen.y},
{vScreen.x - BoxDist, vScreen.y , vScreen.x + BoxDist, vScreen.y + 1}
};
#pragma warning(pop)
pDevice->Clear(4, rectBoxes, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Red, 1.0f, 0);
}
}
if(Warning)
{
if(GetDistance(pLocal->Object->Pos, pPlayer->Object->Pos) < 10.0f)
Main.Texto(CenterX, 100, Red, TCenter, Main.WarningFont, "Inimigo a menos de 10m");
}
if(HealthBars)
{
DrawHealthBars(vScreen.x - 7, vScreen.y - 5, (int)PlayerFX->wHealth, pDevice);
}
}
if(pPlayer->pTeam == pLocal->pTeam/* && pLocal->Index != PlayerFX->Index*/)
{
if(Names)
{
sprintf(CName, "%s", pPlayer->pName);
Main.Texto(vScreen.x, vScreen.y, Blue, TCenter, Main.pFont, CName);
}
if(Lines)
{
Main.DrawLine(CenterX, CenterY, vScreen.x, vScreen.y, Blue, pDevice);
}
if(Distances)
{
sprintf(CDistance, "%0.2f metros", GetDistance(pLocal->Object->Pos, pPlayer->Object->Pos));
Main.Texto(vScreen.x, vScreen.y + 15, Blue, TCenter, Main.pFont, CDistance);
}
if(Boxes)
{
vPos.x = pPlayer->Object->Pos.x;
vPos.y = pPlayer->Object->yBound1;
vPos.z = pPlayer->Object->Pos.z;
if(WorldToScreen(pDevice, vPos, &vFootScreen))
{
INT BoxDist = INT(0.2f * (vFootScreen.y - vScreen.y));
#pragma warning(push)
D3DRECT rectBoxes[4] =
{
{vScreen.x - BoxDist, vScreen.y , vScreen.x - BoxDist + 1, vFootScreen.y},
{vScreen.x - BoxDist, vFootScreen.y, vScreen.x + BoxDist + 1, vFootScreen.y + 1},
{vScreen.x + BoxDist, vScreen.y , vScreen.x + BoxDist + 1, vFootScreen.y},
{vScreen.x - BoxDist, vScreen.y , vScreen.x + BoxDist, vScreen.y + 1}
};
#pragma warning(pop)
pDevice->Clear(4, rectBoxes, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Blue, 1.0f, 0);
}
}
}
}
}
}
}
}
VOID VectorAngles(CONST FLOAT *fForward, FLOAT *fAngles)
{
FLOAT fTmp, fYaw, fPitch;
if(fForward[2] == 0 && fForward[0] == 0)
{
fYaw = 0;
if(fForward[2] > 0)
fPitch = 90;
else
fPitch = 270;
} else {
fYaw = (atan2(fForward[2], -fForward[0]) * 180.0f / M_PI) - 90;
if(fYaw < 0)
fYaw += 360.0f;
fTmp = sqrt(fForward[0] * fForward[0] + fForward[2] * fForward[2]);
fPitch = (atan2(fForward[1], fTmp) * 180.0f / M_PI);
if(fPitch < 0)
fPitch += 360.0f;
}
fAngles[PITCH] = -fPitch;
fAngles[YAW] = fYaw;
fAngles[ROLL] = 0;
}
VOID GetAngleToTarget(D3DXVECTOR3 vTargetPos, D3DXVECTOR3 vCameraPos, D3DXVECTOR3 &vFinalVector)
{
D3DXVECTOR3 vMidVector(vTargetPos.x - vCameraPos.x, vTargetPos.y - vCameraPos.y, vTargetPos.z - vCameraPos.z);
VectorAngles((FLOAT *)&vMidVector, (FLOAT *)&vFinalVector);
if(vFinalVector.x > 180.0f)
vFinalVector.x -= 360.0f;
else if(vFinalVector.x < -180.0f)
vFinalVector.x += 360.0f;
if(vFinalVector.y > 180.0f)
vFinalVector.y -= 360.0f;
else if(vFinalVector.y < -180.0f)
vFinalVector.y += 360.0f;
}
INT iGetBestPlayer()
{
FLOAT fNearest = (FLOAT)INT_MAX;
INT iAimAt = -1;
GetPlayerByIndex = (lpGetPlayerByIndex)PlayerByIndex;
unsigned long ulThis = *(unsigned long *)ClientInfoMgr;
GetLocalPlayer = (lpGetLocalPlayer)LocalPlayer;
for(INT i = 0; i < 16; i++)
{
D3DXVECTOR3 localPos, targetPos;
cPlayerInfo *pLocal = GetLocalPlayer(ulThis);
cPlayerInfo *pPlayer = GetPlayerByIndex(ulThis, i, 0);
if(pLocal != 0 && pPlayer != 0 && pLocal->Object != 0 && pPlayer->Object != 0 && pPlayer->pIsDead == 0 && pPlayer->Index != pLocal->Index)
{
if(pPlayer->pTeam != pLocal->pTeam)
{
localPos = pLocal->Object->Pos;
targetPos = pPlayer->Object->Pos;
if((GetDistance(localPos, targetPos) < fNearest))
{
iAimAt = i;
fNearest = (GetDistance(localPos, targetPos));
}
}
}
}
return iAimAt;
}
VOID DoAimbot(INT &var)
{
if((*(BYTE *)GameStatus == 1) && var && GetAsyncKeyState(VK_LBUTTON) < 0)
{
GetPlayerByIndex = (lpGetPlayerByIndex)PlayerByIndex;
unsigned long ulThis = *(unsigned long *)ClientInfoMgr;
GetLocalPlayer = (lpGetLocalPlayer)LocalPlayer;
cPlayerMgr *pPlayerManager = *(cPlayerMgr **)PlayerManager;
INT i = iGetBestPlayer();
if(i != -1)
{
cPlayerInfo *pLocal = GetLocalPlayer(ulThis);
cPlayerInfo *pPlayer = GetPlayerByIndex(ulThis, i, 0);
D3DXVECTOR3 enemyPos = pPlayer->Object->Pos, localPos = pLocal->Object->Pos, AimAngle;
GetAngleToTarget(enemyPos, localPos, AimAngle);
if(pLocal->pTeam != pPlayer->pTeam)
{
pPlayerManager->Yaw = DegToRad(AimAngle[YAW]);
pPlayerManager->Pitch = DegToRad(AimAngle[PITCH] + 1.0f);
}
}
}
}
#endif
Se poderem me ajudar, agradeço!