Вопрос Проблемы с AIM

Начинающий
Статус
Оффлайн
Регистрация
6 Ноя 2018
Сообщения
20
Реакции[?]
0
Поинты[?]
0
Здравствуйте! Подскажите пожалуйста, не могу понять как исправить данную проблему. Когда я включаю аим он работает, но когда противник находится в прицеле, и за этим противником еще один противник но он находится за каким либо объектом, то прицел переводится и стреляет не на того который в прицеле, а на того который за объектом.

Как сделать чтобы он НЕ стрелял в противников которые за объектами (стенами, ящиками и тд)

Вот сурс:

Код:
    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);
                }
            }
        }
       }
    }
 
Забаненный
Статус
Оффлайн
Регистрация
23 Дек 2021
Сообщения
21
Реакции[?]
4
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здравствуйте! Подскажите пожалуйста, не могу понять как исправить данную проблему. Когда я включаю аим он работает, но когда противник находится в прицеле, и за этим противником еще один противник но он находится за каким либо объектом, то прицел переводится и стреляет не на того который в прицеле, а на того который за объектом.

Как сделать чтобы он НЕ стрелял в противников которые за объектами (стенами, ящиками и тд)

Вот сурс:

Код:
    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);
                }
            }
        }
       }
    }
u need check on fire_data.damage < 1 or fire_data.valid
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,425
Реакции[?]
666
Поинты[?]
25K
Самое простое, что можно сделать это:
C++:
int entity_is_spotted = readMem<int>(entity + m_bSpotted);

if (entity_is_spotted)
{
    ...
}
Но это будет весьма медленно работать (не код, а m_bSpotted)
 
Сверху Снизу