Image : http : // prnt.sc / ex1ang
Problems:
1. aimbot aims at incorrect bone location
2. when 2 enemy players are close to each other, the aimbot cannot decide which one to aim :/
ToDo:
1. add visual check
The code i was using based on A5 External on github
Variables if it helps:
Code:
// Aimbot vars
Vector3 angle;
double Distance = 300;
int targets = 0;
int myTeam;
int Team;
int Health;
bool dormant;
Math math;
Aimbot function:
Code:
void Aimbot(DWORD myPlayer) {
engineBase = mem.Read<DWORD>(engine + dwClientState); // A.k.a enginepointer
// Get targets
for (int i = 0; i < 64; i++) {
DWORD entity = mem.Read<DWORD>(client + dwEntityList + ((i - 1) * 0x10) );
if (entity != NULL) {
myTeam = mem.Read<int>(myPlayer + m_iTeamNum);
Team = mem.Read<int>(entity + m_iTeamNum);
Health = mem.Read<int>(entity + m_iHealth);
dormant = mem.Read<bool>(entity + m_bDormant);
if (dormant || Team == myTeam || Health == 0)
continue;
// My position
Vector3 myPos = myPlayerEyePos(myPlayer);
//std::cout << "myPos: " << myPos.x << "," << myPos.y << "," << myPos.z << std::endl;
// Target head position
int boneMatrix = mem.Read<int>(entity + m_dwBoneMatrix);
Vector3 entityHeadPos = getBone(boneMatrix, 6);
if (math.VecDist(myPos, entityHeadPos) < Distance) {
Vector3 AimAngle;
Vector3 dir = myPos - entityHeadPos;
math.VectorNormalize(dir);
math.VectorAngles(dir, AimAngle);
math.ClampAngle(AimAngle);
AimAngle -= (mem.Read<Vector3>(client + m_aimPunchAngle)) * 2.f;
math.ClampAngle(AimAngle);
math.SmoothAngle(mem.Read<Vector3>(engineBase + dwClientState_ViewAngles), AimAngle, 2.0f);
//std::cout << "AimAngle: " << AimAngle.x << "," << AimAngle.y << "," << AimAngle.z << std::endl;
mem.Write<Vector3>(engineBase + dwClientState_ViewAngles, AimAngle);
}
}
}
}
Get player eye position:
Code:
Vector3 myPlayerEyePos(DWORD myPlayer) {
return mem.Read<Vector3>(myPlayer + m_vecOrigin) + mem.Read<Vector3>(myPlayer + m_vecViewOffset);
}
Get bone for entity(enemy)
Code:
Vector3 getBone(int boneM, int iBone) {
Vector3 boneReturn;
boneReturn.x = mem.Read<float>(boneM + 0x30 * iBone + 0x0C);
boneReturn.y = mem.Read<float>(boneM + 0x30 * iBone + 0x1C);
boneReturn.z = mem.Read<float>(boneM + 0x30 * iBone + 0x2C);
return boneReturn;
}