Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
может и тут есть люди которые шарят в C#
может и тут есть люди которые шарят в C#
Посиди потыкай. Авось оноЕсть функция для конвертации игровых координат в экранные в собе?
\src\game_sa\CHudSA.cpp - CHudSA::CalcScreenCoors (Line 130)
\src\proxyIDirect3DDevice9.cpp - CalcScreenCoors (Line 97)
\src\proxyIDirect3DDevice9.cpp - CalcWorldCoors (Line 122)
Не, нужно как в sfПосиди потыкай. Авось оно
Код:\src\game_sa\CHudSA.cpp - CHudSA::CalcScreenCoors (Line 130) \src\proxyIDirect3DDevice9.cpp - CalcScreenCoors (Line 97) \src\proxyIDirect3DDevice9.cpp - CalcWorldCoors (Line 122)
SF->getGame()->convertGameCoordsToWindow
Он тебе всё верно скинулНе, нужно как в sfSF->getGame()->convertGameCoordsToWindow
Не правильно подключил инклуды, посмотри примеры тут:Почему возникают эти ошибки?
Посмотреть вложение 34550
везде где я использую имгуи сверху файла я прописал
C++:#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
Он тебе всё верно скинул
Не правильно подключил инклуды, посмотри примеры тут:
imgui/examples/example_win32_directx9/main.cpp at master · ocornut/imgui
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies - ocornut/imguigithub.comИсходник - ASI Плагин с подключенным ImGui v1.72(WIP)
Собственно, кто то должен был это сделать, ну и вот. Имеется полная выгрузка, хукер - VMT, не самый лучший хукер. Код вроде как красивый, и соответствует стандартам C++ 2017. Создавался на VS2019, с последними обновлениями. https://github.com/rraggerr/asi_imgui Желательно удалять...blast.hk
#pragma once
#ifndef _STDLLPROGECT_H_
#define _STDLLPROGECT_H_
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include <process.h>
#include "stPlugin.h"
#include "../Hook/d3dhook.h"
#include <dinput.h>
#include <tchar.h>
#include "../ImGui/imgui.h"
#include "../ImGui/imgui_impl_win32.h"
#include "../ImGui/imgui_impl_dx9.h"
#include "../ImGui/imgui_stdlib.h"
#include "../ImGui/imgui_internal.h"
typedef void(_MyEndScene)(IDirect3DDevice9*);
typedef void(_MyReset)(IDirect3DDevice9*, D3DPRESENT_PARAMETERS*);
class stDLLProject {
// helpThread
BOOL threadState = TRUE;
HANDLE mainThread;
// mainThread
LONG PrevWndFunc = NULL;
Plugin* pPlug = nullptr;
// D3D9 Hook
static _EndScene* oEndScene;
static _Reset* oReset;
static _MyEndScene* endScene;
static _MyReset* reset;
static HRESULT WINAPI myReset(IDirect3DDevice9* m_pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters);
static HRESULT WINAPI myEndScene(IDirect3DDevice9* m_pDevice);
public:
// SAMP window
HWND m_pGameWindow = NULL;
// D3D9
IDirect3DDevice9* device = nullptr;
stDLLProject(_beginthread_proc_type func);
// Initialization only in ather thread
void Init(const uint32_t& timeout = 100);
void InitHookGameDestructor(void(__stdcall destructor)(void));
void InitD3D9();
void InitD3D9hook(_MyEndScene* eendScene, _MyReset* rreset);
void InitSAMPWindow(const uint32_t& timeout = 100);
void InitImGUI();
void InitilizingPlugin();
Plugin* GetPlugin() const;
BOOL GetThreadState() const;
~stDLLProject();
};
#endif // _STDLLPROGECT_H_
#pragma once
#ifndef _D3DHOOK_H_
#define _D3DHOOK_H_
#include <windows.h>
#include <d3d9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <d3dx9.h>
typedef HRESULT(WINAPI _EndScene)(IDirect3DDevice9*);
typedef HRESULT(WINAPI _Reset)(IDirect3DDevice9*, D3DPRESENT_PARAMETERS*);
void InitHook(IDirect3DDevice9* device, _EndScene* myEndScene, _Reset* myReset, _EndScene** _endScene, _Reset** _reset);
#endif // _D3DHOOK_H_
Не добавил .cpp файлы имгуи в проектя сравнил в роде все правильно
C++:#pragma once #ifndef _STDLLPROGECT_H_ #define _STDLLPROGECT_H_ #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1 #include <process.h> #include "stPlugin.h" #include "../Hook/d3dhook.h" #include <dinput.h> #include <tchar.h> #include "../ImGui/imgui.h" #include "../ImGui/imgui_impl_win32.h" #include "../ImGui/imgui_impl_dx9.h" #include "../ImGui/imgui_stdlib.h" #include "../ImGui/imgui_internal.h" typedef void(_MyEndScene)(IDirect3DDevice9*); typedef void(_MyReset)(IDirect3DDevice9*, D3DPRESENT_PARAMETERS*); class stDLLProject { // helpThread BOOL threadState = TRUE; HANDLE mainThread; // mainThread LONG PrevWndFunc = NULL; Plugin* pPlug = nullptr; // D3D9 Hook static _EndScene* oEndScene; static _Reset* oReset; static _MyEndScene* endScene; static _MyReset* reset; static HRESULT WINAPI myReset(IDirect3DDevice9* m_pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters); static HRESULT WINAPI myEndScene(IDirect3DDevice9* m_pDevice); public: // SAMP window HWND m_pGameWindow = NULL; // D3D9 IDirect3DDevice9* device = nullptr; stDLLProject(_beginthread_proc_type func); // Initialization only in ather thread void Init(const uint32_t& timeout = 100); void InitHookGameDestructor(void(__stdcall destructor)(void)); void InitD3D9(); void InitD3D9hook(_MyEndScene* eendScene, _MyReset* rreset); void InitSAMPWindow(const uint32_t& timeout = 100); void InitImGUI(); void InitilizingPlugin(); Plugin* GetPlugin() const; BOOL GetThreadState() const; ~stDLLProject(); }; #endif // _STDLLPROGECT_H_
d3dhook.h
C++:#pragma once #ifndef _D3DHOOK_H_ #define _D3DHOOK_H_ #include <windows.h> #include <d3d9.h> #define DIRECTINPUT_VERSION 0x0800 #include <d3dx9.h> typedef HRESULT(WINAPI _EndScene)(IDirect3DDevice9*); typedef HRESULT(WINAPI _Reset)(IDirect3DDevice9*, D3DPRESENT_PARAMETERS*); void InitHook(IDirect3DDevice9* device, _EndScene* myEndScene, _Reset* myReset, _EndScene** _endScene, _Reset** _reset); #endif // _D3DHOOK_H_
Почему при попытке использовать имгуи все летит сюда
Посмотреть вложение 34697
Инициализация
C++:ImGui::CreateContext(); ImGui_ImplWin32_Init(GetActiveWindow()); ImGui_ImplDX9_Init(*(IDirect3DDevice9**)0xC97C28);
bool RemoveSAMPHook(uint32_t dwFuncOffset, void* origFunc, int iType, int iSize)
{
if (GetModuleHandle("samp.dll") == NULL) return false;
uint32_t g_dwSAMP_Addr = (uint32_t)GetModuleHandle("samp.dll");
CDetour api;
return api.Remove((uint8_t*)((uint32_t)g_dwSAMP_Addr) + dwFuncOffset, (uint8_t*)origFunc, iType, iSize);
}
RemoveSAMPHook(SAMP_HOOKENTER_CNETGAME_DESTR, oDestrFuncs[0], 3, 5)
RemoveSAMPHook(SAMP_HOOKENTER_CNETGAME_DESTR2, oDestrFuncs[1], 3, 5)
while (m_pGameWindow == NULL) {
m_pGameWindow = FindWindowA(NULL, "GTA:SA:MP");
Sleep(timeout);
}
Чтобы именно так - они должны лежать в одной директории. В твоем случае можно заинклудить так:Есть файл test.h, есть папка game, в ней файл test.cpp, вопрос, как сделать так чтобы я могу инклуднуть файл test.h в test.cpp именно вот так#include <test.h>
?
#include <..\test.h>
Свойства проекта > Каталоги VC++ > Каталоги включения. Добавляешь путь до папки где лежит test.hЕсть файл test.h, есть папка game, в ней файл test.cpp, вопрос, как сделать так чтобы я могу инклуднуть файл test.h в test.cpp именно вот так#include <test.h>
?