 |
|

27.07.2018, 20:58
|
|
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами:
6908018
Репутация:
213
|
|
Для начала нужно скачать пустой проект SF, это можно сделать в этой теме .
Открываем проект и в начало сразу вставляем:
C++:
Код:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
Для подключения ImGui нам понадобиться каллбеки на present, reset, wndproc.
Present:
C++:
Код:
bool
CALLBACK
Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
{
SF
->
getRender
(
)
->
EndRender
(
)
;
}
return
true
;
}
Reset:
C++:
Код:
HRESULT CALLBACK
Reset
(
D3DPRESENT_PARAMETERS
*
pPresentationParameters
)
{
return
true
;
}
Wndproc:
C++:
Код:
bool
CALLBACK
WndProcHandler
(
HWND hwd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
{
return
true
;
}
в mainloop регистрируем их:
C++:
Код:
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_PRESENT
,
Present
)
;
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_RESET
,
Reset
)
;
SF
->
getGame
(
)
->
registerWndProcCallback
(
SFGame
::
MEDIUM_CB_PRIORITY
,
WndProcHandler
)
;
Теперь можно перейти к подключению ImGui. Скачиваем и распаковываем в папке с проектом эти файлы:
C++:
Код:
imgui
.
cpp
imconfig
.
h
imgui
.
h
imgui_demo
.
cpp
imgui_draw
.
cpp
imgui_internal
.
h
stb_rect_pack
.
h
stb_textedit
.
h
stb_truetype
.
h
Переходим в папку examples и добавляем в проект 4 файла:
C++:
Код:
imgui_impl_dx9
.
cpp
imgui_impl_dx9
.
h
imgui_impl_win32
.
cpp
imgui_impl_win32
.
h
В начало main.cpp добавляем #include:
C++:
Код:
#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
#include
#define DIRECTINPUT_VERSION 0x0800
#include
#include
extern
LRESULT
ImGui_ImplWin32_WndProcHandler
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
LPARAM lParam
)
;
После успешного добавления файлов, можно перейти к инициализации, она будет проходить в mainloop.Для инициализации нам нужен hwnd окна и device.
C++:
Код:
ImGui
::
CreateContext
(
)
;
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
(
void
)
io
;
ImGui_ImplWin32_Init
(
GetActiveWindow
(
)
)
;
ImGui_ImplDX9_Init
(
SF
->
getRender
(
)
->
getD3DDevice
(
)
)
;
Перейдем к презенту:
C++:
Код:
ImGui_ImplDX9_NewFrame
(
)
;
ImGui_ImplWin32_NewFrame
(
)
;
ImGui
::
NewFrame
(
)
;
if
(
activew
)
{
ImGui
::
Begin
(
"ImGui меню"
,
&
activew
,
ImVec2
(
305
,
160
)
,
0.8f
,
ImGuiWindowFlags_NoCollapse
|
ImGuiWindowFlags_NoSavedSettings
|
ImGuiWindowFlags_NoResize
)
;
{
ImGui
::
Checkbox
(
"Aimbot"
,
&
bAimbot
)
;
ImGui
::
Checkbox
(
"WH"
,
&
bAimbot
)
;
ImGui
::
Checkbox
(
"SpeedHack"
,
&
bAimbot
)
;
ImGui
::
Checkbox
(
"Что-то крутое"
,
&
bAimbot
)
;
}
ImGui
::
End
(
)
;
}
ImGui
::
EndFrame
(
)
;
ImGui
::
Render
(
)
;
ImGui_ImplDX9_RenderDrawData
(
ImGui
::
GetDrawData
(
)
)
;
Добавляем в reset:
C++:
Код:
ImGui_ImplDX9_InvalidateDeviceObjects
(
)
;
В Wndproc:
C++:
Код:
ImGui_ImplWin32_WndProcHandler
(
hwd
,
msg
,
wParam
,
lParam
)
;
Добавляем выгрузку плагина:
C++:
Код:
//Вставляем функцию перед mainloop:
void
CALLBACK
PluginFree
(
)
{
ImGui_ImplDX9_Shutdown
(
)
;
ImGui_ImplWin32_Shutdown
(
)
;
ImGui
::
DestroyContext
(
)
;
}
SF
->
getGame
(
)
->
registerGameDestructorCallback
(
PluginFree
)
;
// в mainloop регистрируем каллбек
В итоге у вас должно получится вот это:
На момент написания гайда использовалась версия: 1.63
|
|
|

27.07.2018, 21:25
|
|
Постоянный
Регистрация: 26.08.2015
Сообщений: 435
С нами:
5639155
Репутация:
108
|
|
как такое же сделать с аси подскажите плс
|
|
|

27.07.2018, 21:26
|
|
Постоянный
Регистрация: 15.04.2017
Сообщений: 602
С нами:
4778331
Репутация:
63
|
|
прикинь точно так же
|
|
|

27.07.2018, 21:29
|
|
Флудер
Регистрация: 03.08.2016
Сообщений: 2,363
С нами:
5145387
Репутация:
183
|
|
вроде @mkrn делал проект с подключенным имгуи
|
|
|

27.07.2018, 21:33
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от imring
вроде @mkrn делал проект с подключенным имгуи
И без выгрузки Imgui. Кстати, тут тоже самое.
|
|
|

28.07.2018, 00:56
|
|
Познающий
Регистрация: 19.02.2017
Сообщений: 67
С нами:
4856796
Репутация:
68
|
|
Сообщение от Dark_Knight
И без выгрузки Imgui. Кстати, тут тоже самое.
это был твой проект с фиксом некоторых багов, соре 
|
|
|

28.07.2018, 01:24
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от mkrn
это был твой проект с фиксом некоторых багов, соре
Ага. Пофиксил так, что убрал деиницилизацию imgui
|
|
|

28.07.2018, 03:39
|
|
Познающий
Регистрация: 19.02.2017
Сообщений: 67
С нами:
4856796
Репутация:
68
|
|
Сообщение от Dark_Knight
Ага. Пофиксил так, что убрал деиницилизацию imgui
ничего не убирал. Быть может вы путаете мой проект с каким-то другим, сударь?
|
|
|

28.07.2018, 03:55
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от mkrn
ничего не убирал. Быть может вы путаете мой проект с каким-то другим, сударь?
Человек утверждал, что это твой проект. Никакого в нем декстуктора плагина не увидел даже.
|
|
|

28.07.2018, 04:13
|
|
Познающий
Регистрация: 19.02.2017
Сообщений: 67
С нами:
4856796
Репутация:
68
|
|
Сообщение от Dark_Knight
Человек утверждал, что это твой проект. Никакого в нем декстуктора плагина не увидел даже.
Софт - ImGUI(https://blast.hk/threads/12387/)
в моём проекте всё точно так же как и здесь, только исправлены параметры ресета и в imgui.cpp там фикс с разрешением экрана связанный. Вся кривизна, до которой в этом проекте можно доебаться, сделана тобой и ебать себе мозг с ней у меня не было ни малейшего желания. Свой проект я делал бы по-другому, а в этом моей целью было только лишь то, чтобы он нормально работал и не крашил из-за того, что дарк_кнуйт решил из презента параметры в ресет ебануть
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|