Другое С/С++ Вопрос - Ответ

_=Gigant=_

Известный
134
191
is it possible to create imgui menu in sobeit source ? i tried to put ImGui::ShowDemoWindow(); in sobeit renderHandler but it crashes... do i need to include some libs or to define it somewhere else ?
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
  • Нравится
Реакции: _=Gigant=_

ЯedЯuM

Malware Maker
244
304
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
i puted
C++:
  if (ImGui_ImplWin32_WndProcHandler(wnd, umsg, wparam, lparam))
    {
        return 1l;
    }

in
Код:
      static LRESULT CALLBACK wnd_proc ( HWND wnd, UINT umsg, WPARAM wparam, LPARAM lparam )
      {
      }

then
C++:
ImGui_ImplDX9_InvalidateDeviceObjects();
in
Код:
HRESULT proxyIDirect3DDevice9::Reset(D3DPRESENT_PARAMETERS *pPresentationParameters)


and in
C++:
HRESULT proxyIDirect3DDevice9::Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
    CONST RGNDATA *pDirtyRegion)

i puted
C++:
   ImGui::CreateContext();
    ImGuiIO& io = ImGui::GetIO(); (void)io;
    ImGui_ImplWin32_Init(GetActiveWindow());
    ImGui_ImplDX9_Init(hDestWindowOverride, origIDirect3DDevice9);

and i called ImGui::ShowDemoWindow() in renderHandler(); but still crash
C++:
(void)io; // WTF?! You casted reference on class to undefined type
 

Revalto

Известный
532
225
i puted this now in Present

Код:
        ImGui::CreateContext();
        ImGuiIO& io = ImGui::GetIO();
        ImGuiStyle& style = ImGui::GetStyle();
        io.IniFilename = NULL;
        io.DeltaTime = 1.0f / 60.0f;
        ImFont* pFont = io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\framd.ttf", 15);
        SetCursor(io.MouseDrawCursor ? NULL : LoadCursor(NULL, IDC_ARROW));
        io.Fonts->AddFontDefault();
        style.AntiAliasedLines = false;
        style.AntiAliasedFill = false;
        style.WindowBorderSize = 0.0f;
        ImGui_ImplWin32_Init(GetActiveWindow());
        ImGui_ImplDX9_Init(hDestWindowOverride, origIDirect3DDevice9);

It's in mainloop
its not crashing and it draws the imgui mouse SetCursor but its not drawing ImGui::ShowDemoWindow(); or the imgui menu i created above
Connect imgui_demo.cpp
 

CleanLegend

Известный
Всефорумный модератор
476
929
i puted this now in Present

Код:
    ImGui::CreateContext();
        ImGuiIO& io = ImGui::GetIO();
        ImGuiStyle& style = ImGui::GetStyle();
        io.IniFilename = NULL;
        io.DeltaTime = 1.0f / 60.0f;
        ImFont* pFont = io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\framd.ttf", 15);
        SetCursor(io.MouseDrawCursor ? NULL : LoadCursor(NULL, IDC_ARROW));
        io.Fonts->AddFontDefault();
        style.AntiAliasedLines = false;
        style.AntiAliasedFill = false;
        style.WindowBorderSize = 0.0f;
        ImGui_ImplWin32_Init(GetActiveWindow());
        ImGui_ImplDX9_Init(hDestWindowOverride, origIDirect3DDevice9);
you calling inititiazing in cycle, need call init only one.
C++:
static bool inited = false;
if (!inited)
{
ImGui::CreateContext();
        ImGuiIO& io = ImGui::GetIO();
        ImGuiStyle& style = ImGui::GetStyle();
        io.IniFilename = NULL;
        io.DeltaTime = 1.0f / 60.0f;
        ImFont* pFont = io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\framd.ttf", 15);
        SetCursor(io.MouseDrawCursor ? NULL : LoadCursor(NULL, IDC_ARROW));
        io.Fonts->AddFontDefault();
        style.AntiAliasedLines = false;
        style.AntiAliasedFill = false;
        style.WindowBorderSize = 0.0f;
        ImGui_ImplWin32_Init(GetActiveWindow());
        ImGui_ImplDX9_Init(hDestWindowOverride, origIDirect3DDevice9);
inited = true;
}
 
  • Нравится
Реакции: _=Gigant=_

Akatosh

Известный
21
0
Хочу, чтобы моя функция запускалась во время процедуры закрытия игры (/q и т.д).
Подскажите пожалуйста адрес, который точно используется только во время процедуры закрытия? Чтобы инъекцию туда сделать..
 

CleanLegend

Известный
Всефорумный модератор
476
929
Хочу, чтобы моя функция запускалась во время процедуры закрытия игры (/q и т.д).
Подскажите пожалуйста адрес, который точно используется только во время процедуры закрытия? Чтобы инъекцию туда сделать..
1)www.ПЕРВЫЕ ШАГИ.ru :: Шаг 98 - Функция DLLMain()(http://www.firststeps.ru/mfc/winapi/r.php?98) - DLL_PROCESS_DETACH
2) хукать деструктор игры
3) хукать отправку /q
 

Akatosh

Известный
21
0
1)www.ПЕРВЫЕ ШАГИ.ru :: Шаг 98 - Функция DLLMain()(http://www.firststeps.ru/mfc/winapi/r.php?98) - DLL_PROCESS_DETACH
2) хукать деструктор игры
3) хукать отправку /q
Я знаю как это делать, я же сказал, что буду инжектить. Я спрашивал, может кто знает какой-нибудь адрес, через который проходит игра во время закрытия :) может у кого есть под рукой
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Я знаю как это делать, я же сказал, что буду инжектить. Я спрашивал, может кто знает какой-нибудь адрес, через который проходит игра во время закрытия :) может у кого есть под рукой
В собейте они есть.
Ctrl + F -> SAMP_HOOKENTER_CNETGAME_DESTR
 

-raymond-

Известный
110
9
как получить путь к файлу ini в папке SAMPFUNCS?
mkteaiQ.png
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
как получить путь к файлу ini в папке SAMPFUNCS?
mkteaiQ.png
C++:
char WorkingDir[MAX_PATH], IniFile[MAX_PATH];
GetCurrentDirectory(_countof(WorkingDir), WorkingDir);
sprintf_s(IniFile, "%s\\SAMPFUNCS\\file.ini", WorkingDir);
Еще можно использовать GetModuleFileName для получения пути к твоему плагину, а не к процессу в который инжекнут плагин.