ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   API SF | Урок 5 - Подключение ImGui (https://forum.antichat.xyz/showthread.php?t=1323083)

CleanLegend 27.07.2018 20:58

Для начала нужно скачать пустой проект 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

как такое же сделать с аси подскажите плс

kawa operand 27.07.2018 21:26

прикинь точно так же

imring 27.07.2018 21:29

вроде @mkrn делал проект с подключенным имгуи

Dark_Knight 27.07.2018 21:33

Цитата:

Сообщение от imring

вроде @mkrn делал проект с подключенным имгуи

И без выгрузки Imgui. Кстати, тут тоже самое.

mkrn 28.07.2018 00:56

Цитата:

Сообщение от Dark_Knight

И без выгрузки Imgui. Кстати, тут тоже самое.

это был твой проект с фиксом некоторых багов, соре ;)

Dark_Knight 28.07.2018 01:24

Цитата:

Сообщение от mkrn

это был твой проект с фиксом некоторых багов, соре ;)

Ага. Пофиксил так, что убрал деиницилизацию imgui

mkrn 28.07.2018 03:39

Цитата:

Сообщение от Dark_Knight

Ага. Пофиксил так, что убрал деиницилизацию imgui

ничего не убирал. Быть может вы путаете мой проект с каким-то другим, сударь?

Dark_Knight 28.07.2018 03:55

Цитата:

Сообщение от mkrn

ничего не убирал. Быть может вы путаете мой проект с каким-то другим, сударь?

Человек утверждал, что это твой проект. Никакого в нем декстуктора плагина не увидел даже.

mkrn 28.07.2018 04:13

Цитата:

Сообщение от Dark_Knight

Человек утверждал, что это твой проект. Никакого в нем декстуктора плагина не увидел даже.

