Вопрос Аим прыгает с цели на цель

Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2020
Сообщения
49
Реакции[?]
4
Поинты[?]
0
Приветствую, хомосапиенс! Мой аимбот постоянно соскакивает с одного противника на другого, а когда прицел находится между двумя игрока, аим может просто залипнуть пытаясь довестись сразу до обоих. Мне нужно, чтобы он доводился до ближайшего к прицелу противника. Прошу вашей помощи и заранее благодарю.

C#:
if (EngineClient.IsInGame)
                {
                    Entity LocalPlayer = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwLocalPlayer));
                    if (LocalPlayer.Address == 0) return;

                    Entity TargetEntity = new Entity(-1);
                    float MaxDist = float.MaxValue;

                    for (int i = 1; i < EngineClient.MaxPlayer; i++)
                    {
                        Entity entity = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwEntityList + (i * 0x10)));
                        if (entity.Address == 0 && entity.Address == LocalPlayer.Address && entity.Address == LocalPlayer.ObserverTarget) continue;
                        if (entity.Dormant) continue;
                        if (entity.Health == 0) continue;
                        if (entity.Team == Structs.Enums.Team.None || entity.Team == Structs.Enums.Team.Spectator) continue;

                        bool IsVisible = BSPParser.BSPParser.IsVisible(LocalPlayer.Bone(8), entity.Bone(TriggerBot.Bone));

                        if (Property.TriggerBot.Enabled && TriggerBot.Type == 2 && AltMemory.WorldToScreen(entity.Bone(TriggerBot.Bone), out Vector2 AimHead2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
                        {
                            if (IsVisible && LocalPlayer.Team != entity.Team)
                            {
                                float CurrentDist = Vector2.Distance(Crosshair, AimHead2D);
                                if (CurrentDist <= Property.TriggerBot.FOV)
                                {
                                    TargetEntity = entity;
                                    MaxDist = CurrentDist;
                                }
                            }
                        }
                        if (TargetEntity.Address != -1 && GetAsyncKeyState(TriggerBot.Key) != 0)
                        {
                            if (AltMemory.WorldToScreen(TargetEntity.Bone(TriggerBot.Bone), out Vector2 Head2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
                            {
                                Vector3 LocalPlayerHeadPos = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecViewOffset) + AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecOrigin);
                                Vector3 AimPunch = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_aimPunchAngle);
                                AimPunch *= Property.RCS.ScalingFactor;

                                Vector3 AimAngle = Structs.Math.CalcAngle(LocalPlayerHeadPos, TargetEntity.Bone(TriggerBot.Bone));
                                AimAngle -= AimPunch;

                                if (TriggerBot.Smooth > 0)
                                    AimAngle = Structs.Math.SmoothAngle(EngineClient.ViewAngles, AimAngle, Property.TriggerBot.Smooth);
                                else
                                {
                                    AimAngle = Structs.Math.NormalizeAngle(AimAngle);
                                    if (RCS.Enabled && LocalPlayer.ShotsFired > 2)
                                        AimAngle = Structs.Math.ClampAngle(AimAngle);
                                }

                                EngineClient.ViewAngles = AimAngle;
                            }
                        }
                    }
                }
 
окряен.цц
Уникальная группа
Статус
Оффлайн
Регистрация
12 Окт 2017
Сообщения
406
Реакции[?]
176
Поинты[?]
1K
Сохраняй таргета и выполняй новый поиск только в случае аутдейтности нынешнего.
 
Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
381
Реакции[?]
168
Поинты[?]
3K
Приветствую, хомосапиенс! Мой аимбот постоянно соскакивает с одного противника на другого, а когда прицел находится между двумя игрока, аим может просто залипнуть пытаясь довестись сразу до обоих. Мне нужно, чтобы он доводился до ближайшего к прицелу противника. Прошу вашей помощи и заранее благодарю.

