if (IsVisible(GetBonePosition(Me->Object, 6), GetBonePosition(TargetPlayer->Object, 6)) && isValidClient(TargetPlayer) &&IsRemoteKey && GetBonePosition(TargetPlayer->Object ,6))
(IsVisible(GetBonePosition(Me->Object, 2), GetBonePosition(TargetPlayer->Object, 2))
int CSilentAim::FindTarget()
{
int besttarget = -1;
float MaxDistance = 0xFFFFFF;
float ScreenX = E::Visuals->Screen.Width / 2;
float ScreenY = E::Visuals->Screen.Height / 2;
if (!this->IsValidLocal())
return besttarget;
for (int i = 0; i < IEngineClient::Singleton()->GetIClientShellStub()->GetMaxPlayer(); i++)
{
ICPlayerMgr* Entity = IEngineClient::Singleton()->GetIClientShellStub()->GetPlayerByUserId(i);
if (E::Remote->IsInvalidEntity(Entity))
continue;
if (Vars.Remote.FriendlyFire)
{
if (ICRoomMgr::Singleton()->GetRoomManager()->GetRoomInfo()->IsPlayerIn_ZombieMode())
{
if (Entity->IsZombie())
continue;
}
else
{
if (ICRoomMgr::Singleton()->GetRoomManager()->GetRoomInfo()->IsPlayerIn_BattleRoyale_Mode())
{
// [ BATTLE ROYALE MODE ]
if (ICRoomMgr::Singleton()->GetRoomManager()->GetRoomInfo()->IsPlayerIn_BattleRoyale_Solo())
{
// [ SOLO MODE ]
// no check for team cause all player is enemy
}
else
{
// [ TEAM and SQUAD ]
if (Entity->IsTeam())
continue;
}
}
else
{
// [ NORMAL MODES ]
if (Entity->IsTeam())
continue;
}
}
}
// [ CAMERA POSITION ]
D3DXVECTOR3 Local = ((IClientShellStub *)IEngineClient::Singleton()->GetIClientShellStub()->GetBaseAddress())->GetPlayerCamera()->GetCameraPos();
//D3DXVECTOR3 Local = G::g_pPlayerMgr->GetHeadPosition();
if (Vars.Remote.Silent)
{
if (Vars.Remote.VisibleCheck)
{
D3DXVECTOR3 Head = Entity->GetHeadPosition();
if (D::WorldToScreen(&Head))
{
if (Entity->IsVisible(MBoneNodes::M_BONE_HEAD))
{
// [ CROSSHAIR ]
float Tmp = M::Crosshair(Head.x, Head.y, ScreenX, ScreenY);
if (Vars.Remote.TargetMethod == TargetMode::DISTANCE)
Tmp = M::Distance(Local, Entity->GetOrigin()) / 100;
if (Tmp < MaxDistance)
{
MaxDistance = Tmp;
besttarget = i;
}
}
}
}
else
{
D3DXVECTOR3 Head = Entity->GetHeadPosition();
if (D::WorldToScreen(&Head))
{
// [ CROSSHAIR ]
float Tmp = M::Crosshair(Head.x, Head.y, ScreenX, ScreenY);
if (Vars.Remote.TargetMethod == TargetMode::DISTANCE)
Tmp = M::Distance(Local, Entity->GetOrigin()) / 100;
if (Tmp < MaxDistance)
{
MaxDistance = Tmp;
besttarget = i;
}
}
}
}
else
{
if (this->Allow360())
{
if (Vars.Remote.VisibleCheck)
{
D3DXVECTOR3 Head = Entity->GetHeadPosition();
if (D::WorldToScreen(&Head))
{
if (Entity->IsVisible(MBoneNodes::M_BONE_HEAD))
{
float Tmp = M::Distance(Local, Entity->GetOrigin()) / 100;
if (Tmp < MaxDistance)
{
MaxDistance = Tmp;
besttarget = i;
}
}
}
}
else
{
// 360
float Tmp = M::Distance(Local, Entity->GetOrigin()) / 100;
if (Tmp < MaxDistance)
{
MaxDistance = Tmp;
besttarget = i;
}
}
}
else
{
if (Vars.Remote.VisibleCheck)
{
D3DXVECTOR3 Head = Entity->GetHeadPosition();
if (D::WorldToScreen(&Head))
{
if (Entity->IsVisible(MBoneNodes::M_BONE_HEAD))
{
// [ CROSSHAIR ]
float Tmp = M::Crosshair(Head.x, Head.y, ScreenX, ScreenY);
if (Vars.Remote.TargetMethod == TargetMode::DISTANCE)
Tmp = M::Distance(Local, Entity->GetOrigin()) / 100;
if (Tmp < MaxDistance)
{
MaxDistance = Tmp;
besttarget = i;
}
}
}
}
else
{
D3DXVECTOR3 Head = Entity->GetHeadPosition();
if (D::WorldToScreen(&Head))
{
// [ CROSSHAIR ]
float Tmp = M::Crosshair(Head.x, Head.y, ScreenX, ScreenY);
if (Vars.Remote.TargetMethod == TargetMode::DISTANCE)
Tmp = M::Distance(Local, Entity->GetOrigin()) / 100;
if (Tmp < MaxDistance)
{
MaxDistance = Tmp;
besttarget = i;
}
}
}
}
}
}
if (Vars.Remote.TargetMark)
{
if (besttarget > -1)
{
ICPlayerMgr* Entity = IEngineClient::Singleton()->GetIClientShellStub()->GetPlayerByUserId(besttarget);
if (!E::Remote->IsInvalidEntity(Entity))
{
D3DXVECTOR3 Mark = Entity->GetHeadPosition();
if (D::WorldToScreen(&Mark))
D::DrawLine(ScreenX, 0, Mark.x, Mark.y, 1, White, I::pDevice);
}
}
}
return besttarget;
}
bool __cdecl ICPlayerMgr::IsVisible(int bone)
{
IntersectQuery iQuery;
IntersectInfo iInfo;
memset(&iQuery, 0, sizeof(iQuery));
memset(&iInfo, 0, sizeof(iInfo));
iQuery.From = ((IClientShellStub *)I::ClientShellStub->GetBaseAddress())->GetPlayerCamera()->GetCameraPos();
iQuery.To = this->GetBonePosition(bone);
return !((bool(WINAPIV *)(IntersectQuery *, IntersectInfo *))offsets.m_IntersectSegment)(&iQuery, &iInfo);
}
bool ICPlayerMgr::IsEntireVisible()
{
for (auto i = 0; i < 29; i++)
{
if (!this->IsVisible(i))
return false;
}
return true;
}