Что делать по порядку
Перед каждым шагом закрывайте gta_sa.exe / samp.exe в диспетчере задач. Файлы
переименуйте, а не удаляйте — так легко откатить.
1. Локализуйте виновника
В C:\gta2 переименуйте:
- moonloader.asi → moonloader.asi.bak
- при наличии SAMPFUNCS.asi → SAMPFUNCS.asi.bak
- папку moonloader → moonloader_off
Запустите samp.exe:
- Запустилось → проблема точно в MoonLoader, его скриптах или конфликте хуков. Идите дальше.
- Всё ещё падает → виноват другой .asi / .dll в корне игры; сразу к п. 2 и п. 7.
Если Lua‑скрипты вам не нужны, можно просто оставить moonloader.asi.bak — это тоже рабочее решение.
2. Уберите сторонние d3d*‑обёртки
В корне игры временно переименуйте: d3d9.dll, d3d8.dll, d3d11.dll, dxgi.dll, opengl32.dll, enblocal.ini, папки dxvk, reshade-shaders, modloader.
Важно: настоящий системный d3d9.dll лежит в C:\Windows\System32. Если d3d9.dll лежит
в папке с игрой — это почти всегда ENB / ReShade / DXVK / «SA DirectX» / d3d8to9, и он перехватывает создание устройства. Именно такой конфликт чаще всего и даёт d3dhook:

riginalD3DDevice9.
Если у вас связка
ENB + DXVK/Vulkan (SA DirectX 3.0), есть проверенный вариант: DXVK‑шный d3d9.dll переименовать в dxvk_d3d9.dll, а в enblocal.ini прописать:
ini
[PROXY]
EnableProxyLibrary=true
InitProxyFunctions=true
ProxyLibrary=dxvk_d3d9.dll
Так лечили ровно этот же assert
1. Не скачивайте d3d9.dll с «dll‑сайтов» — там часто подсовывают левые/вредоносные библиотеки.
3. Обновите MoonLoader и ASI Loader
Если в moonloader.log стоит версия .026 / .026.5-beta — поставьте
0.27.0-preview3 или новее из официальной темы BlastHack: прямая ссылка на архив moonloader-027.0-preview3.zip
7.
Причина: в ветке .026 был баг — этот assert вызывался из деструктора
до полной инициализации D3D‑хука, поэтому любое раннее закрытие или краш игры выводило это окно, даже если сам MoonLoader был ни при чём. В .027 это исправлено
2. Заодно замените ASI Loader на актуальный (идёт в комплекте MoonLoader).
Нюансы:
- .027 — preview, часть старых скриптов под .026 может не завестись. Тогда верните .026.5 и ищите настоящий ранний краш по п. 4.
- Для .027 нужен Visual C++ 2015–2022 именно x86 1 — игра 32‑битная. Но одна переустановка VC++ без обновления MoonLoader обычно не помогает: в похожих темах её уже пробовали без результата 4.
4. Проверьте скрипты и логи
Вынесите все .lua из C:\gta2\moonloader\ и moonloader\lib\ во временную папку, запустите с «пустым» MoonLoader, потом добавляйте по одному. Смотрите moonloader/moonloader.log (и SAMPFUNCS.log): последний загруженный скрипт перед обрывом — главный подозреваемый. Из‑за бага .026 assert часто бывает лишь
следствием падения скрипта/игры, а не первопричиной.
5. Если стоит SAMPFUNCS
Обновите его, в SAMPFUNCS\sampfuncs-settings.ini выставьте multiprocess=true, временно уберите modloader. Это стандартный чек‑лист именно под эту ошибку
1 — не панацея, но при конфликте хуков помогает.