Вопрос Помогите пожалуйста с Glow

Начинающий
Статус
Оффлайн
Регистрация
6 Ноя 2018
Сообщения
20
Реакции[?]
0
Поинты[?]
0
Проблема состоит в том что обводка отображается на всех игроках, как сделать чтобы она отображалась только на противниках.

Код:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include "Offsets.h" // Offsets

using namespace std;

uintptr_t moduleBase;
HANDLE TargetProccess;
HWND GameHWND;

DWORD flashDuration = 0x10470; // Flash duration offset
uintptr_t isSpotted = 0x93D; // Enemy tags on radar

int flashDur = 0;

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

template <typename T>
void WPM(DWORD address, T value) {
    WriteProcessMemory(TargetProccess, (LPVOID) address, &value, sizeof(value), 0);
}

uintptr_t GetModuleBaseAddress(DWORD dwPid, const wchar_t* moduleName) {
    uintptr_t dwBase = 0;

    do {
        HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, dwPid);

        if (hSnapshot == INVALID_HANDLE_VALUE) continue;

        MODULEENTRY32 ModuleEntry32;
        ModuleEntry32.dwSize = sizeof(MODULEENTRY32);

        if (Module32First(hSnapshot, &ModuleEntry32)) {
            do {
                if (!wcscmp(ModuleEntry32.szModule, moduleName)) {
                    dwBase = (DWORD) ModuleEntry32.modBaseAddr;
                    break;
                }
            } while (Module32Next(hSnapshot, &ModuleEntry32));
        }
        CloseHandle(hSnapshot);
    } while (!dwBase);

    return dwBase;
}

//Making glow
void makeGlow(uintptr_t glowObj, int glowIndx) {
    WPM<float>(glowObj + glowIndx * 0x38 + 0x8, 255); // red
    WPM<float>(glowObj + glowIndx * 0x38 + 0xC, 68); // green
    WPM<float>(glowObj + glowIndx * 0x38 + 0x10, 0); // blue
    WPM<float>(glowObj + glowIndx * 0x38 + 0x14, 1); // alpha
    WPM<bool>(glowObj + glowIndx * 0x38 + 0x28, 1); // enable glow if 1, disabled if 0
    WPM<bool>(glowObj + glowIndx * 0x38 + 0x29, 0);
}

//Enabling Wallhack
void wallHack() {

    uintptr_t  dwGlowManager = RPM<uintptr_t>(moduleBase + dwGlowObjectManager);

    int localTeam = RPM<int>(RPM<uintptr_t>(moduleBase + dwEntityList) + m_iTeamNum);

    for (int i = 0; i < 64; i++) {

        uintptr_t pEnt = RPM<uintptr_t>(moduleBase + dwEntityList + i * 0x10);

        radarHack(pEnt); // radar

        int enemyPlayer = RPM<int>(pEnt + m_iTeamNum);
       
        if (pEnt == 0) break;

        int iGlowIndx = RPM<int>(pEnt + m_iGlowIndex);

        makeGlow( dwGlowManager, iGlowIndx);  

    }
}

//Run cheats
void activateHacks() {

    while (true) {

        uintptr_t localPlayer = RPM<DWORD>(moduleBase + dwLocalPlayer);
       
        if (GetKeyState(VK_F1) &1) {
            wallHack();
        }

        Sleep(1);
    }
}
 
Участник
Статус
Оффлайн
Регистрация
21 Сен 2019
Сообщения
594
Реакции[?]
250
Поинты[?]
23K
Проблема состоит в том что обводка отображается на всех игроках, как сделать чтобы она отображалась только на противниках.

Код:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include "Offsets.h" // Offsets

using namespace std;

uintptr_t moduleBase;
HANDLE TargetProccess;
HWND GameHWND;

DWORD flashDuration = 0x10470; // Flash duration offset
uintptr_t isSpotted = 0x93D; // Enemy tags on radar

int flashDur = 0;

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

template <typename T>
void WPM(DWORD address, T value) {
    WriteProcessMemory(TargetProccess, (LPVOID) address, &value, sizeof(value), 0);
}

