
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
ничего не убирал. Быть может вы путаете мой проект с каким-то другим, сударь?
|
|
|

29.07.2018, 19:31
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Кто знает в чём проблема?
Код:
Код:
imgui_impl_dx9.cpp
main.cpp
Создание кода...
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetActiveWindow@0 в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImGuiContext * __cdecl ImGui::CreateContext(struct ImFontAtlas *)" (?CreateContext@ImGui@@YAPAUImGuiContext@@PAUImFontAtlas@@@Z) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImGuiIO & __cdecl ImGui::GetIO(void)" (?GetIO@ImGui@@YAAAUImGuiIO@@XZ) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::EndFrame(void)" (?EndFrame@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::Render(void)" (?Render@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImDrawData * __cdecl ImGui::GetDrawData(void)" (?GetDrawData@ImGui@@YAPAUImDrawData@@XZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::End(void)" (?End@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui::Checkbox(char const *,bool *)" (?Checkbox@ImGui@@YA_NPBDPA_N@Z) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui::Begin(char const *,bool *,struct ImVec2 const &,float,int)" (?Begin@ImGui@@YA_NPBDPA_NABUImVec2@@MH@Z) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui_ImplDX9_Init(void *,struct IDirect3DDevice9 *)" (?ImGui_ImplDX9_Init@@YA_NPAXPAUIDirect3DDevice9@@@Z) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_NewFrame(void)" (?ImGui_ImplDX9_NewFrame@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_RenderDrawData(struct ImDrawData *)" (?ImGui_ImplDX9_RenderDrawData@@YAXPAUImDrawData@@@Z) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_InvalidateDeviceObjects(void)" (?ImGui_ImplDX9_InvalidateDeviceObjects@@YAXXZ) в функции "long __stdcall Reset(struct _D3DPRESENT_PARAMETERS_ *)" (?Reset@@YGJPAU_D3DPRESENT_PARAMETERS_@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "long __cdecl ImGui_ImplWin32_WndProcHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?ImGui_ImplWin32_WndProcHandler@@YAJPAUHWND__@@IIJ@Z) в функции "bool __stdcall WndProcHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProcHandler@@YG_NPAUHWND__@@IIJ@Z)
C:\Users\User\source\repos\SFPlugin\\bin\SFPlugin.sf : fatal error LNK1120: неразрешенных внешних элементов: 14
|
|
|

29.07.2018, 20:01
|
|
Участник форума
Регистрация: 06.01.2016
Сообщений: 154
С нами:
5447649
Репутация:
28
|
|
Сообщение от Musaigen
Кто знает в чём проблема?
Код:
Код:
imgui_impl_dx9.cpp
main.cpp
Создание кода...
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetActiveWindow@0 в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImGuiContext * __cdecl ImGui::CreateContext(struct ImFontAtlas *)" (?CreateContext@ImGui@@YAPAUImGuiContext@@PAUImFontAtlas@@@Z) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImGuiIO & __cdecl ImGui::GetIO(void)" (?GetIO@ImGui@@YAAAUImGuiIO@@XZ) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::EndFrame(void)" (?EndFrame@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::Render(void)" (?Render@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "struct ImDrawData * __cdecl ImGui::GetDrawData(void)" (?GetDrawData@ImGui@@YAPAUImDrawData@@XZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui::End(void)" (?End@ImGui@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui::Checkbox(char const *,bool *)" (?Checkbox@ImGui@@YA_NPBDPA_N@Z) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui::Begin(char const *,bool *,struct ImVec2 const &,float,int)" (?Begin@ImGui@@YA_NPBDPA_NABUImVec2@@MH@Z) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl ImGui_ImplDX9_Init(void *,struct IDirect3DDevice9 *)" (?ImGui_ImplDX9_Init@@YA_NPAXPAUIDirect3DDevice9@@@Z) в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_NewFrame(void)" (?ImGui_ImplDX9_NewFrame@@YAXXZ) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_RenderDrawData(struct ImDrawData *)" (?ImGui_ImplDX9_RenderDrawData@@YAXPAUImDrawData@@@Z) в функции "bool __stdcall Present(struct tagRECT const *,struct tagRECT const *,struct HWND__ *,struct _RGNDATA const *)" (?Present@@YG_NPBUtagRECT@@0PAUHWND__@@PBU_RGNDATA@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl ImGui_ImplDX9_InvalidateDeviceObjects(void)" (?ImGui_ImplDX9_InvalidateDeviceObjects@@YAXXZ) в функции "long __stdcall Reset(struct _D3DPRESENT_PARAMETERS_ *)" (?Reset@@YGJPAU_D3DPRESENT_PARAMETERS_@@@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "long __cdecl ImGui_ImplWin32_WndProcHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?ImGui_ImplWin32_WndProcHandler@@YAJPAUHWND__@@IIJ@Z) в функции "bool __stdcall WndProcHandler(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProcHandler@@YG_NPAUHWND__@@IIJ@Z)
C:\Users\User\source\repos\SFPlugin\\bin\SFPlugin.sf : fatal error LNK1120: неразрешенных внешних элементов: 14
Добавь в проект все .cpp имгуи, win32 impl, dx9 impl
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|