Code:
struct Vector {
float x = 0, y = 0, z = 0;
};
Vector NormalizeAngles(Vector angle)
{
if (!std::isfinite(angle.x)) {
angle.x = 0;
}
if (!std::isfinite(angle.y)) {
angle.y = 0;
}
while (angle.y < -180.0f) angle.y += 360.0f;
while (angle.y > 180.0f) angle.y -= 360.0f;
if (angle.x > 89.0f) angle.x = 89.0f;
if (angle.x < -89.0f) angle.x = -89.0f;
angle.z = 0;
return angle;
}
Vector vOldPunchAngle;
void rcs()
{
Vector prevPunch, testVec;
int m_ShotsFired;
prevPunch.x = 0;
prevPunch.y = 0;
while (true)
{
if (GetAsyncKeyState(1) & 0x8000) {
DWORD LocalBaseB = Read<DWORD>(ChromeClient + ChormeProfiles);
DWORD EnginePTR = Read<DWORD>(ChromeClientEngine + ChromeClientState);
m_ShotsFired = Read<int>(LocalBaseB + Chromeshot);
Vector m_punch = Read<Vector>(LocalBaseB + ChromeVec);
m_punch.x *= 2.f;
m_punch.y *= 2.f;
if (m_ShotsFired > 1) {
Vector currentAngles = Read<Vector>(EnginePTR + 0x4D0C);
Vector modifier = m_punch;
modifier.x -= prevPunch.x;
modifier.y -= prevPunch.y;
NormalizeAngles(modifier);
currentAngles.x -= modifier.x;
currentAngles.y -= modifier.y;
NormalizeAngles(currentAngles);
Write<Vector>(EnginePTR + 0x4D0C, currentAngles);
}
prevPunch = m_punch;
Sleep(30);
}
Sleep(1);
}
}