Гайд //DELETE

Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
Про тагерт:
misDist - это я так понимаю, максимальная дистанция, или угол до цели...
лучше юзать коллекцию структур. почему не моссив? по тому что число игроков которые будут в комнате заранее угадать затруднительно, а если кто-то выйдет из боя?
в том же мосиве, собирать данные об игроках в стиле

Код:
 struct PlayerInfo
{
    public float HP;
    public float Distance;
}
Далее делаем коллекцию
Код:
List<PlayerInfo> pInfo = new List<PlayerInfo>();
и тут становится ясно, как максимально точно определить максимальную и минимальную дистанцию к игроку.
Код:
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 необходимо заполнять и очищать регулярно.
так же можно определить максимальное и минимальное хп и рассчитать в тагерте учет хп, чтобы сперва добивало тех у кого меньше жизни, или аттаковало тех у кого больше по желанию. суть думаю ясна.

Про остальное, в целом, судить нет смысла, можно написать так, можно интересней, но вариант интересней не схавает паблик аудитория, по тому что не поймет как оно работает.
 
Пользователь
Статус
Оффлайн
Регистрация
14 Май 2017
Сообщения
225
Реакции[?]
55
Поинты[?]
0
Про тагерт:
misDist - это я так понимаю, максимальная дистанция, или угол до цели...
лучше юзать коллекцию структур. почему не моссив? по тому что число игроков которые будут в комнате заранее угадать затруднительно, а если кто-то выйдет из боя?
в том же мосиве, собирать данные об игроках в стиле

Код:
 struct PlayerInfo
{
    public float HP;
    public float Distance;
}
Далее делаем коллекцию
Код:
List<PlayerInfo> pInfo = new List<PlayerInfo>();
и тут становится ясно, как максимально точно определить максимальную и минимальную дистанцию к игроку.
Код:
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, но везде по разгному), а так Спасибо
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
А не подскажешь как сделать так чтобы после убийства одного на второго не переводилось (вроде 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: так же, стоит чуть чуть увеличивать скорость наведения на игроков с ножем в руках, так как с ножем вроде в кс быстрее бегают.
 
Пользователь
Статус
Оффлайн
Регистрация
14 Май 2017
Сообщения
225
Реакции[?]
55
Поинты[?]
0
обычно, это происходит, когда тагерт определяет более 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: так же, стоит чуть чуть увеличивать скорость наведения на игроков с ножем в руках, так как с ножем вроде в кс быстрее бегают.
Блин, огромное тебе спасибо, сегодня буду делать и последний вопрос:
Как сделать доводку на противника по расстоянию от прицела (у меня по расстоянию), у меня такая идея (взять центр экрана и перевести положение кости игрока на экран и там уже найти расстояние между ними) так или можно по другому?
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
Блин, огромное тебе спасибо, сегодня буду делать и последний вопрос:
Как сделать доводку на противника по расстоянию от прицела (у меня по расстоянию), у меня такая идея (взять центр экрана и перевести положение кости игрока на экран и там уже найти расстояние между ними) так или можно по другому?
получить окно игры (FindWindow) далее, проверить, является ли окно игры впереди остальных, т.е смотрит ли на него юзверь if(GetForegroundWindow() == FindWindow(игра, игра)), далее определить размеры окна игры GetWindowRect, как вычислить центр окна, думаю понятно.
далее, определяешь нужного игрока и тянешь позицию нужной кости, далее дергаешь дистанцию до кости обычным алгоритмом получения дистанции, просто считаешь, от центра окна, до кости, по X и Y.
 
Пользователь
Статус
Оффлайн
Регистрация
14 Май 2017
Сообщения
225
Реакции[?]
55
Поинты[?]
0
получить окно игры (FindWindow) далее, проверить, является ли окно игры впереди остальных, т.е смотрит ли на него юзверь if(GetForegroundWindow() == FindWindow(игра, игра)), далее определить размеры окна игры GetWindowRect, как вычислить центр окна, думаю понятно.
далее, определяешь нужного игрока и тянешь позицию нужной кости, далее дергаешь дистанцию до кости обычным алгоритмом получения дистанции, просто считаешь, от центра окна, до кости, по X и Y.
ну я так же хотел, ОК, спасибо
 
pCoder->trySet(LIFE);
Начинающий
Статус
Оффлайн
Регистрация
24 Апр 2017
Сообщения
64
Реакции[?]
21
Поинты[?]
0
Кароч сделал что-то похожее на silent aim:
undind mouse1
Silent aim:
Код:
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()
Код:
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:
Код:
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()
Код:
mem.Write(bClient + Offsets.oForceAttack, 5);
            Thread.Sleep(0x40);
            mem.Write(bClient + Offsets.oForceAttack, 4);
А чему у тебя равен bClient ? Не уж то базовый адресс Client.dll ?
А это нормально, что clientdll никак не работает с пакетами?..


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

// Твое решение
Core.Memory.Write<Byte>(Core.ClientBase + Offsets.Misc.SendPackets, 0);
Только, когда будешь тестить правильное решение, незабудь вернуть отправку пакетов, а то придется перезапускать игру.
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
14 Май 2017
Сообщения
225
Реакции[?]
55
Поинты[?]
0
А чему у тебя равен bClient ? Не уж то базовый адресс Client.dll ?
А это нормально, что clientdll никак не работает с пакетами?..


Код:
// Правильное решение
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???
 
pCoder->trySet(LIFE);
Начинающий
Статус
Оффлайн
Регистрация
24 Апр 2017
Сообщения
64
Реакции[?]
21
Поинты[?]
0
как бы не это было странно но у меня да было bClient - client.dll, я поменял на engine base и результат один и тот же. ЛОЛ wtF???
Убери везде отправку пакетов и оставь только с 0 (false) и тогда проверь по очереди то, что я написла выше и поймешь
 
Последнее редактирование:
Сверху Снизу