So i am very new to coding and i tried making a low fov aimbot for csgo and i have two questions.

1. Anyone that is good at coding want to check my code to see if it is correct
2. In what program do i put the code in to make it fully undetected

Thank you very much!

 
CODE
#include "Aimbot.h"
#include "Timer.h"

bool CAimbot::IsAimKeyPressed(void)
{
static auto bAimKeyPressed = false;
static auto AimTime = Timer();
auto iTime = g_CVars.GetCVar("aim_time")->GetInt();

if (g_CVars.GetCVar("aim_autoshoot")->GetBool())
return true;

if (iTime > 0)
{
if (GetKeyState(1) & 0x8000)
bAimKeyPressed = true;
else bAimKeyPressed = false;

AimTime.SetTime((DWORD)iTime);

if (bAimKeyPressed)
AimTime.Run();

if (AimTime.finished())
bAimKeyPressed = false;
}
else
{
if (GetKeyState(1) & 0x8000)
bAimKeyPressed = true;
else bAimKeyPressed = false;
}

if (iTime > 0 && !bAimKeyPressed && !(GetKeyState(1) & 0x8000))
AimTime.Reset();

return bAimKeyPressed;
}

bool CAimbot::TraceTargetHitpoint(ValveSDK::CBaseEntity * pLocalEntity, ValveSDK::CBaseCombatWeapon* pLocalWeapon, ValveSDK::CBaseEntity* pBaseEntity, ValveSDK::Vector& vecHitPoint)
{
auto flMinDamage = g_CVars.GetCVar("aim_autowall_damage")->GetFloat();
auto vecCurPos = pLocalEntity->GetEyePosition();

ValveSDK::Vector vecHit;
auto bDefaultHitbox = g_pTools->GetHitboxVector(pBaseEntity, GetHitboxIndex(pLocalEntity), vecHit);
if (bDefaultHitbox)
{
auto bIsVisible = g_pTools->IsVisible(vecCurPos, vecHit, pLocalEntity, pBaseEntity);
if (bIsVisible)
{
vecHitPoint = vecHit;
return true;
}

auto flDamage = 0.f;
auto bPenetrate = (g_CVars.GetCVar("aim_autowall")->GetBool()) ? g_pTools->PenetrateWall(pLocalEntity, pLocalWeapon, vecHit, flDamage) : false;

if (bPenetrate && flDamage >= flMinDamage)
{
vecHitPoint = vecHit;
return true;
}
}

auto iHitScan = g_CVars.GetCVar("aim_hitscan")->GetInt();
if (iHitScan > 0)
{
ValveSDK::matrix3x4 BoneMatrixArray[128];
if (!pBaseEntity->SetupBones(BoneMatrixArray, 128, 0x100, 0.f))
return false;

for (int i = 0; i < 44; i++)
{
ValveSDK::Vector vecHitscan;
g_pTools->MatrixToVector(BoneMatrixArray[i], vecHitscan);

if (g_pTools->IsVisible(vecCurPos, vecHitscan, pLocalEntity, pBaseEntity))
{
vecHitPoint = vecHitscan;
return true;
}

if (iHitScan == 2)
{
auto flDamage = 0.f;
auto bPenetrate = g_pTools->PenetrateWall(pLocalEntity, pLocalWeapon, vecHitscan, flDamage);

if (bPenetrate && flDamage >= flMinDamage)
{
vecHitPoint = vecHitscan;
return true;
}
}
}
}

return false;
}

int CAimbot::GetHitboxIndex(ValveSDK::CBaseEntity* pLocalEntity)
{
auto iSmart = g_CVars.GetCVar("aim_smart")->GetInt();
if (iSmart > 0 && pLocalEntity->GetShotsFired() + 1 > iSmart)
return g_CVars.GetCVar("aim_smart_hitbox")->GetInt();

return g_CVars.GetCVar("aim_hitbox")->GetInt();
}

