Olá galera, essa source code é bem simples, porém eu não vi algo semelhante postado ainda. Com esse método de ESP Boxes é possível ajustar o tamanho da esp do jogador.
//Funções de desenho da box.
VOID FillRGB( INT x, INT y, INT w, INT h, D3DCOLOR Color, LPDIRECT3DDEVICE9 pDevice )
{
D3DRECT rec = { x, y, x + w, y + h };
pDevice->Clear( 1, &rec, D3DCLEAR_TARGET, Color, 0, 0 );
}
VOID DrawBorder( INT x, INT y, INT w, INT h, INT px, D3DCOLOR BorderColor, LPDIRECT3DDEVICE9 pDevice )
{
FillRGB( x, ( y + h - px ), w, px, BorderColor, pDevice );
FillRGB( x, y, px, h, BorderColor, pDevice );
FillRGB( x, y, w, px, BorderColor, pDevice );
FillRGB( x + w - px, y, px, h, BorderColor, pDevice );
}
void DrawBBox( D3DXVECTOR3 Head, D3DXVECTOR3 Foot, float fSize, DWORD dwColor )
{
/* Source code original retirada da base do Gellin, postada em outro fórum em 2011. */
/* Valor dividido por 10, pois normalmente sliders ou funções de adição de itens,
Acrescentam de 1 em 1 o valor, sendo 1 / 10 = 0.1 . */
fSize /= 10.0f;
D3DXVECTOR3 Box = ( Head - Foot );
if( Box.y < 0 )
Box.y *= -1;
int BoxWidth = ( int ) Box.y * fSize; /* Valor original = 0.5f */.
int DrawX = ( int ) Head.x - ( BoxWidth / 2 ); /* Ponto médio de x */
int DrawY = ( int ) Head.y;
/*Caso queria usar sombreamento na box um método simples para isso é o
uso do código a baixo. */
/*DrawBorder( DrawX + 1, DrawY, BoxWidth, ( int ) Box.y, 1, 0xFF000000 );*/
DrawBorder( DrawX, DrawY, BoxWidth, ( int ) Box.y, 1, dwColor );
}
/* OBS: o ponto médio utilizado pelo o autor da source a cima ( Gellin ) para a centralização da box no corpo,
é a posição x da cabeça, no entanto caso você queira que o esp fique ainda mais bonito e ajustado ao corpo
do jogador, você pode utilizar como ponto médio a diferença da posição do braço esquerdo do jogador 'L Upper Arm' e do
braço direito do jogador 'R Upper Arm' */
Valor em 0.5:
Valor em 0.7: