- 4,805
- 6,490
Вынес хук девайса из своего шаблона аси-плагинов в отдельный модуль и спешу поделиться им. В отличие от других хуков dx9, данный хук можно выгружать даже такой ситуации:
Как создать хук?
Как что-то нарисовать в Present?
Как реинициализировать объект в Reset?
А теперь более сложные вопросы.
Как использовать без CMake?
Скачать:
Если вы используете git, то надо забрать модуль с подмодулями:
Если вы не используете гит, то Вам придется перейти в репозитории подмодулей и выкачать еще и их. Проще использовать гит
hook->hook->этот hook->hook->game
. Конечно такая выгрузка не обходится бесплатно, мы жертвуем примерно 150 байт памяти при выгрузке. Данная память остается не выгруженной для работы прослойки, поддерживающей передачу вызовов между хуками, которые располагались до и после d3d9hook.Как создать хук?
C++:
auto hook = new d3d9hook(*(IDirect3DDevice9**)0xC97C28); // Код для GTA: SA. В других играх надо искать указатель на девайс
C++:
hook->onDraw += [&](){
// Что-то рисуем
};
C++:
hook->onPreReset += [&](){
// Инвалидация объектов
};
hook->onPostReset += [&](){
// Инициализация объектов
};
А теперь более сложные вопросы.
Как использовать без CMake?
Необходимо добавить папки SRSignal и SRHookVtable в глобальную область инклюдов, что бы содержащиеся в них файлы можно было инклюдить через угловые скобки
Как использовать без CMake и не ебаться с видимостью инклюдов?
C++:
// Заменить эти строки в файле d3d9hook.h:
#include <SRHookVtableExt.hpp>
#include <SRSignal.hpp>
// На эти:
#include "SRHookVtable/SRHookVtableExt.hpp"
#include "SRSignal/SRSignal.hpp"
Скачать:
Если вы используете git, то надо забрать модуль с подмодулями:
git clone --recursive https://gitlab.com/SR_team/d3d9hook
Если вы не используете гит, то Вам придется перейти в репозитории подмодулей и выкачать еще и их. Проще использовать гит