C#:
if (EngineClient.IsInGame)
                {
                    Entity LocalPlayer = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwLocalPlayer));
                    if (LocalPlayer.Address == 0) return;

                    Entity TargetEntity = new Entity(-1);
                    float MaxDist = float.MaxValue;

                    for (int i = 1; i < EngineClient.MaxPlayer; i++)
                    {
                        Entity entity = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwEntityList + (i * 0x10)));
                        if (entity.Address == 0 && entity.Address == LocalPlayer.Address && entity.Address == LocalPlayer.ObserverTarget) continue;
                        if (entity.Dormant) continue;
                        if (entity.Health == 0) continue;
                        if (entity.Team == Structs.Enums.Team.None || entity.Team == Structs.Enums.Team.Spectator) continue;

                        bool IsVisible = BSPParser.BSPParser.IsVisible(LocalPlayer.Bone(8), entity.Bone(TriggerBot.Bone));

                        if (Property.TriggerBot.Enabled && TriggerBot.Type == 2 && AltMemory.WorldToScreen(entity.Bone(TriggerBot.Bone), out Vector2 AimHead2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
                        {
                            if (IsVisible && LocalPlayer.Team != entity.Team)
                            {
                                float CurrentDist = Vector2.Distance(Crosshair, AimHead2D);
                                if (CurrentDist <= Property.TriggerBot.FOV)
                                {
                                    TargetEntity = entity;
                                    MaxDist = CurrentDist;
                                }
                            }
                        }
                        if (TargetEntity.Address != -1 && GetAsyncKeyState(TriggerBot.Key) != 0)
                        {
                            if (AltMemory.WorldToScreen(TargetEntity.Bone(TriggerBot.Bone), out Vector2 Head2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
                            {
                                Vector3 LocalPlayerHeadPos = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecViewOffset) + AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecOrigin);
                                Vector3 AimPunch = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_aimPunchAngle);
                                AimPunch *= Property.RCS.ScalingFactor;

                                Vector3 AimAngle = Structs.Math.CalcAngle(LocalPlayerHeadPos, TargetEntity.Bone(TriggerBot.Bone));
                                AimAngle -= AimPunch;

                                if (TriggerBot.Smooth > 0)
                                    AimAngle = Structs.Math.SmoothAngle(EngineClient.ViewAngles, AimAngle, Property.TriggerBot.Smooth);
                                else
                                {
                                    AimAngle = Structs.Math.NormalizeAngle(AimAngle);
                                    if (RCS.Enabled && LocalPlayer.ShotsFired > 2)
                                        AimAngle = Structs.Math.ClampAngle(AimAngle);
                                }

                                EngineClient.ViewAngles = AimAngle;
                            }
                        }
                    }
                }
Саму сортировку надо делать в цикле, аим - после.

Просто вынеси аим из цикла
Код:
if (EngineClient.IsInGame)
{
    Entity LocalPlayer = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwLocalPlayer));
    if (LocalPlayer.Address == 0) return;

    Entity TargetEntity = new Entity(-1);
    float MaxDist = float.MaxValue;

    for (int i = 1; i < EngineClient.MaxPlayer; i++)
    {
        Entity entity = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwEntityList + (i * 0x10)));
        if (entity.Address == 0 && entity.Address == LocalPlayer.Address && entity.Address == LocalPlayer.ObserverTarget) continue;
        if (entity.Dormant) continue;
        if (entity.Health == 0) continue;
        if (entity.Team == Structs.Enums.Team.None || entity.Team == Structs.Enums.Team.Spectator) continue;

        bool IsVisible = BSPParser.BSPParser.IsVisible(LocalPlayer.Bone(8), entity.Bone(TriggerBot.Bone));

        if (Property.TriggerBot.Enabled && TriggerBot.Type == 2 && AltMemory.WorldToScreen(entity.Bone(TriggerBot.Bone), out Vector2 AimHead2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
        {
            if (IsVisible && LocalPlayer.Team != entity.Team)
            {
                float CurrentDist = Vector2.Distance(Crosshair, AimHead2D);
                if (CurrentDist <= Property.TriggerBot.FOV)
                {
                    TargetEntity = entity;
                    MaxDist = CurrentDist;
                }
            }
        }
    }

    if (TargetEntity.Address != -1 && GetAsyncKeyState(TriggerBot.Key) != 0)
    {
        if (AltMemory.WorldToScreen(TargetEntity.Bone(TriggerBot.Bone), out Vector2 Head2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
        {
            Vector3 LocalPlayerHeadPos = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecViewOffset) + AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecOrigin);
            Vector3 AimPunch = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_aimPunchAngle);
            AimPunch *= Property.RCS.ScalingFactor;

            Vector3 AimAngle = Structs.Math.CalcAngle(LocalPlayerHeadPos, TargetEntity.Bone(TriggerBot.Bone));
            AimAngle -= AimPunch;

            if (TriggerBot.Smooth > 0)
                AimAngle = Structs.Math.SmoothAngle(EngineClient.ViewAngles, AimAngle, Property.TriggerBot.Smooth);
            else
            {
                AimAngle = Structs.Math.NormalizeAngle(AimAngle);
                if (RCS.Enabled && LocalPlayer.ShotsFired > 2)
                    AimAngle = Structs.Math.ClampAngle(AimAngle);
            }

            EngineClient.ViewAngles = AimAngle;
        }
    }
}
 
Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2020
Сообщения
49
Реакции[?]
4
Поинты[?]
0
Сохраняй таргета и выполняй новый поиск только в случае аутдейтности нынешнего.
Решение простое, но действенное. Спасибо)
Саму сортировку надо делать в цикле, аим - после.

