Гайд //DELETE

  • Автор темы Автор темы un_h
  • Дата начала Дата начала
Про тагерт:
misDist - это я так понимаю, максимальная дистанция, или угол до цели...
лучше юзать коллекцию структур. почему не моссив? по тому что число игроков которые будут в комнате заранее угадать затруднительно, а если кто-то выйдет из боя?
в том же мосиве, собирать данные об игроках в стиле

Код:
Expand Collapse Copy
 struct PlayerInfo
{
    public float HP;
    public float Distance;
}
Далее делаем коллекцию
Код:
Expand Collapse Copy
List<PlayerInfo> pInfo = new List<PlayerInfo>();
и тут становится ясно, как максимально точно определить максимальную и минимальную дистанцию к игроку.
Код:
Expand Collapse Copy
float MaxDistance(List<PlayerInfo> pInfo)
{
    float[] Distance_to_players = new float[pInfo.Count];
    for (int index = 0; index < pInfo.Count; ++index)
        Distance_to_players[index] = pInfo[index].Distance;
    return Distance_to_players.Max();
}
float MinDistance(List<PlayerInfo> pInfo)
{
    float[] Distance_to_players = new float[pInfo.Count];
    for (int index = 0; index < pInfo.Count; ++index)
        Distance_to_players[index] = pInfo[index].Distance;
    return Distance_to_players.Min();
}
Разумеется контейнер pInfo необходимо заполнять и очищать регулярно.
так же можно определить максимальное и минимальное хп и рассчитать в тагерте учет хп, чтобы сперва добивало тех у кого меньше жизни, или аттаковало тех у кого больше по желанию. суть думаю ясна.

Про остальное, в целом, судить нет смысла, можно написать так, можно интересней, но вариант интересней не схавает паблик аудитория, по тому что не поймет как оно работает.
 
Про тагерт:
misDist - это я так понимаю, максимальная дистанция, или угол до цели...
лучше юзать коллекцию структур. почему не моссив? по тому что число игроков которые будут в комнате заранее угадать затруднительно, а если кто-то выйдет из боя?
в том же мосиве, собирать данные об игроках в стиле

Код:
Expand Collapse Copy
 struct PlayerInfo
{
    public float HP;
    public float Distance;
}
Далее делаем коллекцию
Код:
Expand Collapse Copy
List<PlayerInfo> pInfo = new List<PlayerInfo>();
и тут становится ясно, как максимально точно определить максимальную и минимальную дистанцию к игроку.
Код:
Expand Collapse Copy
float MaxDistance(List<PlayerInfo> pInfo)
{
    float[] Distance_to_players = new float[pInfo.Count];
    for (int index = 0; index < pInfo.Count; ++index)
        Distance_to_players[index] = pInfo[index].Distance;
    return Distance_to_players.Max();
}
float MinDistance(List<PlayerInfo> pInfo)
{
    float[] Distance_to_players = new float[pInfo.Count];
    for (int index = 0; index < pInfo.Count; ++index)
        Distance_to_players[index] = pInfo[index].Distance;
    return Distance_to_players.Min();
}
Разумеется контейнер pInfo необходимо заполнять и очищать регулярно.
так же можно определить максимальное и минимальное хп и рассчитать в тагерте учет хп, чтобы сперва добивало тех у кого меньше жизни, или аттаковало тех у кого больше по желанию. суть думаю ясна.

Про остальное, в целом, судить нет смысла, можно написать так, можно интересней, но вариант интересней не схавает паблик аудитория, по тому что не поймет как оно работает.
А не подскажешь как сделать так чтобы после убийства одного на второго не переводилось (вроде nearest, но везде по разгному), а так Спасибо
 
А не подскажешь как сделать так чтобы после убийства одного на второго не переводилось (вроде nearest, но везде по разгному), а так Спасибо
обычно, это происходит, когда тагерт определяет более 1 подходящей цели. в данном случае, математические операции Max и Min, позволят наиболее точно определить конкретную цель для наведения среди всех перечисленных. Вероятно, твоя концепция тагерта, целиком не идеальна.

обычно, таргерт пишут следующим образом:
1) собрать список всех пользователей в бою
2) отсеять из этого списка тимейтов и мертвых игроков
3) при необходимости, отсеять по дистанции к себе
4) отсеять по видимости (видимый / за стеной)
5) Далее выбирать из тех кто остался в списке по любому удобному критерию:
5.1) Min/Max HP - по минимальному или моксимальному хп, чтобы выбрать саму потенциально опасную или уязвимую цель.
5.2) Min/Max Distance - по наиболее ближнему или дальнему, на пример при игре с дробовиком, наиболее эффективно стрелять в первую очередь в наиболее близкую по дистанции цель *(по очевидным причинам)
5.3) Min/Max Angle - по врагу наиболее ближнему/дальнему к твоему прицелу (угол до цели).
5.4) Danger/LOL - по оружию в руках если у тебя выбор между двумя врагами и они в равных условиях, на равной дистанции и стоят чуть ли не друг за другом, можно выбрать: если у одного в руке автомат, а у другого нож - сразу понятно, кто опасней и на кого наводится стоит в первую очередь.
 