uintptr_t GetModuleBaseAddress(DWORD dwPid, const wchar_t* moduleName) {
    uintptr_t dwBase = 0;

    do {
        HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, dwPid);

        if (hSnapshot == INVALID_HANDLE_VALUE) continue;

        MODULEENTRY32 ModuleEntry32;
        ModuleEntry32.dwSize = sizeof(MODULEENTRY32);

        if (Module32First(hSnapshot, &ModuleEntry32)) {
            do {
                if (!wcscmp(ModuleEntry32.szModule, moduleName)) {
                    dwBase = (DWORD) ModuleEntry32.modBaseAddr;
                    break;
                }
            } while (Module32Next(hSnapshot, &ModuleEntry32));
        }
        CloseHandle(hSnapshot);
    } while (!dwBase);

    return dwBase;
}

//Making glow
void makeGlow(uintptr_t glowObj, int glowIndx) {
    WPM<float>(glowObj + glowIndx * 0x38 + 0x8, 255); // red
    WPM<float>(glowObj + glowIndx * 0x38 + 0xC, 68); // green
    WPM<float>(glowObj + glowIndx * 0x38 + 0x10, 0); // blue
    WPM<float>(glowObj + glowIndx * 0x38 + 0x14, 1); // alpha
    WPM<bool>(glowObj + glowIndx * 0x38 + 0x28, 1); // enable glow if 1, disabled if 0
    WPM<bool>(glowObj + glowIndx * 0x38 + 0x29, 0);
}

//Enabling Wallhack
void wallHack() {

    uintptr_t  dwGlowManager = RPM<uintptr_t>(moduleBase + dwGlowObjectManager);

    int localTeam = RPM<int>(RPM<uintptr_t>(moduleBase + dwEntityList) + m_iTeamNum);

    for (int i = 0; i < 64; i++) {

        uintptr_t pEnt = RPM<uintptr_t>(moduleBase + dwEntityList + i * 0x10);

        radarHack(pEnt); // radar

        int enemyPlayer = RPM<int>(pEnt + m_iTeamNum);

        if (pEnt == 0) break;

        int iGlowIndx = RPM<int>(pEnt + m_iGlowIndex);

        makeGlow( dwGlowManager, iGlowIndx);

    }
}

//Run cheats
void activateHacks() {

    while (true) {

        uintptr_t localPlayer = RPM<DWORD>(moduleBase + dwLocalPlayer);

        if (GetKeyState(VK_F1) &1) {
            wallHack();
        }

        Sleep(1);
    }
}
Что за вермишель с DWORD и uintptr? Определись с одним типом( рекомендую uintptr потому-что он динамичен( x86/x64 ) в отличии от DWORD, который только для x86 ).
Как видно по коду, у тебя уже определена переменная с командой противника и локальной сущности. Тогда после if (pEnt == 0) break; пишем следующее:
if ( localTeam == enemyPlayer )
continue;
либо вместо этого в том же условии добавляем эту проверку, чтобы получилось вот так:
if ( pEnt == 0 || localTeam == enemyPlayer ) continue; Кстати было бы неплохо тебе узнать об операторе break, потому-что он явно здесь не нужен, и надо использовать оператор continue
Ну и как я понимаю, ты это напастил, потому-что если бы ты сам это написал, то у тебя не возникло бы проблем с такой банальной логикой. Так ты точно не научишься делать читы, бросай эту хуйню и НАЧИНАЙ ПРОГРАММИРОВАТЬ ПРЯМО СЕЙЧАС!
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
6 Ноя 2018
Сообщения
20
Реакции[?]
0
Поинты[?]
0
Что за вермишель с DWORD и uintptr? Определись с одним типом( рекомендую uintptr потому-что он динамичен( x86/x64 ) в отличии от DWORD, который только для x86 ).
Как видно по коду, у тебя уже определена переменная с командой противника и локальной сущности. Тогда делай после этого так:
if ( localteam == enemyPlayer )
return;

Ну и как я понимаю, ты это напастил, потому-что если бы ты сам это написал, то у тебя не возникло бы проблем с такой банальной логикой. Так ты точно не научишься делать читы, бросай эту хуйню и НАЧИНАЙ ПРОГРАММИРОВАТЬ ПРЯМО СЕЙЧАС!
не с этим то никто и не спорит, это паста
вот еще бы понять с чего начать програмирование)
я еще учусь и пытаюсь понять код по таким простеньким исходникам.
 
Участник
Статус
Оффлайн
Регистрация
21 Сен 2019
Сообщения
594
Реакции[?]
250
Поинты[?]
23K
не с этим то никто и не спорит, это паста
вот еще бы понять с чего начать програмирование)
я еще учусь и пытаюсь понять код по таким простеньким исходникам.
Код ты так не поймешь, а вот забьешь на это такими темпами ты точно быстро. Вперёд на

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
Сверху Снизу