Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Помогите лопушку

Статус
В этой теме нельзя размещать новые ответы.
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
3 Май 2020
Сообщения
4
Реакции
0
C#:
Expand Collapse Copy
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>

#define m_iTeamNum 0xF4
#define dwLocalPlayer 0xD36B94
#define dwEntityList 0x4D4B144
#define m_iCrosshairId 0xB3D4

uintptr_t moduleBase;
DWORD procId;
HWND hwnd;
HANDLE hProcess;

uintptr_t GetModuleBaseAddress(const char* modName) {
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId);
    if (hSnap != INVALID_HANDLE_VALUE) {
        MODULEENTRY32 modEntry;
        modEntry.dwSize = sizeof(modEntry);
        if (Module32First(hSnap, &modEntry)) {
            do {
                if (!strcmp(modEntry.szModule, modName)) {
                    CloseHandle(hSnap);
                    return (uintptr_t)modEntry.modBaseAddr;
                }
            } while (Module32Next(hSnap, &modEntry));
        }
    }
}

template<typename T> T RPM(SIZE_T address) {
    T buffer;
    ReadProcessMemory(hProcess, (LPCVOID)address, &buffer, sizeof(T), NULL);
    return buffer;
}

uintptr_t getLocalPlayer() {
    return RPM< uintptr_t>(moduleBase + dwLocalPlayer);
}

uintptr_t getPlayer(int index) {
    return RPM< uintptr_t>(moduleBase + dwEntityList + index * 0x10);
}

int getTeam(uintptr_t player) {
    return RPM<int>(player + m_iTeamNum);
}

int getCrosshairID(uintptr_t player) {
    return RPM<int>(player + m_iCrosshairId);
}

int main() {
    hwnd = FindWindowA(NULL, "Counter-Strike: Global Offensive");
    GetWindowThreadProcessId(hwnd, &procId);
    moduleBase = GetModuleBaseAddress("client_panorama.dll");
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, procId);
    while (!GetAsyncKeyState(VK_END)) {
        int CrosshairID = getCrosshairID(getLocalPlayer());
        int CrosshairTeam = getTeam(getPlayer(CrosshairID-1));
        int LocalTeam = getTeam(getLocalPlayer());
        if (CrosshairID > 0 && CrosshairID < 32 && LocalTeam != CrosshairTeam)
        {
            if (GetAsyncKeyState(VK_LBUTTON))
            {
                mouse_event(MOUSEEVENTF_MIDDLEDOWN, NULL, NULL, 0, 0);
                mouse_event(MOUSEEVENTF_MIDDLEUP, NULL, NULL, 0, 0);
            }
        }
    }

}
В общем суть этой писанины в том, что при зажатии ЛКМ будет работать простейший тригербот. Только в настройках управления кс надо изменить огонь на mouse3(Делал только под себя)

Можете сказать мне почему этот кусок "чуда" не работает?)
 
Последнее редактирование:
1. Вообще не делаешь ни одной проверки, открылся у тебя процесс, прочиталась ли память. нашлось ли окно, и т.д.
2. Жжешь цпу загоняя его в этом цикле, с производительностью без слипа будет хуже чем без. Так что поставь слип хотя бы когда у тебя хоткей не активен, а то от такого цикла даже мой брейн тротлит.
Плюс у тебя куча действий, которые в итоге бесполезны без горячей клавиши, поэтому вынеси эту проверку наверх, Еще раздели проверки CrosshairID > 0 && CrosshairID < 32 и LocalTeam != CrosshairTeam.
3. Не закрываешь хэндл снимка модулей если модуль не найден.
Однако конкретную причину не знаю, тебе стоило бы поотлаживать это дело.
 
Последнее редактирование:
Да просто вчера в час ночи все было ок, а вот под вечер уже не работало. Но за советы спасибо.
 
Пофикшено, можно закрывать.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу