Code:
float getPt(float n1, float n2, float perc)
{
float diff = n2 - n1;
return n1 + (diff * perc);
}
int main()
{
DWORD pId;
HWND hwnd = FindWindow(NULL, "Counter-Strike: Global Offensive");
GetWindowThreadProcessId(hwnd, &pId);
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, NULL, pId);
DWORD clientDll = getDll(pId, "client.dll");
DWORD engineDll = getDll(pId, "engine.dll");
while (true)
{
if (GetAsyncKeyState(0x05) & 0x8000 || GetAsyncKeyState(0x01) & 0x8000)
{
Vector localPosition = { Player.getPosition(hProc, clientDll).x, Player.getPosition(hProc, clientDll).y, (Player.getPosition(hProc, clientDll).z + Player.getEyePosition(hProc, clientDll).z) }; //get local eye position.
Vector viewAngles = Player.getViewAngle(hProc, engineDll); //get local viewangles
int closestEnemy = GetClosestEnemy(hProc, clientDll, engineDll, localPosition, viewAngles); //get closest entity to crosshair
if (closestEnemy > 0 && closestEnemy < 64) // check if entity is valid
{
Vector closestHead = Entity.getHeadPos(hProc, clientDll, closestEnemy);
Vector closestHead2 = { closestHead.x + RandomFloat(-20, 20), closestHead.y + RandomFloat(-20, 20), closestHead.z + RandomFloat(-20, 20) };
Vector vAngle = CalcAngle(localPosition, closestHead);
Vector vAngle2 = CalcAngle(localPosition, closestHead2);
Normalize(vAngle);
Normalize(vAngle2);
for (float i = 0; i < 1; i += 0.01)
{
float xa = getPt(viewAngles.y, vAngle2.y, i);
float ya = getPt(viewAngles.x, vAngle2.x, i);
float xb = getPt(vAngle2.y, vAngle.y, i);
float yb = getPt(vAngle2.x, vAngle.x, i);
Vector dot{ 0 };
dot.y = getPt(xa, xb, i);
dot.x = getPt(ya, yb, i);
dot.z = 0.0f;
Normalize(dot);
RCS(dot, hProc, clientDll);
Player.setViewAngle(hProc, engineDll, dot);
}
}
}
Sleep(1);
}