VOID ESP(INT Names, INT Lines, INT Distances, INT Boxes, LPDIRECT3DDEVICE9 pDevice)
{
pDevice->SetRenderState(D3DRS_ZENABLE, FALSE);
INT CenterX = (GetSystemMetrics(0) / 2) - 1;
INT CenterY = (GetSystemMetrics(1) / 2) - 1;
CHAR CName[50], CDistance[50], CVida[50];
if((*(BYTE *)GameStatus == 1) && (Names || Lines || Distances || Boxes ))
{
GetPlayerByIndex = (lpGetPlayerByIndex)ADDR_PLAYERBYINDEX;
unsigned long ulThis = *(unsigned long *)ADDR_CLIENTINFOMGR;
GetLocalPlayer = (lpGetLocalPlayer)ADDR_LOCALPLAYER;
cGameClientShell *pGameClientShell = *(cGameClientShell **)ADDR_GCS;
for(INT i = 0; i < 24; i++)
{
PlayerInfo *pLocal = GetLocalPlayer(ulThis);
PlayerInfo *pPlayer = GetPlayerByIndex(ulThis, i, 0);
cCharacterFX *PlayerFX = (cCharacterFX *)pGameClientShell->GetSFXMgr()->SFXList[0x18].List[i];
if(pPlayer != 0 && pPlayer->Object != 0 && pPlayer->pIsDead == false && pLocal->pIsDead == false)
{
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);
DrawString(vScreen.x, vScreen.y, Vermelho, pFont, CName);
}
if(Lines)
{
DrawLine2(CenterX, CenterY, vScreen.x, vScreen.y, Vermelho, pDevice);
}
if(Distances)
{
sprintf(CDistance, "%0.0f M", GetDistance(pLocal->Object->Pos, pPlayer->Object->Pos));
DrawString(vScreen.x, vScreen.y + 23, Verde, 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[10] =
{
{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(10, rectBoxes, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Vermelho, 1.0f, 0);
}
}
}
if(pPlayer->pTeam == pLocal->pTeam)
{
if(Names)
{
sprintf(CName, "%s", pPlayer->pName);
DrawString(vScreen.x, vScreen.y, Verde, pFont, CName);
}
if(Lines)
{
DrawLine2(CenterX, CenterY, vScreen.x, vScreen.y, Verde, pDevice);
}
if(Distances)
{
sprintf(CDistance, "%0.0f M", GetDistance(pLocal->Object->Pos, pPlayer->Object->Pos));
DrawString(vScreen.x, vScreen.y + 23, Verde, 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[10] =
{
{vScreen.x - BoxDist, vScreen.y , vScreen.x - BoxDist + 2, vFootScreen.y},
{vScreen.x - BoxDist, vFootScreen.y, vScreen.x + BoxDist + 2, vFootScreen.y + 1},
{vScreen.x + BoxDist, vScreen.y , vScreen.x + BoxDist + 2, vFootScreen.y},
{vScreen.x - BoxDist, vScreen.y , vScreen.x + BoxDist, vScreen.y + 1}
};
#pragma warning(pop)
pDevice->Clear(10, rectBoxes, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Verde, 1.0f, 0);
}
}
}
}
}
}
}
}
void TeleKillFull(int Kill, LPDIRECT3DDEVICE9 pDevice)
{
DWORD posptr, PositionY;
GetPlayerByIndex = (lpGetPlayerByIndex)ADDR_PLAYERBYINDEX;
unsigned long ulThis = *(unsigned long *)ADDR_CLIENTINFOMGR;
GetLocalPlayer = (lpGetLocalPlayer)ADDR_LOCALPLAYER;
posptr = (DWORD) GetModuleHandle("ClientFX.fxd");
posptr += ClientFX;
memcpy(&PositionY, (VOID *) (posptr), 4);
for (int i = 0; i < 16; i++) {
PlayerInfo *pPlayer = GetPlayerByIndex(ulThis, i, 0);
PlayerInfo *pLocal = GetLocalPlayer(ulThis);
if (pPlayer != 0 && pPlayer->Object != 0 && pPlayer->pIsDead == false) {
if (Kill)
{
if (pPlayer->pTeam != pLocal->pTeam) {
Sleep(5);
*(FLOAT *) (PositionY + 0xC8) = (pPlayer->Object->Pos.x + 20.0f);
*(FLOAT *) (PositionY + 0xCC) = (pPlayer->Object->yBound2);
*(FLOAT *) (PositionY + 0xD0) = (pPlayer->Object->Pos.z);
}
}
}
}
}
void TeleKillFull(int Kill, LPDIRECT3DDEVICE9 pDevice)
{
DWORD posptr, PositionY;
GetPlayerByIndex = (lpGetPlayerByIndex)PlayerByIndex;
unsigned long ulThis = *(unsigned long *)ClientInfoMgr;
GetLocalPlayer = (lpGetLocalPlayer) LocalPlayer;
posptr = (DWORD) GetModuleHandle("ClientFX.fxd");
posptr += ClientFX;
memcpy(&PositionY, (VOID *) (posptr), 4);
for (int i = 0; i < 16; i++)
{
cPlayerInfo *pPlayer = GetPlayerByIndex(ulThis, i, 0);
cPlayerInfo *pLocal = GetLocalPlayer(ulThis);
if (pPlayer != 0 && pPlayer->Object != 0 && pPlayer->pIsDead == 0)
{
if (Kill)
{
if (pPlayer->pTeam != pLocal->pTeam) {
Sleep(1);
*(FLOAT *) (PositionY + 0xC8) = (pPlayer->Object->Pos.x + 25.0f);
*(FLOAT *) (PositionY + 0xCC) = (pPlayer->Object->yBound2);
*(FLOAT *) (PositionY + 0xD0) = (pPlayer->Object->Pos.z);
}
}
}
}
}
#define M_PI 3.14159265358979323846f
#define DegToRad(degree) ((degree) * (M_PI / 180.0f))
#define PITCH 0
#define YAW 1
#define ROLL 2
#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:
DWORD unknown1; //0x0000
DWORD* List; //0x0004
DWORD unknown2; //0x0008
__int32 Num; //0x000C
};//Size=0x0010
class cSFXMgr
{
public:
cSFXList SFXList[0x3D]; //0x0000
};//Size=0x00F4
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 void Function46();
virtual void Function47();
virtual void Function48();
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 DWORD GetClientInfoMgr();
virtual DWORD GetInterfaceManager();
virtual DWORD GetPlayerManager();
virtual void Function60();
virtual void Function61();
virtual void Function62();
virtual void Function63();
virtual void Function64();
virtual void Function65();
virtual cSFXMgr* GetSFXMgr();
};
struct __Object
{
public:
DWORD Unknown;
float xBound1;
float yBound1;
float zBound1;
float xBound2;
float yBound2;
float zBound2;
char unknown0[172];
D3DXVECTOR3 Pos;
D3DXMATRIX Rot; //0x00D4
char unknown1[180];
D3DXMATRIX Vel; //0x00D4
char unknown2[4];
D3DXVECTOR3 origin;
};
class cPlayerInfo
{
public:
__int32 pPing; //0x0000
__int32 Index; //0x0004
__int32 ID; //0x0008
char unknown2[8]; //0x000C
char pName[20]; //0x0014
char unknown3[4]; //0x0028
__Object *Object; //0x002C
__int32 Kills; //0x0030
__int32 Deaths; //0x0034
char unknown4[44]; //0x0038
__int32 HeadShots; //0x0064
char unknown5[12]; //0x0068
__int32 pTeam; //0x0074
char unknown6[4]; //0x0078
BYTE pIsDead; //0x007C
char unknown7[655]; //0x007D
cPlayerInfo* PlayerPrev; //0x0300
cPlayerInfo* PlayerNext; //0x0304
};
class cPlayerMgr
{
public:
char _0x0000[24];
cClientWeaponMgr * WeaponMgr; //0x0018
char _0x001C[16];
__int32 playerFlags; //0x002C
char _0x0030[24];
float Pitch; //0x0048
float Yaw; //0x004C
float Roll; //0x0050
char _0x0054[236];
__int32 * CameraObject; //0x0140
char _0x0144[60];
};//Size=0x0180
class CILTDrawPrim
{
public:
char unknown1[16184]; //0x0000
D3DVIEWPORT9 ViewPort; //0x3F38
D3DXMATRIX World; //0x3F50
D3DXMATRIX View; //0x3F90
D3DXMATRIX Projection; //0x3FD0
};
class cCharacterFX//
{
public:
char _0x0000[16];
__int32 * Object; //0x0010
char _0x0014[44];
__int32 IsPlayer; //0x0040
char _0x0044[1293];
BYTE bIsDead; //0x0551
BYTE bSpawnSheild; //0x0552
char _0x0553[41];
__int32 hHitbox; //0x057C
char _0x0580[60];
WORD wHealth; //0x05BC
WORD wArmor; //0x05BE
char _0x05C0[44];
__int32 Index; //0x05EC
char _0x05F0[2640];
};//Size=0x1040
VOID ESP(INT Names, INT Lines, INT Distances, INT Boxes, LPDIRECT3DDEVICE9 pDevice)
{
pDevice->SetRenderState(D3DRS_ZENABLE, FALSE);
CHAR CName[50], CDistance[50];
if ((*(BYTE *) GameStatus == 1) && (Names || Lines || Distances || Boxes))
{
GetPlayerByIndex = (lpGetPlayerByIndex) PlayerByIndex;
unsigned long ulThis = *(unsigned long *) ClientInfoMgr;
GetLocalPlayer = (lpGetLocalPlayer) LocalPlayer;
cGameClientShell *pGameClientShell = *(cGameClientShell **) GCS;
for (INT i = 0; i < 24; i++)
{
PlayerInfo *pLocal = GetLocalPlayer(ulThis);
PlayerInfo *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);
Directx.Texto(vScreen.x, vScreen.y, Red, TCenter, Directx.pFont, CName);
}
if (Lines)
{
DrawLine(GetSystemMetrics(0) / 2, GetSystemMetrics(1), vScreen.x, vScreen.y, NULL, Red);
}
if (Distances)
{
sprintf(CDistance, "%0.0f M", GetDistance(pLocal->Object->Pos, pPlayer->Object->Pos));
Directx.Texto(vScreen.x, vScreen.y + 23, Red, TCenter, Directx.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[10] =
{
{ 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(10, rectBoxes, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Blue, 1.0f, 0);
}
}
}
if (pPlayer->pTeam == pLocal->pTeam && pPlayer->index != pLocal->index)
{
if (Names)
{
sprintf(CName, "%s", pPlayer->pName);
Directx.Texto(vScreen.x, vScreen.y, Yellow, TCenter, Directx.pFont, CName);
}
if (Lines)
{
DrawLine(GetSystemMetrics(0) / 2, GetSystemMetrics(1), vScreen.x, vScreen.y, NULL, White);
}
if (Distances)
{
sprintf(CDistance, "%0.0f M", GetDistance(pLocal->Object->Pos, pPlayer->Object->Pos));
Directx.Texto(vScreen.x, vScreen.y + 23, Red, TCenter, Directx.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[10] =
{
{ vScreen.x - BoxDist, vScreen.y, vScreen.x - BoxDist + 2, vFootScreen.y },
{ vScreen.x - BoxDist, vFootScreen.y, vScreen.x + BoxDist + 2, vFootScreen.y + 1 },
{ vScreen.x + BoxDist, vScreen.y, vScreen.x + BoxDist + 2, vFootScreen.y },
{ vScreen.x - BoxDist, vScreen.y, vScreen.x + BoxDist, vScreen.y + 1 }
};
#pragma warning(pop)
pDevice->Clear(10, rectBoxes, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Yellow, 1.0f, 0);
}
}
}
}
}
}
}
}
void cESP::TeleKill( int OnOff, int AimAtTeam, int SpawnCheck )
{
if( OnOff > 0 && !local.bDead )
{
if( GetAsyncKeyState( menu->iTeleKey ) < 0 )
{
cSFXMgr* SFXMgr = engine->GetGameClientShell()->GetSFXMgr();
if( engine->ValidPointer( SFXMgr ) )
{
for ( int i = 0; i < SFXMgr->SFXList[SFX_CHARACTER].Num; i++ )
{
cCharacterFX* fx = (cCharacterFX*)SFXMgr->SFXList[SFX_CHARACTER].List[i];
if( engine->ValidPointer( fx ) && engine->ValidPointer( fx->Object ) )
{
Transform HeadTransform;
unsigned int HeadResult = engine->GetLTModel()->GetNodeTransform( fx->Object, 8, &HeadTransform, true );
if( HeadResult != 0 || local.Object == fx->Object )
continue;
if( local.iGameMode == 5 )
{
if( !fx->IsPlayer )
continue;
engine->SetLocalPlayerPosition( HeadTransform.Pos );
}
else
{
c_player* client_info = engine->GetClientInfoMgr()->GetClientByID( fx->Index );
if( engine->ValidPointer( client_info ) && !client_info->isDead )
{
if( AimAtTeam == 0 )
if( client_info->TeamID == local.iTeam )
continue;
if( SpawnCheck == 1 )
if( esp->Players[i].bSpawnShield )
continue;
if( client_info->ClientID == local.iIndex )
continue;
engine->SetLocalPlayerPosition( HeadTransform.Pos );
}
}
}
}
}
}
}
}