Просто вынеси аим из цикла
Код:
if (EngineClient.IsInGame)
{
    Entity LocalPlayer = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwLocalPlayer));
    if (LocalPlayer.Address == 0) return;

    Entity TargetEntity = new Entity(-1);
    float MaxDist = float.MaxValue;

    for (int i = 1; i < EngineClient.MaxPlayer; i++)
    {
        Entity entity = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwEntityList + (i * 0x10)));
        if (entity.Address == 0 && entity.Address == LocalPlayer.Address && entity.Address == LocalPlayer.ObserverTarget) continue;
        if (entity.Dormant) continue;
        if (entity.Health == 0) continue;
        if (entity.Team == Structs.Enums.Team.None || entity.Team == Structs.Enums.Team.Spectator) continue;

        bool IsVisible = BSPParser.BSPParser.IsVisible(LocalPlayer.Bone(8), entity.Bone(TriggerBot.Bone));

        if (Property.TriggerBot.Enabled && TriggerBot.Type == 2 && AltMemory.WorldToScreen(entity.Bone(TriggerBot.Bone), out Vector2 AimHead2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
        {
            if (IsVisible && LocalPlayer.Team != entity.Team)
            {
                float CurrentDist = Vector2.Distance(Crosshair, AimHead2D);
                if (CurrentDist <= Property.TriggerBot.FOV)
                {
                    TargetEntity = entity;
                    MaxDist = CurrentDist;
                }
            }
        }
    }

    if (TargetEntity.Address != -1 && GetAsyncKeyState(TriggerBot.Key) != 0)
    {
        if (AltMemory.WorldToScreen(TargetEntity.Bone(TriggerBot.Bone), out Vector2 Head2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
        {
            Vector3 LocalPlayerHeadPos = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecViewOffset) + AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecOrigin);
            Vector3 AimPunch = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_aimPunchAngle);
            AimPunch *= Property.RCS.ScalingFactor;

            Vector3 AimAngle = Structs.Math.CalcAngle(LocalPlayerHeadPos, TargetEntity.Bone(TriggerBot.Bone));
            AimAngle -= AimPunch;

            if (TriggerBot.Smooth > 0)
                AimAngle = Structs.Math.SmoothAngle(EngineClient.ViewAngles, AimAngle, Property.TriggerBot.Smooth);
            else
            {
                AimAngle = Structs.Math.NormalizeAngle(AimAngle);
                if (RCS.Enabled && LocalPlayer.ShotsFired > 2)
                    AimAngle = Structs.Math.ClampAngle(AimAngle);
            }

            EngineClient.ViewAngles = AimAngle;
        }
    }
}
аим и так не в цикле
 
Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2020
Сообщения
49
Реакции[?]
4
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2020
Сообщения
49
Реакции[?]
4
Поинты[?]
0
Сохраняй таргета и выполняй новый поиск только в случае аутдейтности нынешнего.
Это помогло лишь чуть-чуть, но проблема осталась