Софт - ImGUI(https://blast.hk/threads/12387/)

в моём проекте всё точно так же как и здесь, только исправлены параметры ресета и в imgui.cpp там фикс с разрешением экрана связанный. Вся кривизна, до которой в этом проекте можно доебаться, сделана тобой и ебать себе мозг с ней у меня не было ни малейшего желания. Свой проект я делал бы по-другому, а в этом моей целью было только лишь то, чтобы он нормально работал и не крашил из-за того, что дарк_кнуйт решил из презента параметры в ресет ебануть

Musaigen 29.07.2018 19:31

Кто знает в чём проблема?

Код:





Код:

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


_Vine_ 29.07.2018 20:01

Цитата:

Сообщение от 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

MCDXLVIII 29.07.2018 21:54

Цитата:

Сообщение от 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



Если ты дебаг компилишь , поставь релиз + подключи все библиотеки Imgui.И платформу поставь x86.

CleanLegend 08.08.2018 13:21

Цитата:

Сообщение от Dark_Knight

И без выгрузки Imgui. Кстати, тут тоже самое.

Добавил выгрузку

By_Surse 08.08.2018 16:40

Тут описание подключения старой версии.

Зачем??? Зачем создавать imgui_impl_dx9.cpp imgui_impl_dx9.h если они уже есть в папке с имгуи?

FYP 08.08.2018 18:11

Цитата:

Сообщение от CleanLegend

На момент написания гайда использовалась версия 1.63

тем более. в этом imgui_impl_dx9 устаревшая реализация, в версии 1.62 был произведён рефакторинг всех рендереров.

лучше обнови гайд, вот: ocornut/imgui(https://github.com/ocornut/imgui/tree/master/examples)

CleanLegend 08.08.2018 18:48

Цитата:

Сообщение от By_Surse

Тут описание подключения старой версии.
Зачем??? Зачем создавать imgui_impl_dx9.cpp imgui_impl_dx9.h если они уже есть в папке с имгуи?

Цитата:

Сообщение от FYP

тем более. в этом imgui_impl_dx9 устаревшая реализация, в версии 1.62 был произведён рефакторинг всех рендереров.
лучше обнови гайд, вот: ocornut/imgui(https://github.com/ocornut/imgui/tree/master/examples)

Обновил

By_Surse 09.08.2018 19:08

ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoResize

убери

если крашит, надо просто было писать так:

if (bMenuActive)

{

ImGui::Begin("Window", &bMenuActive);

...

ImGui::End();

}

Dark_Knight 09.08.2018 19:45

Цитата:

Сообщение от By_Surse

ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoResize
убери
если крашит, надо просто было писать так:

if (bMenuActive)
{
ImGui::Begin("Window", &bMenuActive);
...
ImGui::End();
}

Зачем убирать? Все правильно у него написано.

Revalto 16.08.2018 00:28

Попытка использовать стили - неудачно!

Цитата:

Сообщение от Спойлер

P.S. ImGui::CreateContext(); перед стилем решил все

CleanLegend 16.08.2018 00:30

Цитата:

Сообщение от Revalto

Попытка использовать стили - неудачно!
Цитата:

Сообщение от Спойлер

u_zgfgtZhCY.jpgCleanLegend · 15 Авг 2018 в 23:30' data-fancybox="lb-post-241451" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fpp.userapi.com%2Fc84 6021%2Fv846021042%2Fc39c2%2Fu_zgfgtZhCY.jpg&hash=5 028dbe12709a68e8c5125e66b092145" style="cursor: pointer;" title="u_zgfgtZhCY.jpg">
https://pp.userapi.com/c846021/v8460..._zgfgtZhCY.jpg



В какой момент стиль меняешь?

Revalto 16.08.2018 01:20

Цитата:

Сообщение от CleanLegend

В какой момент стиль меняешь?

upload_2018-8-16_0-21-3.pngRevalto · 16 Авг 2018 в 00:20' data-fancybox="lb-post-241469" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/17712/" style="cursor: pointer;" title="upload_2018-8-16_0-21-3.png">
https://forum.antichat.xyz/attachments/27241469/

Musaigen 16.08.2018 01:24

Цитата:

Сообщение от Revalto

после инита ImplDX9 надо.

Revalto 16.08.2018 20:57

Цитата:

Сообщение от Musaigen

после инита ImplDX9 надо.

При выходе с игры, допустим через /q, такая же ошибка!

holmes0 16.08.2018 22:45

Цитата:

Сообщение от Revalto

При выходе с игры, допустим через /q, такая же ошибка!

+, тоже самое

CleanLegend 17.08.2018 13:58

Цитата:

Сообщение от Revalto

При выходе с игры, допустим через /q, такая же ошибка!

При выходе не вызывается GameDestructor, нужно перехватывать отправку /q, либо в DLL_PROCESS_DETACH добавить деинициализацию imgui:

C++:





Код:

case
DLL_PROCESS_DETACH
:
ImGui_ImplDX9_Shutdown
(
)
;
ImGui_ImplWin32_Shutdown
(
)
;
ImGui
::
DestroyContext
(
)
;


Revalto 17.08.2018 15:49

Цитата:

Сообщение от CleanLegend

При выходе не вызывается GameDestructor, нужно перехватывать отправку /q, либо в DLL_PROCESS_DETACH добавить деинициализацию imgui:

C++:





Код:

case
DLL_PROCESS_DETACH
:
ImGui_ImplDX9_Shutdown
(
)
;
ImGui_ImplWin32_Shutdown
(
)
;
ImGui
::
DestroyContext
(
)
;



Это надо добавить в мануале, а то мало ли :)

Lupus 19.08.2018 20:53

how i can make it 'button toggleing'?

CleanLegend 19.08.2018 21:03

Цитата:

Сообщение от Lupus

how i can make it 'button toggleing'?

button toggleing - its checkbox:

C++:





Код:

ImGui
::
Checkbox
(
"Aimbot"
,
&
bAimbot
)
;



if you want other style, you can search in google

you can see all examples - ocornut/imgui(https://github.com/ocornut/imgui/blob/master/imgui_demo.cpp)

holmes0 20.08.2018 00:23

Цитата:

Сообщение от CleanLegend

При выходе не вызывается GameDestructor, нужно перехватывать отправку /q, либо в DLL_PROCESS_DETACH добавить деинициализацию imgui:

C++:





Код:

case
DLL_PROCESS_DETACH
:
ImGui_ImplDX9_Shutdown
(
)
;
ImGui_ImplWin32_Shutdown
(
)
;
ImGui
::
DestroyContext
(
)
;



Не помогло, всё равно та же ошибка при /q.

И ещё, что тут не так?

C++:





Код:

void
CALLBACK
cmd_debug_info
(
std
::
string param
)
{
int
*
resX
,
*
resY
;
SF
->
getGame
(
)
->
getScreenResolution
(
resX
,
resY
)
;
snprintf
(
messageBuffer
,
128
,
"ResX - %i, ResY - %i"
,
*
resX
,
*
resY
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
messageBuffer
)
;
}


imring 12.09.2018 19:34

Цитата:

Сообщение от CleanLegend

SF>getGame()>registerGameDestructorCallback(Plugin Free);

исправь

C++:





Код:

SF
->
getGame
(
)
->
registerGameDestructorCallback
(
PluginFree
)
;


mrdiimax 12.09.2018 19:42

Цельный проект есть у кого?

Revalto 13.09.2018 08:06

Цитата:

Сообщение от mrdiimax

Цельный проект есть у кого?

Уже так сложно подставить?

Код:





Код:

#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include
#include
#include
#include

#include "ImGUI\imgui.h"
#include "ImGUI\imgui_impl_dx9.h"
#include "ImGUI\imgui_impl_win32.h"
#include
#define DIRECTINPUT_VERSION 0x0800
#include
#include
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion)
{
    if (SUCCEEDED(SF->getRender()->BeginRender()))
    {

        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());

        SF->getRender()->EndRender();
    }
    return true;
}

HRESULT CALLBACK Reset(D3DPRESENT_PARAMETERS* pPresentationParameters)
{
    ImGui_ImplDX9_InvalidateDeviceObjects();
    return true;
}

bool CALLBACK WndProcHandler(HWND hwd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    ImGui_ImplWin32_WndProcHandler(hwd, msg, wParam, lParam);
    return true;
}

void CALLBACK PluginFree()
{

    ImGui_ImplDX9_Shutdown();
    ImGui_ImplWin32_Shutdown();
    ImGui::DestroyContext();
}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;
        SF->getSAMP()->getChat()->AddChatMessage( D3DCOLOR_XRGB( 0, 0xAA, 0 ), "SAMPFUNCS Plugin loaded." );
        SF>getGame()>registerGameDestructorCallback(PluginFree);
        SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);
        SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_RESET, Reset);
        SF->getGame()->registerWndProcCallback(SFGame::MEDIUM_CB_PRIORITY, WndProcHandler);

        ImGui::CreateContext();
        ImGuiIO& io = ImGui::GetIO(); (void)io;
        ImGui_ImplWin32_Init(GetActiveWindow());
        ImGui_ImplDX9_Init(SF->getRender()->getD3DDevice());
     
        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}



Время: 21:14