-
Автор темы
- #1
Продолжение серии гайдов, в этом уроке напишем свой триггербот. Очистим наш прошлый проект оставив только это
Добавляем проверку на то живой наш персонаж или нет:
Добавляем новую переменную, которая будет проверять есть ли кто-то в нашем прицеле:
После того, как у нас появился базовый адрес нашего объекта в прицеле создадим две новых переменных для проверки количества хп и команды нашего объекта:
Дальше нам нужно получить базовый адрес игрока в прицеле, делается это вот так:
Сравниваем значения, если здоровье врага не равно нулю, а также если объект не находится в нашей команде:
Эмулируем нажатие на кнопку:
Тем кто посчитает это бесполезным:
Остальным удачи!
Добавляем проверку на то живой наш персонаж или нет:
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;
}