mindset studio — yougame.biz/threads/284270
-
Автор темы
- #1
Сначала скачиваем minhook, скачать можно в этой теме или по этой ссылке: http://www.filedropper.com/minhook2 и кидаем в папку с сурсами и включаем в проект.
1. Configs.hpp
- Добавляем это в misc struct: (Кто не шарит можно под bool anti_untrusted)
2. Configs.cpp
- Добавляем это в void C_ConfigManager::setup():
3. Hooks.hpp
- Ищем extern C_HookedEvents hooked_events
- И вставляем это под строчку которую мы нашли:
- Ищем class c_baseplayeranimationstate;
- И добавляем этот код под строчку которую мы нашли:
- Ищем LRESULT __stdcall Hooked_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
- И вставляем этот код над строчкой которую мы нашли:
- Ищем extern SetMouseCodeState_t o_SetMouseCodeState;
- И вставляем этот код под строчку которую мы нашли:
4. Hooks.cpp
- Ищем C_HookedEvents hooked_events;
- И вставляем этот код на строчкой которую мы нашли:
- Листаем в самый низ
- И вставляем этот код:
5. Main.cpp
- Добавляем эту строчку в самое начало:
- Ищем enum error_type
- И вставляем этот код над строчкой которую мы нашли:
- Ищем hooks::original_processinterpolatedlist
- И вставляем этот код после строчки которую мы нашли:
- Ищем hooks::hooked_events.RegisterSelf();
- И вставляем этот код над строчкой которую мы нашли:
- Ищем while (!(INIT::Window = IFH(FindWindow)(crypt_str("Valve001"), nullptr)))
- И вставляем где-нибудь рядом этот код:
P.S: Надеюсь вы догадаетсь как сделать в менюшке чекбокс
Credits: Shonax
1. Configs.hpp
- Добавляем это в misc struct: (Кто не шарит можно под bool anti_untrusted)
C++:
bool auto_accept_matchmaking;
- Добавляем это в void C_ConfigManager::setup():
C++:
setup_item(&g_cfg.misc.auto_accept_matchmaking, false, crypt_str("Misc.auto_accept_matchmaking"));
- Ищем extern C_HookedEvents hooked_events
- И вставляем это под строчку которую мы нашли:
C++:
extern vmthook* enginesound_hook;
- И добавляем этот код под строчку которую мы нашли:
C++:
struct SoundData {
std::byte pad[4];
int entityIndex;
int channel;
const char* soundEntry;
std::byte pad1[8];
float volume;
std::byte pad2[44];
};
- И вставляем этот код над строчкой которую мы нашли:
C++:
void __stdcall hooked_emitsound(SoundData data);
- И вставляем этот код под строчку которую мы нашли:
C++:
using EmitSound_t = void(__stdcall*)(SoundData data);
inline EmitSound_t oEmitSound;
- Ищем C_HookedEvents hooked_events;
- И вставляем этот код на строчкой которую мы нашли:
C++:
vmthook* enginesound_hook;
- И вставляем этот код:
C++:
void __stdcall hooks::hooked_emitsound(SoundData data)
{
static auto original_fn = oEmitSound;
if (g_cfg.misc.auto_accept_matchmaking) {
if (!strcmp(data.soundEntry, "UIPanorama.popup_accept_match_beep")) {
static auto fnAccept = reinterpret_cast<bool(__stdcall*)(const char*)>(util::FindSignature("client.dll", "55 8B EC 83 E4 F8 8B 4D 08 BA ? ? ? ? E8 ? ? ? ? 85 C0 75 12"));
static HWND window = FindWindow(NULL, "Counter-Strike: Global Offensive");
if (fnAccept) {
fnAccept("");
FLASHWINFO fi;
fi.cbSize = sizeof(FLASHWINFO);
fi.hwnd = window;
fi.dwFlags = FLASHW_ALL | FLASHW_TIMERNOFG;
fi.uCount = 0;
fi.dwTimeout = 0;
FlashWindowEx(&fi);
}
}
}
original_fn(data);
}
- Добавляем эту строчку в самое начало:
C++:
#include "minhook\minhook.h"
- И вставляем этот код над строчкой которую мы нашли:
C++:
inline unsigned int get_virtual(void* _class, unsigned int index) { return static_cast<unsigned int>((*static_cast<int**>(_class))[index]); }
- И вставляем этот код после строчки которую мы нашли:
C++:
MH_Initialize();
- И вставляем этот код над строчкой которую мы нашли:
C++:
MH_EnableHook(MH_ALL_HOOKS);
- И вставляем где-нибудь рядом этот код:
C++:
hooks::enginesound_hook = new vmthook(reinterpret_cast<DWORD**>(m_enginesound()));
const auto emitsound_target = reinterpret_cast<void*>(get_virtual(m_enginesound(), 5));
MH_CreateHook(emitsound_target, &hooks::hooked_emitsound, reinterpret_cast<void**>(&hooks::oEmitSound));
P.S: Надеюсь вы догадаетсь как сделать в менюшке чекбокс
Credits: Shonax
Вложения
-
25.1 KB Просмотры: 106
Последнее редактирование: