CSGO: Can’t make aimbot work
Hey,
I’m writing a new external cheat because of the noobiness of my first one. Tbh I never tried to understand how works an aimbot but now thanks to this thread I understand much more.
So the problem is that whenever I shoot it locks in the sky.
The Aimbot function
void CAimbot::Aimbot()
{
CMath Math;
Vector3 vector, angles, myEyes, ennemyPos, aimReal;
while (true)
{
if (g_options.aim_enabled)
{
while (GetAsyncKeyState(VK_LBUTTON) && helper_t.IsValidWeapon())
{
myEyes = CalcLocalPos();
ennemyPos = CalcBone(scan_t.Entities, 8);
vector = CalcAngle(myEyes, ennemyPos);
Math.VectorAngles(vector, angles);
aimReal = CalcAngle(helper_t.GetViewAngles(), angles);
Math.NormalizeVector(aimReal);
helper_t.SetViewAngles(aimReal);
}
}Sleep(15);
}
}
The CalcBone function (yes I know I can read it in one RPM but later)
Vector3 CAimbot::CalcBone(C_PlayerData Entity, int bone)
{
Vector3 vector;
vector.x = Mem.Read(Entity.m_dwBoneMatrix + (0x30 * bone) + 0xC);
vector.y = Mem.Read(Entity.m_dwBoneMatrix + (0x30 * bone) + 0x1C);
vector.z = Mem.Read((Entity.m_dwBoneMatrix + (0x30 * bone) + 0x2C));
return vector;
}
Vector3 CAimbot::CalcLocalPos()
{
Vector3 HeadPos;
HeadPos.x = scan_t.Player.m_vecOrigin.x + scan_t.Player.m_vecViewOffset.x;
HeadPos.y = scan_t.Player.m_vecOrigin.y + scan_t.Player.m_vecViewOffset.y;
HeadPos.z = scan_t.Player.m_vecOrigin.z + scan_t.Player.m_vecViewOffset.z;
return HeadPos;
}
Vector3 CAimbot::CalcAngle(Vector3 myHead, Vector3 ennemyHead)
{
Vector3 store;
store.x = ennemyHead.x - myHead.x;
store.y = ennemyHead.y - myHead.y;
store.z = ennemyHead.z - myHead.z;
return store;
}
PS: This is how I read players’ datas
class C_PlayerData
{
public:
byte _0x70[0x70];
float m_clrRender;
byte _0xEC[0x78];
bool m_bDormant;
int m_iTeam;
byte _0xFC[0x6];
int m_iHealth;
int m_flags;
Vector3 m_vecViewOffset;
Vector3 m_vecVelocity;
byte _0x134[0x16];
Vector3 m_vecOrigin;
byte _0x2968[0x2556];
DWORD m_dwBoneMatrix;
byte _0x2EE8[0x84C];
int m_hActiveWeapon;
byte _0x2F88[0x9C];
int m_iIteamDefinitionIndex;
byte _0x3010[0x84];
float m_viewPunchAngle;
byte _0x301C[0x6];
float m_aimPunchAngle;
byte _0x3028[0x6];
float m_aimPunchAngleVel;
byte _0x387E[0x852];
bool m_bIsScoped;
byte _0x3888[0x9];
bool m_bIsDefusing;
byte _A2B0[0x6A27];
int m_iShotsFired;
byte _0xB238[0xF84];
int m_iArmorValue;
byte _0xB2A4[0x68];
int m_iCrossID;
};
void Scanner::ScanPlayers()
{
while (true)
{
Player = Mem.Read(Mem.Read(Mem.ClientBase + Offsets::dwLocalPlayer));
InCrossEnt = Mem.Read(Mem.Read(Mem.ClientBase + Offsets::dwEntityList + (Player.m_iCrossID - 1) * 0x10));
for (int i = 1; i <= 64; i++)
{
Entities = Mem.Read(Mem.Read(Mem.ClientBase + Offsets::dwEntityList + (i * 0x10)));
}
Sleep(50);
}
}
What do you think ?
|