-
Автор темы
- #1
в ксго сделал меню и с самого начала где можно выбрать где играть(с ботами или мм) меню открывается и закрывается идеально а когда запускаешь матч то тогда меню может открыться и не закрыться или наоборот на любом открытии меню(допустим когда открыл его 7 раз или 15), при этом меню работает нормально
Вот код
когда переместил из main.cpp в hooks.cpp ничего не изменилось
и еще если проверять _returnaddress в ендсцене то меню будет мигать и можно будет его открыть или закрыть при нажатии на кнопку вызова меню но это рандом
Вот код
hooks.cpp:
long __stdcall hooks::EndScene(IDirect3DDevice9* device) noexcept
{
if (!Variables::menu::init) {
InitGui::InitImGui(device);
Variables::menu::init = true;
}
if (GetKeyState(VK_INSERT) & 1)
{
Variables::menu::open = !Variables::menu::open;
}
if (Variables::menu::open) {
menuDraw::render();
}
return EndSceneOriginal(device, device);
}
main.cpp:
static HWND window = NULL;
WNDPROC oWndProc;
void InitGui::InitImGui(IDirect3DDevice9* device) {
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO();
ImGui::CustomColors();
Variables::ImFonts::LT25 = io.Fonts->AddFontFromMemoryTTF(Fonts::LobsterTwo_Regular, sizeof(Fonts::LobsterTwo_Regular), 10);
Variables::ImFonts::LT25 = io.Fonts->AddFontFromMemoryTTF(Fonts::LobsterTwo_Regular, sizeof(Fonts::LobsterTwo_Regular), 25);
Variables::ImFonts::LT40 = io.Fonts->AddFontFromMemoryTTF(Fonts::LobsterTwo_Regular, sizeof(Fonts::LobsterTwo_Regular), 40);
io.ConfigFlags = ImGuiConfigFlags_NoMouseCursorChange;
ImGui_ImplDX9_Init(device);
ImGui_ImplWin32_Init(window);
}
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT __stdcall WndProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
if (true && ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam))
return true;
return CallWindowProc(oWndProc, hWnd, uMsg, wParam, lParam);
}
BOOL CALLBACK EnumWindowsCallback(HWND handle, LPARAM lParam)
{
DWORD wndProcId;
GetWindowThreadProcessId(handle, &wndProcId);
if (GetCurrentProcessId() != wndProcId)
return TRUE; // skip to next window
window = handle;
return FALSE; // window found abort search
}
HWND GetProcessWindow()
{
window = NULL;
EnumWindows(EnumWindowsCallback, NULL);
return window;
}
DWORD WINAPI Setup(LPVOID lpParam)
{
do
window = GetProcessWindow();
while (window == NULL);
oWndProc = (WNDPROC)SetWindowLongPtr(window, GWL_WNDPROC, (LONG_PTR)WndProc);
Variables::ImGuiPrg::oWndProc = oWndProc;
Variables::ImGuiPrg::window = window;
memory::Setup();
interfaces::Setup();
netvars::Setup();
hooks::Setup();
while (!GetAsyncKeyState(VK_END))
std::this_thread::sleep_for(std::chrono::milliseconds(150));
hooks::Destroy();
FreeLibraryAndExitThread(static_cast<HMODULE>(lpParam), EXIT_SUCCESS);
}
BOOL APIENTRY DllMain(HMODULE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hinstDLL);
const HANDLE hThread = CreateThread(nullptr,NULL,Setup,hinstDLL,NULL,nullptr);
if (hThread)
CloseHandle(hThread);
}
return TRUE;
}
и еще если проверять _returnaddress в ендсцене то меню будет мигать и можно будет его открыть или закрыть при нажатии на кнопку вызова меню но это рандом