Upd: так же, стоит чуть чуть увеличивать скорость наведения на игроков с ножем в руках, так как с ножем вроде в кс быстрее бегают.
 
обычно, это происходит, когда тагерт определяет более 1 подходящей цели. в данном случае, математические операции Max и Min, позволят наиболее точно определить конкретную цель для наведения среди всех перечисленных. Вероятно, твоя концепция тагерта, целиком не идеальна.

обычно, таргерт пишут следующим образом:
1) собрать список всех пользователей в бою
2) отсеять из этого списка тимейтов и мертвых игроков
3) при необходимости, отсеять по дистанции к себе
4) отсеять по видимости (видимый / за стеной)
5) Далее выбирать из тех кто остался в списке по любому удобному критерию:
5.1) Min/Max HP - по минимальному или моксимальному хп, чтобы выбрать саму потенциально опасную или уязвимую цель.
5.2) Min/Max Distance - по наиболее ближнему или дальнему, на пример при игре с дробовиком, наиболее эффективно стрелять в первую очередь в наиболее близкую по дистанции цель *(по очевидным причинам)
5.3) Min/Max Angle - по врагу наиболее ближнему/дальнему к твоему прицелу (угол до цели).
5.4) Danger/LOL - по оружию в руках если у тебя выбор между двумя врагами и они в равных условиях, на равной дистанции и стоят чуть ли не друг за другом, можно выбрать: если у одного в руке автомат, а у другого нож - сразу понятно, кто опасней и на кого наводится стоит в первую очередь.
 
Upd: так же, стоит чуть чуть увеличивать скорость наведения на игроков с ножем в руках, так как с ножем вроде в кс быстрее бегают.
Блин, огромное тебе спасибо, сегодня буду делать и последний вопрос:
Как сделать доводку на противника по расстоянию от прицела (у меня по расстоянию), у меня такая идея (взять центр экрана и перевести положение кости игрока на экран и там уже найти расстояние между ними) так или можно по другому?
 
Блин, огромное тебе спасибо, сегодня буду делать и последний вопрос:
Как сделать доводку на противника по расстоянию от прицела (у меня по расстоянию), у меня такая идея (взять центр экрана и перевести положение кости игрока на экран и там уже найти расстояние между ними) так или можно по другому?
получить окно игры (FindWindow) далее, проверить, является ли окно игры впереди остальных, т.е смотрит ли на него юзверь if(GetForegroundWindow() == FindWindow(игра, игра)), далее определить размеры окна игры GetWindowRect, как вычислить центр окна, думаю понятно.
далее, определяешь нужного игрока и тянешь позицию нужной кости, далее дергаешь дистанцию до кости обычным алгоритмом получения дистанции, просто считаешь, от центра окна, до кости, по X и Y.
 
получить окно игры (FindWindow) далее, проверить, является ли окно игры впереди остальных, т.е смотрит ли на него юзверь if(GetForegroundWindow() == FindWindow(игра, игра)), далее определить размеры окна игры GetWindowRect, как вычислить центр окна, думаю понятно.
далее, определяешь нужного игрока и тянешь позицию нужной кости, далее дергаешь дистанцию до кости обычным алгоритмом получения дистанции, просто считаешь, от центра окна, до кости, по X и Y.
ну я так же хотел, ОК, спасибо
 
Кароч сделал что-то похожее на silent aim:
undind mouse1
Silent aim:
Код:
Expand Collapse Copy
if (WinApi.GetAsyncKeyState(1) != 0)
                        {
                            int target = GetTarget();
                            if (target != -1 && mem.Read<bool>(target + 0x97C) && mem.Read<bool>(target + Offsets.oSpotted))
                            {
                                int EngineBase = mem.Read<int>(bEngine + Offsets.oClientState);

                                Vector3 dst = AngleToTarget(target, 8);
                                Vector3 CurrentViewAngles = CheatData.mem.Read<Vector3>(EngineBase + Offsets.oViewAngles);

                                mem.Write<byte>(bClient + Offsets.dwbSendPackets, 0);
                                SetViewAngle(dst);
                                mem.Write<byte>(bClient + Offsets.dwbSendPackets, 1);

                                Shoot();

                                mem.Write<byte>(bClient + Offsets.dwbSendPackets, 0);
                                SetViewAngle(CurrentViewAngles);
                                mem.Write<byte>(bClient + Offsets.dwbSendPackets, 1);

                            }
                        }

Все функции:
GetTarget()
Код:
Expand Collapse Copy
public static int GetTarget()
        {
            int currentTarget = -1;
            float misDist = 9999999999999999999999999999999999f;

            int clientState = mem.Read<int>(.bEngine + Offsets.oClientState);
            int _localPlayer = mem.Read<int>(bClient + Offsets.oLocalPlayer);
            Vector3 _viewAngles = mem.Read<Vector3>(clientState + Offsets.oViewAngles);

            int playerTeam = mem.Read<int>(_localPlayer + Offsets.oTeam);

            for (int i = 0; i <= 64; i++)
            {
                Vector3 _playerPos = mem.Read<Vector3>(_localPlayer + Offsets.oPosition);

                int target = mem.Read<int>(bClient + Offsets.oEntityList + (i - 1) * 0x10);

                Vector3 targetPos = mem.Read<Vector3>(target + Offsets.oPosition);
                int targetTeam = mem.Read<int>(target + Offsets.oTeam);
                int targetHealth = mem.Read<int>(target + Offsets.oHealth);
                bool targetDomant = mem.Read<bool>(target + Offsets.oDormant);

                if (targetTeam != playerTeam &&
                    targetTeam != 0 && !targetDomant &&
                    targetHealth != 0 &&
                    Vector3.Distance(targetPos, _playerPos) < misDist)
                {
                    Vector3 angleToTarget = AngleToTarget(target, 8);
                    var fov = MathTools.Fov(_viewAngles, angleToTarget);
                    if (fov <= (Offsets.FOV / Math.Abs(Vector3.Distance(targetPos, _playerPos)/700) ))
                    {
                        misDist = Vector3.Distance(targetPos, _playerPos);
                        currentTarget = target;
                    }
                }
            }
            return currentTarget;

        }

AngleToTarget:
Код:
Expand Collapse Copy
public static Vector3 AngleToTarget(int pTargetIn, int boneIndex)
        {
            int PlayerBase = mem.Read<int>(bClient + Offsets.oLocalPlayer);
            int EngineBase = mem.Read<int>(bEngine + Offsets.oClientState);
            int Bullet = mem.Read<int>(PlayerBase + Offsets.oShootFired);
            int _localPlayer = mem.Read<int>(CheatData.bClient + Offsets.oLocalPlayer);

            Vector3 position = mem.Read<Vector3>(_localPlayer + Offsets.oPosition);
            Vector3 vecView = .mem.Read<Vector3>(_localPlayer + Offsets.oVecViewOffset);

            Vector3 myView = position + vecView;
            Vector3 aimView = GetBonePos(pTargetIn, boneIndex);

            Vector3 dst = myView.CalcAngle(aimView);

            if (!Offsets.rcsON)
            {
                dst = dst.NormalizeAngle();
                return dst;
            }
            else
            {
                if (Bullet > -1)
                {
                    Vector3 mypunch = mem.Read<Vector3>(PlayerBase + Offsets.oAimPunchAngle);
                    Vector3 cangle = startAngle - mypunch * 2f;
                    cangle = cangle.ClampAngele();
                    dst = dst + cangle;
                    dst = dst.NormalizeAngle();
                }

                return dst;
            }

Shoot()
Код:
Expand Collapse Copy
mem.Write(bClient + Offsets.oForceAttack, 5);
            Thread.Sleep(0x40);
            mem.Write(bClient + Offsets.oForceAttack, 4);

А чему у тебя равен bClient ? Не уж то базовый адресс Client.dll ?
А это нормально, что clientdll никак не работает с пакетами?..


Код:
Expand Collapse Copy
// Правильное решение
Core.Memory.Write<Byte>(Core.EngineBase + Offsets.Misc.SendPackets, 0);

// Твое решение
Core.Memory.Write<Byte>(Core.ClientBase + Offsets.Misc.SendPackets, 0);

Только, когда будешь тестить правильное решение, незабудь вернуть отправку пакетов, а то придется перезапускать игру.
 
Последнее редактирование:
А чему у тебя равен bClient ? Не уж то базовый адресс Client.dll ?
А это нормально, что clientdll никак не работает с пакетами?..


Код:
Expand Collapse Copy
// Правильное решение
Core.Memory.Write<Byte>(Core.EngineBase + Offsets.Misc.SendPackets, 0);

// Твое решение
Core.Memory.Write<Byte>(Core.ClientBase + Offsets.Misc.SendPackets, 0);

Только, когда будешь тестить правильное решение, незабудь вернуть отправку пакетов, а то придется перезапускать игру.
как бы не это было странно но у меня да было bClient - client.dll, я поменял на engine base и результат один и тот же. ЛОЛ wtF???
 
как бы не это было странно но у меня да было bClient - client.dll, я поменял на engine base и результат один и тот же. ЛОЛ wtF???
Убери везде отправку пакетов и оставь только с 0 (false) и тогда проверь по очереди то, что я написла выше и поймешь
 
Последнее редактирование:
Назад
Сверху Снизу