Code:
//08/10/2013
#define DegToRad( degree ) ( (degree) * (3.141592654f / 180.0f) )
#define PITCH 0
#define YAW 1
int AimJogador = -1;
int AimBone = -1;
bool AimRobo = false;
void VectorAngles( const float* forward, float* angles )
{
float tmp, yaw, pitch;
if( forward[2] == 0 && forward[0] == 0 )
{
yaw = 0;
if( forward[2] > 0 )
pitch = 90;
else
pitch = 270;
}
else
{
yaw = ( atan2( forward[2], -forward[0] ) * 180 / M_PI )-90;
if( yaw < 0 )
yaw += 360;
tmp = sqrt( forward[0] * forward[0] + forward[2] * forward[2] );
pitch = ( atan2( forward[1], tmp) * 180 / M_PI );
if( pitch < 0 )
pitch += 360;
}
angles[0] = -pitch;
angles[1] = yaw;
angles[2] = 0;
}
void GetAngleToTarget(D3DXVECTOR3 vTargetPos, D3DXVECTOR3 vCameraPos, D3DXVECTOR3& vAngles)
{
D3DXVECTOR3 vDelta;
vDelta.x = vTargetPos.x - vCameraPos.x;
vDelta.y = vTargetPos.y - vCameraPos.y;
vDelta.z = vTargetPos.z - vCameraPos.z;
VectorAngles( (float*)&vDelta, (float*)&vAngles );
if( vAngles.x > 180.0f )
vAngles.x -= 360.0f;
else if( vAngles.x < -180.0f )
vAngles.x += 360.0f;
if( vAngles.y > 180.0f )
vAngles.y -= 360.0f;
else if( vAngles.y < -180.0f )
vAngles.y += 360.0f;
}
float AngleNormalize(float angle)
{
while( angle < -180 ) angle += 360;
while( angle > 180 ) angle -= 360;
return angle;
}
bool FOV(D3DXVECTOR3 Camera, D3DXVECTOR3 Target)
{
if(Caixa[5][14].Ativo)
return true;
float angle = 360.0f;
if(Caixa[5][12].Ativo)
angle = 45.0f;
else if(Caixa[5][13].Ativo)
angle = 180.0f;
else if(Caixa[5][14].Ativo)
angle = 360.0f;
angle /= 2;
D3DXVECTOR3 newAngles( 0, 0, 0 );
D3DXVECTOR3 curAngles( 0, 0, 0 );
GetAngleToTarget( Target, Camera, newAngles );
newAngles[YAW] = AngleNormalize( newAngles[YAW] );
newAngles[PITCH] = AngleNormalize( newAngles[PITCH] );
curAngles[YAW] = AngleNormalize( D3DXToDegree( pPlayerManager->Yaw ) );
curAngles[PITCH] = AngleNormalize( D3DXToDegree( pPlayerManager->Pitch ) );
if( newAngles[YAW] >= ( curAngles[YAW] - angle ) &&
newAngles[YAW] <= ( curAngles[YAW] + angle ) &&
newAngles[PITCH] >= ( curAngles[PITCH] - angle ) &&
newAngles[PITCH] <= ( curAngles[PITCH] + angle ) )
return true;
return false;
}
int AimJogadores()
{
double fNearest = (float)INT_MAX;
int iAimAt = -1;
int tipo;
for(int i = 0; i < 24; i++)
{
if(bValidObject(i))
{
if(Players[i].bIsDead)
continue;
if(Caixa[5][1].Ativo && !Caixa[5][2].Ativo && Players[i].Charector->pTeam == local.iTeam)
continue;
if(Caixa[5][2].Ativo && !Caixa[5][1].Ativo && Players[i].Charector->pTeam != local.iTeam)
continue;
if(Caixa[5][4].Ativo && Players[i].bSpawnShield)
continue;
int Bone;
do
{
Bone = rand() % 14 + 1;
}
while(!Caixa[10][Bone].Ativo);
int NodeID = 0;
Transform NodeFX1;
Transform NodeFX2;
pLTModel->GetNodeTransform(Players[i].SFXOBJ->Object, 44, &NodeFX1, true);
pLTModel->GetNodeTransform(Players[i].SFXOBJ->Object, 45, &NodeFX2, true);
if(PegarDistancia(NodeFX1.Pos, NodeFX2.Pos) > 21)
{
switch(Bone)
{
case 1: NodeID = 8; break;
case 2: NodeID = 7; break;
case 3: NodeID = 25; break;
case 4: NodeID = 12; break;
case 5: NodeID = 26; break;
case 6: NodeID = 13; break;
case 7: NodeID = 27; break;
case 8: NodeID = 14; break;
case 9: NodeID = 6; break;
case 10: NodeID = 3; break;
case 11: NodeID = 44; break;
case 12: NodeID = 40; break;
case 13: NodeID = 45; break;
case 14: NodeID = 41; break;
default: NodeID = 8;
}
}
else
{
switch(Bone)
{
case 1: NodeID = 8; break;
case 2: NodeID = 7; break;
case 3: NodeID = 34; break;
case 4: NodeID = 21; break;
case 5: NodeID = 35; break;
case 6: NodeID = 22; break;
case 7: NodeID = 36; break;
case 8: NodeID = 23; break;
case 9: NodeID = 6; break;
case 10: NodeID = 3; break;
case 11: NodeID = 55; break;
case 12: NodeID = 51; break;
case 13: NodeID = 56; break;
case 14: NodeID = 52; break;
default: NodeID = 8;
}
}
Transform NodeFX;
pLTModel->GetNodeTransform(Players[i].SFXOBJ->Object, NodeID, &NodeFX, true);
if(NodeID == 8)
NodeFX.Pos.y += 5.8f;
if(!FOV(local.CameraPos, NodeFX.Pos))
continue;
if(Caixa[5][3].Ativo && !IsVisible(NodeFX.Pos))
continue;
if(Caixa[5][6].Ativo)
{
if(tipo == 1)
fNearest = (float)INT_MAX;
tipo = 0;
D3DXVECTOR3 NodeTela(0, 0, 0);
WorldToScreen(g_pDevice, NodeFX.Pos, &NodeTela);
D3DXVECTOR3 Pos;
Pos.x = NodeTela.x - (Resolucao.x / 2);
Pos.y = NodeTela.y - (Resolucao.y / 2);
if(Pos.x < 0)
Pos.x *= -1;
if(Pos.y < 0)
Pos.y *= -1;
/*D3DXVECTOR3 Screen((float)(Resolucao.x / 2), (float)(Resolucao.y / 2), 0.0f);
D3DXVECTOR3 Pos = ( NodeFX.Pos - Screen );*/
//double Dist = ( ( Pos.x * Pos.x ) + ( Pos.y * Pos.y ) + ( Pos.z * Pos.z ) );
double Dist = (Pos.x + Pos.y);
if( Dist < fNearest )
{
fNearest = Dist;
iAimAt = i;
AimBone = NodeID;
AimRobo = false;
}
}
else if(Caixa[5][7].Ativo)
{
if(tipo == 0)
fNearest = (float)INT_MAX;
tipo = 1;
float Distancia = PegarDistancia(local.CameraPos, NodeFX.Pos) / 48;
if( Distancia < fNearest )
{
fNearest = Distancia;
iAimAt = i;
AimBone = NodeID;
AimRobo = false;
}
}
}
}
if(Caixa[5][1].Ativo && local.iGameMode == 5)
{
cSFXMgr* SFXMgr = pGameClientShell->GetSFXMgr();
if(ValidPointer(SFXMgr))
{
for(int i = 0; i < SFXMgr->SFXList[0x18].Num; i++)
{
cCharacterFX* fx = (cCharacterFX*)SFXMgr->SFXList[0x18].List[i];
if(ValidPointer(fx) && ValidPointer(fx->Object))
{
if(!fx->IsPlayer)
{
int Bone;
do
{
Bone = rand() % 14 + 1;
}
while(!Caixa[10][Bone].Ativo);
int NodeID = 0;
Transform NodeFX1;
Transform NodeFX2;
pLTModel->GetNodeTransform(fx->Object, 44, &NodeFX1, true);
pLTModel->GetNodeTransform(fx->Object, 45, &NodeFX2, true);
if(PegarDistancia(NodeFX1.Pos, NodeFX2.Pos) > 21)
{
switch(Bone)
{
case 1: NodeID = 8; break;
case 2: NodeID = 7; break;
case 3: NodeID = 25; break;
case 4: NodeID = 12; break;
case 5: NodeID = 26; break;
case 6: NodeID = 13; break;
case 7: NodeID = 27; break;
case 8: NodeID = 14; break;
case 9: NodeID = 6; break;
case 10: NodeID = 3; break;
case 11: NodeID = 44; break;
case 12: NodeID = 40; break;
case 13: NodeID = 45; break;
case 14: NodeID = 41; break;
default: NodeID = 8;
}
}
else
{
switch(Bone)
{
case 1: NodeID = 8; break;
case 2: NodeID = 7; break;
case 3: NodeID = 34; break;
case 4: NodeID = 21; break;
case 5: NodeID = 35; break;
case 6: NodeID = 22; break;
case 7: NodeID = 36; break;
case 8: NodeID = 23; break;
case 9: NodeID = 6; break;
case 10: NodeID = 3; break;
case 11: NodeID = 55; break;
case 12: NodeID = 51; break;
case 13: NodeID = 56; break;
case 14: NodeID = 52; break;
default: NodeID = 8;
}
}
Transform NodeFX;
pLTModel->GetNodeTransform(fx->Object, NodeID, &NodeFX, true);
if(NodeID == 8)
NodeFX.Pos.y += 5.8f;
if(!FOV(local.CameraPos, NodeFX.Pos))
continue;
if(Caixa[5][3].Ativo && !IsVisible(NodeFX.Pos))
continue;
if(Caixa[5][6].Ativo)
{
if(tipo == 1)
fNearest = (float)INT_MAX;
tipo = 0;
D3DXVECTOR3 NodeTela(0, 0, 0);
WorldToScreen(g_pDevice, NodeFX.Pos, &NodeTela);
D3DXVECTOR3 Pos;
Pos.x = NodeTela.x - (Resolucao.x / 2);
Pos.y = NodeTela.y - (Resolucao.y / 2);
if(Pos.x < 0)
Pos.x *= -1;
if(Pos.y < 0)
Pos.y *= -1;
/*D3DXVECTOR3 Screen((float)(Resolucao.x / 2), (float)(Resolucao.y / 2), 0.0f);
D3DXVECTOR3 Pos = ( NodeFX.Pos - Screen );*/
//double Dist = ( ( Pos.x * Pos.x ) + ( Pos.y * Pos.y ) + ( Pos.z * Pos.z ) );
double Dist = (Pos.x + Pos.y);
if( Dist < fNearest )
{
fNearest = Dist;
iAimAt = i;
AimBone = NodeID;
AimRobo = true;
}
}
else if(Caixa[5][7].Ativo)
{
if(tipo == 0)
fNearest = (float)INT_MAX;
tipo = 1;
float Distancia = PegarDistancia(local.CameraPos, NodeFX.Pos) / 48;
if( Distancia < fNearest )
{
fNearest = Distancia;
iAimAt = i;
AimBone = NodeID;
AimRobo = true;
}
}
}
}
}
}
}
return iAimAt;
}
void Aimbot(LPDIRECT3DDEVICE9 pDevice)
{
if(Caixa[11][1].Ativo ^ ((Caixa[11][2].Ativo && (GetAsyncKeyState(VK_LBUTTON)<0)) ||
(Caixa[11][3].Ativo && (GetAsyncKeyState(VK_RBUTTON)<0)) ||
(Caixa[11][4].Ativo && (GetAsyncKeyState(VK_MBUTTON)<0)) ||
(Caixa[11][5].Ativo && (GetAsyncKeyState(VK_CAPITAL)<0)) ||
(Caixa[11][6].Ativo && (GetAsyncKeyState(VK_SHIFT)<0)) ||
(Caixa[11][7].Ativo && (GetAsyncKeyState(VK_CONTROL)<0)) ||
(Caixa[11][8].Ativo && (GetAsyncKeyState(VK_MENU)<0)) ||
(Caixa[11][9].Ativo && (GetAsyncKeyState(VK_HOME)<0)) ||
(Caixa[11][10].Ativo && (GetAsyncKeyState(VK_END)<0))
))
{
if(AimJogador == -1)
{
COR_MIRA = Black/*ForestGreen*/;
AimJogador = AimJogadores();
}
if(AimJogador != -1)
{
if(!AimRobo)
{
if(bValidObject(AimJogador) && !Players[AimJogador].bIsDead)
{
Transform NodeFX;
pLTModel->GetNodeTransform(Players[AimJogador].SFXOBJ->Object, AimBone, &NodeFX, true);
if(AimBone == 8)
NodeFX.Pos.y += 5.8f;
if(Caixa[5][3].Ativo && !IsVisible(NodeFX.Pos))
{
AimJogador = -1;
return;
}
D3DXVECTOR3 Angles;
GetAngleToTarget(NodeFX.Pos, local.CameraPos, Angles);
pPlayerManager->Yaw = DegToRad(Angles[YAW]);
pPlayerManager->Pitch = DegToRad(Angles[PITCH]);
COR_MIRA = Red;
if(Caixa[5][9].Ativo)
{
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
}
else
AimJogador = -1;
}
else
{
cCharacterFX* fx = (cCharacterFX*)pGameClientShell->GetSFXMgr()->SFXList[0x18].List[AimJogador];
if(ValidPointer(fx) && ValidPointer(fx->Object))
{
if(!fx->IsPlayer)
{
Transform NodeFX;
pLTModel->GetNodeTransform(fx->Object, AimBone, &NodeFX, true);
if(AimBone == 8)
NodeFX.Pos.y += 5.8f;
if(Caixa[5][3].Ativo && !IsVisible(NodeFX.Pos))
{
AimJogador = -1;
return;
}
D3DXVECTOR3 Angles;
GetAngleToTarget(NodeFX.Pos, local.CameraPos, Angles);
pPlayerManager->Yaw = DegToRad(Angles[YAW]);
pPlayerManager->Pitch = DegToRad(Angles[PITCH]);
COR_MIRA = Red;
if(Caixa[5][9].Ativo)
{
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
}
else
AimJogador = -1;
}
else
AimJogador = -1;
}
}
}
else
{
AimJogador = -1;
COR_MIRA = Black/*ForestGreen*/;
}
}