int CAimbot::GetTargetData(ValveSDK::CBaseEntity* pLocalEntity, ValveSDK::CBaseCombatWeapon* pWeapon)
{
auto flMax = 99.f; //9999.f;
auto iBestTargetIndex = -1.f;
auto iAimAt = g_CVars.GetCVar("aim_at")->GetInt();

ValveSDK::QAngle qClientViewAngles;
g_pEngine->GetViewAngles(qClientViewAngles);

ValveSDK::Vector vForward;
g_pTools->AngleVectors(qClientViewAngles, vForward);

for (int i = 1; i < g_pEngine->GetMaxClients(); i++)
{
auto pBaseEntity = g_pEntityList->GetBaseEntity(i);
if (!pBaseEntity)
continue;

if (!pBaseEntity->IsValid(true))
continue;

if (iAimAt == 0 && pLocalEntity->GetTeam() == pBaseEntity->GetTeam())
continue;
else if (iAimAt == 1 && pLocalEntity->GetTeam() != pBaseEntity->GetTeam())
continue;

auto flFoV = g_pTools->GetFoV(pLocalEntity->GetAbsOrigin(), pBaseEntity->GetEyePosition(), vForward);
if (flFoV < flMax)
{
flMax = flFoV;
iBestTargetIndex = i;
}
}

return iBestTargetIndex;
}

CAimbot::CAimbot(void)
{

}

bool CAimbot::Main(ValveSDK::CBaseEntity* pLocalEntity, ValveSDK::CUserCmd* pCmd, bool& bSendPacket)
{
if (!g_CVars.GetCVar("aim_active")->GetBool())
return false;

if (!pLocalEntity || !pCmd)
return false;

if (!IsAimKeyPressed())
return false;

auto pLocalWeapon = pLocalEntity->GetWeapon();
if (!pLocalWeapon)
return false;

if (!pLocalWeapon->IsValid(true))
return false;

auto pLocalWeaponData = pLocalWeapon->GetWeaponData();
if (!pLocalWeaponData)
return false;

auto iIndex = GetTargetData(pLocalEntity, pLocalWeapon);
if (iIndex == -1)
return false;

auto pBaseEntity = g_pEntityList->GetBaseEntity(iIndex);
if (!pBaseEntity)
return false;

ValveSDK::Vector vecAimFinal;
if (!TraceTargetHitpoint(pLocalEntity, pLocalWeapon, pBaseEntity, vecAimFinal))
return false;

if (g_pTools->GetDistance(vecAimFinal, pLocalEntity->GetEyePosition()) > pLocalWeaponData->m_flRange)
return false;

ValveSDK::QAngle qClientViewAngles;
g_pEngine->GetViewAngles(qClientViewAngles);

ValveSDK::Vector vForward;
g_pTools->AngleVectors(qClientViewAngles, vForward);

if (g_pTools->GetFoV(pLocalEntity->GetAbsOrigin(), vecAimFinal, vForward) > g_CVars.GetCVar("aim_fov")->GetFloat())
return false;

ValveSDK::QAngle qAimAngles;
g_pTools->CalcAngle(pLocalEntity->GetEyePosition(), vecAimFinal, qAimAngles);

auto iSilentAim = g_CVars.GetCVar("aim_silent")->GetInt();
auto flSmooth = g_CVars.GetCVar("aim_smooth")->GetFloat();

flSmooth / 10.f;

if (g_CVars.GetCVar("aim_rcs")->GetBool() && pLocalWeapon->IsAutomatic())
{
auto qPunchAngles = pLocalEntity->GetAimPunch();
qAimAngles -= qPunchAngles * 2.f;
qAimAngles.z = 0.f;

g_pTools->NormalizeVector(qAimAngles);
}
if (flSmooth > 0.f && !iSilentAim)
{
g_pTools->NormalizeVector(qClientViewAngles);

auto qDelta = qClientViewAngles - qAimAngles;
g_pTools->NormalizeVector(qDelta);

auto qSmooth = qClientViewAngles - qDelta / flSmooth;
g_pTools->NormalizeVector(qDelta);

qAimAngles = qSmooth;
}

g_pTools->NormalizeVector(qAimAngles);
g_pTools->ClampAngles(qAimAngles);

if (iSilentAim == 2)
bSendPacket = false;

pCmd->viewangles = qAimAngles;
if (!iSilentAim)
g_pEngine->SetViewAngles(qAimAngles);

if (g_CVars.GetCVar("aim_autoshoot")->GetBool())
pCmd->buttons |= IN_ATTACK;
/*
pCmd->forwardmove = 0.f;
pCmd->sidemove = 0.f;
pCmd->buttons |= IN_DUCK;
*/
if (iSilentAim)
g_pEngine->SetViewAngles(qClientViewAngles);

if (iSilentAim == 2)
bSendPacket = true;

return true;
}

CAimbot* g_pAimbot = nullptr;