Гайд Делаем свои читы с нуля. Урок #2. Делаем триггербот.

Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,992
Реакции[?]
1,274
Поинты[?]
4K
Продолжение серии гайдов, в этом уроке напишем свой триггербот. Очистим наш прошлый проект оставив только это

Добавляем проверку на то живой наш персонаж или нет:
C++:
if (!LocalHealth)
    continue;
Добавляем новую переменную, которая будет проверять есть ли кто-то в нашем прицеле:
C++:
DWORD isTriggered = mem.Read<DWORD>(LocalPlayer + m_iCrosshairId);
if (!isTriggered || isTriggered > 64)
    continue;
После того, как у нас появился базовый адрес нашего объекта в прицеле создадим две новых переменных для проверки количества хп и команды нашего объекта:
C++:
DWORD EntityHp = mem.Read<DWORD>(EntityBase + m_iHealth);
DWORD EntityTeam = mem.Read<DWORD>(EntityBase + m_iTeamNum);
Дальше нам нужно получить базовый адрес игрока в прицеле, делается это вот так:
C++:
DWORD EntityBase = mem.Read<int>(clientAddr.dwBase + dwEntityList + (isTriggered - 1) * 0x10);
if (!EntityBase)
    continue;
Сравниваем значения, если здоровье врага не равно нулю, а также если объект не находится в нашей команде:
C++:
if (!EntityHp || EntityTeam == LocalTeam)
    continue;
Эмулируем нажатие на кнопку:
C++:
Sleep(5);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(15);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
C++:
#include <iostream>
#include "Memory.h"
#include "offsets.hpp"
using namespace hazedumper;
using namespace netvars;
using namespace signatures;
PModule clientAddr;
memory mem;
int main()
{
    while (!mem.Attach("csgo.exe", PROCESS_ALL_ACCESS)) {}
    clientAddr = mem.GetModule("client.dll");
    std::cout << "Initialized";
    while (true) {
        system("cls");
        DWORD LocalPlayer = mem.Read<DWORD>(clientAddr.dwBase + dwLocalPlayer);
        DWORD LocalTeam = mem.Read<DWORD>(LocalPlayer + m_iTeamNum);
        DWORD LocalHealth = mem.Read<DWORD>(LocalPlayer + m_iHealth);
        DWORD isTriggered = mem.Read<DWORD>(LocalPlayer + m_iCrosshairId);
        if (!isTriggered || isTriggered > 64)
            continue;
        if (!LocalHealth)
            continue;
        DWORD EntityBase = mem.Read<int>(clientAddr.dwBase + dwEntityList + (isTriggered - 1) * 0x10);
        if (!EntityBase)
            continue;
        DWORD EntityHp = mem.Read<DWORD>(EntityBase + m_iHealth);
        DWORD EntityTeam = mem.Read<DWORD>(EntityBase + m_iTeamNum);
        if (!EntityHp || EntityTeam == LocalTeam)
            continue;
        Sleep(5);
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        Sleep(15);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    }
    return 0;
}
Тем кто посчитает это бесполезным:
Остальным удачи!
 
Пользователь
Статус
Оффлайн
Регистрация
10 Ноя 2019
Сообщения
839
Реакции[?]
135
Поинты[?]
0
Как это так выходит? У тебя entitybase используется до определения
 
Пользователь
Статус
Оффлайн
Регистрация
10 Ноя 2019
Сообщения
839
Реакции[?]
135
Поинты[?]
0
Полный код для кого?
Я говорю про гайд, зачем мне полный код твой, оставлять полный код который не более чем сразу спастят не вникая лучше оставлять картинки, гайды такие cntrl c, cntrl v
 
Забаненный
Статус
Оффлайн
Регистрация
3 Июн 2021
Сообщения
33
Реакции[?]
4
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Будут ли ещё гайды?
 
ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,444
Реакции[?]
1,092
Поинты[?]
10K
как же больно смотреть на людей, которые пользуются возможностями ООП в плюсах
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Чё норм для новых,у меня на компе лежит хак который я написал на плюсах с 0,и фпс дохуя жрёт.У меня на высоких 300-400,а с читом было 50-80.
 
Начинающий
Статус
Оффлайн
Регистрация
24 Май 2020
Сообщения
197
Реакции[?]
25
Поинты[?]
0
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Начинающий
Статус
Оффлайн
Регистрация
24 Май 2020
Сообщения
197
Реакции[?]
25
Поинты[?]
0
скорее всего будет фризить,это не выход для оптимизации.Я бы все делал в нескольких потоках
1. Из-за этого не будет фризить
2. Пока нет задержки цикл работает максимально быстро насколько позволяет твоя система
3. Несколько потоков не освободят ресурсы.
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
1. Из-за этого не будет фризить
2. Пока нет задержки цикл работает максимально быстро насколько позволяет твоя система
3. Несколько потоков не освободят ресурсы.
Ресурсы не освободят в любом случае, но несколько потоков позволят быстрее обрабатывать инфу
 
Начинающий
Статус
Оффлайн
Регистрация
24 Май 2020
Сообщения
197
Реакции[?]
25
Поинты[?]
0
Ресурсы не освободят в любом случае, но несколько потоков позволят быстрее обрабатывать инфу
Как раз таки задержкой в цикле ты поставишь ограничение на скорость выполнения, следовательно снизишь нагрузку на ЦП. А несколько потоков тут не к чему.
Как раз таки "инфа" без задержки обрабатывается настолько быстро, что "съедает" весь твой FPS.
 
Последнее редактирование:
Сверху Снизу