-
Автор темы
- #1
Здравствуйте! Подскажите пожалуйста, не могу понять как исправить данную проблему. Когда я включаю аим он работает, но когда противник находится в прицеле, и за этим противником еще один противник но он находится за каким либо объектом, то прицел переводится и стреляет не на того который в прицеле, а на того который за объектом.
Как сделать чтобы он НЕ стрелял в противников которые за объектами (стенами, ящиками и тд)
Вот сурс:
Как сделать чтобы он НЕ стрелял в противников которые за объектами (стенами, ящиками и тд)
Вот сурс:
Код:
DWORD localPlayer = readMem<DWORD>(client + dwLocalPlayer);
if (localPlayer) {
int localPlayerTeam = readMem<int>(localPlayer + m_iTeamNum);
DWORD enginePointer = readMem<DWORD>(engine + dwClientState);
float oldDistX = 11111111.0;
float oldDistY = 11111111.0;
for (int i = 1; i < 32; i++) {
DWORD entity = readMem<DWORD>(client + dwEntityList + i * 0x10);
if (entity == 0) {
continue;
}
int entityTeam = readMem<int>(entity + m_iTeamNum);
int entityHealth = readMem<int>(entity + m_iHealth);
bool entityDormant = readMem<bool>(entity + m_bDormant);
int target = 0;
int targetHealth = 0;
bool targetDormant = true;
Vec3 targetPos, localPos;
if ((localPlayerTeam != entityTeam) && (entityHealth > 0)) {
Vec3 localAngle, entityPos;
localAngle.x = readMem<float>(enginePointer + dwClientState_ViewAngles + 0x0);
localAngle.y = readMem<float>(enginePointer + dwClientState_ViewAngles + 0x4);
localAngle.z = readMem<float>(localPlayer + m_vecViewOffset + 0x8);
localPos.x = readMem<float>(localPlayer + m_vecOrigin + 0x0);
localPos.y = readMem<float>(localPlayer + m_vecOrigin + 0x4);
localPos.z = readMem<float>(localPlayer + m_vecOrigin + 0x8) + localAngle.z;
DWORD entityBones = readMem<DWORD>(entity + m_dwBoneMatrix);
entityPos.x = readMem<float>(entityBones + 0x30 * 8 + 0x0C);
entityPos.y = readMem<float>(entityBones + 0x30 * 8 + 0x1C);
entityPos.z = readMem<float>(entityBones + 0x30 * 8 + 0x2C);
Vec3 tmp = localPos - entityPos;
Vec2 angleVec = tmp.CalculateAngles();
float distX = angleVec.x - localAngle.x;
if (distX < -89.0) {
distX += 360.0;
}
else if (distX > 89.0) {
distX -= 360.0;
}
if (distX < 0.0) {
distX = -distX;
}
float distY = angleVec.y - localAngle.y;
if (distY < -180.0) {
distY += 360.0;
}
else if (distY > 180.0) {
distY -= 360.0;
}
if (distY < 0.0) {
distY = -distY;
}
if (distX < (oldDistX - 0.87) && distY < (oldDistY - 0.87)){
oldDistX = distX;
oldDistY = distY;
target = entity;
targetHealth = entityHealth;
targetDormant = entityDormant;
targetPos = entityPos;
}
}
if (GetAsyncKeyState(VK_LBUTTON) < 0 && localPlayer != 0) {
if (target != 0 && targetHealth > 0 && targetDormant == false) {
Vec3 tmp = localPos - targetPos;
Vec2 angleVec = tmp.CalculateAngles();
angleVec.Normalize();
writeMem<float>(enginePointer + dwClientState_ViewAngles, angleVec.x);
writeMem<float>(enginePointer + dwClientState_ViewAngles + 0x4, angleVec.y);
Sleep(1);
}
}
}
}
}