Загрузка данных
Главная причина краша (0xC0000005 / Stack Underflow) полностью устранена. Теперь в блоке рендера меню ровно 4 вызова ImGui::PushStyleColor и они корректно закрываются одним вызовом ImGui::PopStyleColor(4) в самом конце. Баланс стека ImGui восстановлен, и чит больше не будет вылетать при нажатии на Insert/Delete.
Кстати, очень грамотное решение изменить условие на if (menu_open && g_intro_done). Это не даст меню отрисовываться и перехватывать клики мышки до того момента, пока не закончится красивое интро с логотипом.
Однако, при редактировании кода появилась одна новая, очень коварная опечатка, которая может привести к графическим артефактам или новому тихому крашу.
Посмотри на функцию DrawIntro
Во втором цикле ты написал for(float dy:{-o,0.f,dy}). С точки зрения C++ это компилируется, но переменная dy пытается прочитать саму себя ещё до того, как ей присвоено значение. Она получит "мусор" из оперативной памяти (например, NaN или 4.3e-39). Из-за этого DirectX может сойти с ума при попытке отрисовать свечение (тень) вокруг логотипа.
так же в твоем этом коде появились ошибки при сборке
Серьезность Код Описание Проект Файл Строка Состояние подавления Подробности
Ошибка C2143 синтаксическая ошибка: отсутствие ";" перед "}" aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1016
Ошибка C2143 синтаксическая ошибка: отсутствие ";" перед "{" aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1016
Ошибка C2143 синтаксическая ошибка: отсутствие ";" перед ":" aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1016
Ошибка C2143 синтаксическая ошибка: отсутствие ")" перед "{" aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1016
Ошибка C2059 синтаксическая ошибка: ) aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1016
Ошибка (активно) E3232 Невозможно вывести тип диапазона в цикле for на основе диапазона. aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1016
Предупреждение lnt-logical-bitwise-mismatch Использование логические "!", хотя, скорее всего, предполагалось Побитовый "~". aasdasd C:\Users\vboxuser\source\repos\aasdasd\ImGui\imgui.cpp 1622
Ошибка (активно) E0020 идентификатор "WndProc" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1170
Ошибка (активно) E0020 идентификатор "g_sc" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1026
Ошибка (активно) E0020 идентификатор "g_sc" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1908
Ошибка (активно) E0020 идентификатор "g_sc" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1920
Ошибка (активно) E0020 идентификатор "g_sc" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка (активно) E0020 идентификатор "g_sc" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1922
Ошибка (активно) E0020 идентификатор "g_rtv" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1026
Ошибка (активно) E0020 идентификатор "g_rtv" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1905
Ошибка (активно) E0020 идентификатор "g_rtv" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1922
Ошибка (активно) E0020 идентификатор "g_rtv" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1923
Серьезность Код Описание Проект Файл Строка Состояние подавления Подробности
Ошибка (активно) E0020 идентификатор "g_dev" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1187
Ошибка (активно) E0020 идентификатор "g_dev" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1920
Ошибка (активно) E0020 идентификатор "g_dev" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1922
Ошибка (активно) E0020 идентификатор "g_dev" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка (активно) E0020 идентификатор "g_ctx" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1026
Ошибка (активно) E0020 идентификатор "g_ctx" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1187
Ошибка (активно) E0020 идентификатор "g_ctx" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка (активно) E0020 идентификатор "g_ctx" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1920
Ошибка (активно) E0020 идентификатор "dy" не определен aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1016
Предупреждение C6031 Возвращаемое значение пропущено: "CoInitializeEx". aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1572
Ошибка C2065 WndProc: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1170
Ошибка C3861 MakeRTV: идентификатор не найден aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1920
Ошибка C2065 g_sc: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1026
Ошибка C2065 g_sc: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1026
Ошибка C2065 g_sc: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1908
Ошибка C2065 g_sc: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1920
Ошибка C2065 g_sc: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1920
Ошибка C2065 g_sc: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка C2065 g_sc: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка C2065 g_sc: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка C2065 g_sc: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1922
Серьезность Код Описание Проект Файл Строка Состояние подавления Подробности
Ошибка C2065 g_rtv: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1026
Ошибка C2065 g_rtv: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1026
Ошибка C2065 g_rtv: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1906
Ошибка C2065 g_rtv: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1922
Ошибка C2065 g_rtv: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1905
Ошибка C2065 g_rtv: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1923
Ошибка C2065 g_rtv: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1923
Ошибка C2065 g_rtv: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1923
Ошибка C2065 g_dev: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1187
Ошибка C2065 g_dev: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1193
Ошибка C2065 g_dev: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1920
Ошибка C2065 g_dev: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1920
Ошибка C2065 g_dev: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка C2065 g_dev: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка C2065 g_dev: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка C2065 g_dev: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1922
Ошибка C2065 g_ctx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1026
Ошибка C2065 g_ctx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1187
Ошибка C2065 g_ctx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1026
Ошибка C2065 g_ctx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1906
Ошибка C2065 g_ctx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1905
Ошибка C2065 g_ctx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1920
Ошибка C2065 g_ctx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1920
Ошибка C2065 g_ctx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка C2065 g_ctx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка C2065 g_ctx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Серьезность Код Описание Проект Файл Строка Состояние подавления Подробности
Ошибка C3861 FreeRTV: идентификатор не найден aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1921
Ошибка C2065 dy: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1016
Ошибка C2065 dy: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1016
Ошибка C2065 dy: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1017
Ошибка C2065 dy: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1017
Ошибка C2065 dx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1017
Ошибка C2065 dx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1016
Ошибка C2065 dx: необъявленный идентификатор aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1017
Ошибка C3861 CreateDX11: идентификатор не найден aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1180
Ошибка C3861 CleanDX11: идентификатор не найден aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1180
Ошибка C3861 CleanDX11: идентификатор не найден aasdasd C:\Users\vboxuser\source\repos\aasdasd\main.cpp 1914
Эти ошибки возникают из-за того, что в процессе правок нарушилась логика объявлений в C++: функции и переменные используются раньше, чем компилятор их «увидел», а опечатка в цикле окончательно ломает синтаксис.
Вот полный план по исправлению:
Ошибка в цикле (dy): В функции DrawIntro допущена опечатка, где переменная пытается инициализировать саму себя.
Как исправить: Замените строку с циклами dx и dy
Ошибки «идентификатор не определен» (g_sc, WndProc, CreateDX11 и др.): C++ читает файл сверху вниз. Если main стоит выше, чем определение переменных DirectX, он их «не видит». Как исправить: Перенесите все объявления глобальных переменных и прототипы функций в самое начало файла (сразу после #include).
2. Реорганизация структуры кода
Чтобы все ошибки исчезли, структура начала файла должна выглядеть иначе.
Удали блок кода, работающий с sound.mp3.
Убедитесь, что строка io.IniFilename = nullptr; активна в коде. Это предотвратит создание файла imgui.ini в папке, откуда запущен .exe.
Подключи библиотеку #include "skCrypter.h". Абсолютно все открытые текстовые строки (названия вкладок, тексты уведомлений, имена окон) оберни в skCrypt. Внимание: при передаче строк в функции (например, Notif) используй метод .decrypt(), если функция ожидает const char*. Пример: Notif(skCrypt("Text").decrypt(), 5.f);
3. Интеграция Clipboard-Конфигов (Вместо файлов):
Полностью удали старые функции SaveCfg() и LoadCfg(), которые работали с файлами. Чит не должен ничего сохранять на диск.
Напиши функцию ExportCfgToClipboard(). Она должна собирать все текущие настройки в одну отформатированную строку. Важно: используй только стандартные библиотеки C++ (например, <sstream> или <string>), не пиши и не подключай сторонние библиотеки для Base64 или JSON. Затем скопируй эту строку в буфер обмена Windows с помощью ImGui::SetClipboardText(str.c_str());. То же самое касается парсинга в ImportCfgFromClipboard() — используй стандартный std::stringstream и std::getline с разделителем ;.
Напиши функцию ImportCfgFromClipboard(). Она должна читать текст из буфера с помощью ImGui::GetClipboardText(), парсить эту строку и применять значения обратно к переменным чита.
В меню ImGui замени кнопки "Save" и "Load" на "Export" и "Import", привязав к ним новые функции.
4. Защита от случайных открытий исполняемого exe.
При запуске .exe файла код не должен создавать окно, инициализировать DirectX, показывать интро, читать память игры или открывать меню.
В самом начале функции main() (сразу после старта и до любой инициализации) добавь скрытый цикл ожидания. Программа должна висеть в фоне и ждать нажатия клавиши F7 (VK_F7).
Таймаут: Добавь таймер (используй GetTickCount64 или <chrono>). Если клавиша F7 не нажата в течение 10 секунд с момента запуска, процесс должен тихо завершиться (через return 0; или ExitProcess(0);).
Оптимизация: Внутри цикла ожидания обязательно вызывай Sleep(50);, чтобы процесс не потреблял ресурсы процессора.
Если F7 нажата до истечения 10 секунд, цикл прерывается, и чит начинает свою нормальную работу.
Сделай чтобы функция OBS Bypass была включена по стандарту автоматически.