C#:
if (EngineClient.IsInGame)
                    {
                        if (!Property.Menu) continue;

                        Entity LocalPlayer = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwLocalPlayer));
                        if (LocalPlayer.Address == 0) continue;

                        if (GameUtilities.CurrentWeaponIsKnife(LocalPlayer.ActiveWeapon) || GameUtilities.CurrentWeaponIsGrenade(LocalPlayer.ActiveWeapon)) continue;

                        Entity TargetEntity = new Entity(-1);
                        float MaxDist = float.MaxValue;

                        for (int i = 0; i < EngineClient.MaxPlayer; i++)
                        {
                            Entity entity = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwEntityList + (i * 0x10)));
                            if (entity.Address == 0 && entity.Address == LocalPlayer.Address && entity.Address == LocalPlayer.ObserverTarget) continue;
                            if (entity.Dormant) continue;
                            if (entity.Health == 0) continue;
                            if (!entity.Alive) continue;
                            if (entity.Team == Structs.Enums.Team.None || entity.Team == Structs.Enums.Team.Spectator) continue;

                            bool IsVisible = Property.TriggerBot.FullLegit ? entity.SeenBy(EngineClient.LocalPlayerIndex - 1) && BSPParser.BSPParser.IsVisible(LocalPlayer.Bone(8), entity.Bone(Property.TriggerBot.HitBox)) : BSPParser.BSPParser.IsVisible(LocalPlayer.Bone(8), entity.Bone(Property.TriggerBot.HitBox));
                            //bool IsVisible = BSPParser.BSPParser.IsVisible(LocalPlayer.Bone(8), entity.Bone(TriggerBot.Bone));

                            if (Property.TriggerBot.Enabled && TriggerBot.Type == 2 && AltMemory.WorldToScreen(entity.Bone(TriggerBot.HitBox), out Vector2 AimHead2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
                            {
                                if (IsVisible && LocalPlayer.Team != entity.Team)
                                {
                                    float CurrentDist = Vector2.Distance(Crosshair, AimHead2D);

                                    if (CurrentDist <= TriggerBot.FOV)
                                    {
                                        if (TargetEntity.Dormant || !TargetEntity.Alive || TargetEntity.Health < 1)
                                        {
                                            if (CurrentDist < MaxDist)
                                            {
                                                MaxDist = CurrentDist;
                                                TargetEntity = entity;
                                            }
                                        }
                                    }
                                }
                            }
                            if (TargetEntity.Address != -1 && Win32.IsKeyPushedDown(Keys.XButton2))
                            {
                                if (AltMemory.WorldToScreen(TargetEntity.Bone(TriggerBot.HitBox), out Vector2 Head2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
                                {
                                    Vector3 LocalPlayerHeadPos = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecViewOffset) + AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecOrigin);
                                    Vector3 AimPunch = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_aimPunchAngle);
                                    AimPunch *= Property.RCS.ScalingFactor;

                                    Vector3 AimAngle = Structs.Math.CalcAngle(LocalPlayerHeadPos, TargetEntity.Bone(TriggerBot.HitBox));
                                    AimAngle -= AimPunch;

                                    if (TriggerBot.Smooth > 0)
                                    {
                                        AimAngle = Structs.Math.SmoothAngle(EngineClient.ViewAngles, AimAngle, TriggerBot.Smooth);
                                    }
                                    else
                                    {
                                        AimAngle = Structs.Math.NormalizeAngle(AimAngle);
                                        AimAngle = Structs.Math.ClampAngle(AimAngle);
                                    }

                                    EngineClient.ViewAngles = AimAngle;
                                }
                            }
                        }
                    }
 
Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
381
Реакции[?]
168
Поинты[?]
3K
Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2020
Сообщения
49
Реакции[?]
4
Поинты[?]
0
Он в цикле как бы да... Если ты его вынесешь, будет тебе счастье. Я скинуЛ как должно быть
не помогло

C#:
                    if (EngineClient.IsInGame)
                    {
                        if (!Property.Menu) continue;

                        Entity LocalPlayer = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwLocalPlayer));
                        if (LocalPlayer.Address == 0) continue;

                        if (GameUtilities.CurrentWeaponIsKnife(LocalPlayer.ActiveWeapon) || GameUtilities.CurrentWeaponIsGrenade(LocalPlayer.ActiveWeapon)) continue;

                        Entity TargetEntity = new Entity(-1);
                        float MaxDist = float.MaxValue;

                        for (int i = 0; i < EngineClient.MaxPlayer; i++)
                        {
                            Entity entity = new Entity(AltMemory.Read<int>(Game.Client + Offsets.dwEntityList + (i * 0x10)));
                            if (entity.Address == 0 && entity.Address == LocalPlayer.Address && entity.Address == LocalPlayer.ObserverTarget) continue;
                            if (entity.Dormant) continue;
                            if (entity.Health == 0) continue;
                            if (!entity.Alive) continue;
                            if (entity.Team == Structs.Enums.Team.None || entity.Team == Structs.Enums.Team.Spectator) continue;

                            bool IsVisible = Property.TriggerBot.FullLegit ? entity.SeenBy(EngineClient.LocalPlayerIndex - 1) && BSPParser.BSPParser.IsVisible(LocalPlayer.Bone(8), entity.Bone(Property.TriggerBot.HitBox)) : BSPParser.BSPParser.IsVisible(LocalPlayer.Bone(8), entity.Bone(Property.TriggerBot.HitBox));
                            //bool IsVisible = BSPParser.BSPParser.IsVisible(LocalPlayer.Bone(8), entity.Bone(TriggerBot.Bone));

                            if (Property.TriggerBot.Enabled && TriggerBot.Type == 2 && AltMemory.WorldToScreen(entity.Bone(TriggerBot.HitBox), out Vector2 AimHead2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
                            {
                                if (IsVisible && LocalPlayer.Team != entity.Team)
                                {
                                    float CurrentDist = Vector2.Distance(Crosshair, AimHead2D);

                                    if (CurrentDist <= TriggerBot.FOV)
                                    {
                                        if (TargetEntity.Dormant || !TargetEntity.Alive || TargetEntity.Health < 1)
                                        {
                                            if (CurrentDist < MaxDist)
                                            {
                                                MaxDist = CurrentDist;
                                                TargetEntity = entity;
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        if (TargetEntity.Address != -1 && Win32.IsKeyPushedDown(Keys.XButton2))
                        {
                            if (AltMemory.WorldToScreen(TargetEntity.Bone(TriggerBot.HitBox), out Vector2 Head2D, EngineClient.ViewMatrix, (int)WindowSize.Width, (int)WindowSize.Height))
                            {
                                Vector3 LocalPlayerHeadPos = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecViewOffset) + AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_vecOrigin);
                                Vector3 AimPunch = AltMemory.Read<Vector3>(LocalPlayer.Address + Offsets.m_aimPunchAngle);
                                AimPunch *= Property.RCS.ScalingFactor;

                                Vector3 AimAngle = Structs.Math.CalcAngle(LocalPlayerHeadPos, TargetEntity.Bone(TriggerBot.HitBox));
                                AimAngle -= AimPunch;

                                if (TriggerBot.Smooth > 0)
                                {
                                    AimAngle = Structs.Math.SmoothAngle(EngineClient.ViewAngles, AimAngle, TriggerBot.Smooth);
                                }
                                else
                                {
                                    AimAngle = Structs.Math.NormalizeAngle(AimAngle);
                                    AimAngle = Structs.Math.ClampAngle(AimAngle);
                                }

                                EngineClient.ViewAngles = AimAngle;
                            }
                        }
                    }
 
Последнее редактирование:
Сверху Снизу