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