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

Fiksae

Потрачен
26
10
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ты должен вызвать инициализацию imgui один раз, попробуй вызвать перед 109 строкой
Не работает крашит и вообще не рисуется imgui

ву:
#include "includes.h"

#ifdef _WIN64
#define GWL_WNDPROC GWLP_WNDPROC
#endif

extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

typedef long(__stdcall* EndScene)(LPDIRECT3DDEVICE9);
static EndScene oEndScene = NULL;
LPDIRECT3DDEVICE9 pDevice = nullptr;

WNDPROC oWndProc;
static HWND window = NULL;

void InitImGui(LPDIRECT3DDEVICE9 pDevice)
{
    ImGui::CreateContext();
    ImGuiIO& io = ImGui::GetIO();
    io.Fonts->AddFontFromFileTTF(("C:\\Windows\\Fonts\\Arial.ttf"), 20, NULL, io.Fonts->GetGlyphRangesCyrillic());
    io.ConfigFlags = ImGuiConfigFlags_NoMouseCursorChange;
    ImGui_ImplWin32_Init(window);
    ImGui_ImplDX9_Init(pDevice);
}


bool init = false;
bool openmenu = false;
long __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
    // Unhook
    if (GetAsyncKeyState(VK_END)) {

        kiero::shutdown();
    }

    // Open Menu
    if (GetAsyncKeyState(VK_HOME) & 1) {
        openmenu = !openmenu;
    }

    if (openmenu) {

        ImGui_ImplDX9_NewFrame();
        ImGui_ImplWin32_NewFrame();
        ImGui::NewFrame();

        auto flags = ImGuiConfigFlags_NoMouseCursorChange | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize;
        static int ttab;

        ImGui::Begin(("DarwinTap"), nullptr, flags);

        if (ImGui::Button((u8"Аимбот"), ImVec2(100.f, 0.f))) {
            ttab = 1;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button((u8"Визуалы"), ImVec2(100.f, 0.f))) {
            ttab = 2;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button((u8"Другое"), ImVec2(100.f, 0.f))) {
            ttab = 3;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button((u8"Цвета"), ImVec2(100.f, 0.f))) {
            ttab = 4;
        }

        ImGui::End();
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
    }
    return oEndScene(pDevice);
}

LRESULT __stdcall WndProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

    if (true && ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam))
        return true;

    return CallWindowProc(oWndProc, hWnd, uMsg, wParam, lParam);
}

BOOL CALLBACK EnumWindowsCallback(HWND handle, LPARAM lParam)
{
    DWORD wndProcId;
    GetWindowThreadProcessId(handle, &wndProcId);

    if (GetCurrentProcessId() != wndProcId)
        return TRUE; // skip to next window

    window = handle;
    return FALSE; // window found abort search
}

HWND GetProcessWindow()
{
    window = NULL;
    EnumWindows(EnumWindowsCallback, NULL);
    return window;
}

DWORD WINAPI MainThread(LPVOID lpReserved)
{
    bool attached = false;
    InitImGui(pDevice);
    do
    {
        if (kiero::init(kiero::RenderType::D3D9) == kiero::Status::Success)
        {
            kiero::bind(42, (void**)& oEndScene, hkEndScene);
            do
                window = GetProcessWindow();
            while (window == NULL);
            oWndProc = (WNDPROC)SetWindowLongPtr(window, GWL_WNDPROC, (LONG_PTR)WndProc);
            attached = true;
        }
    } while (!attached);
    return TRUE;
}

BOOL WINAPI DllMain(HMODULE hMod, DWORD dwReason, LPVOID lpReserved)
{
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hMod);
        CreateThread(nullptr, 0, MainThread, hMod, 0, nullptr);
        break;
    case DLL_PROCESS_DETACH:
        kiero::shutdown();
        break;
    }
    return TRUE;
}
 
Последнее редактирование:

EclipsedFlow

Известный
Проверенный
1,040
464
Не работает крашит и вообще не рисуется imgui

ву:
#include "includes.h"

#ifdef _WIN64
#define GWL_WNDPROC GWLP_WNDPROC
#endif

extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

typedef long(__stdcall* EndScene)(LPDIRECT3DDEVICE9);
static EndScene oEndScene = NULL;
LPDIRECT3DDEVICE9 pDevice = nullptr;

WNDPROC oWndProc;
static HWND window = NULL;

void InitImGui(LPDIRECT3DDEVICE9 pDevice)
{
    ImGui::CreateContext();
    ImGuiIO& io = ImGui::GetIO();
    io.Fonts->AddFontFromFileTTF(("C:\\Windows\\Fonts\\Arial.ttf"), 20, NULL, io.Fonts->GetGlyphRangesCyrillic());
    io.ConfigFlags = ImGuiConfigFlags_NoMouseCursorChange;
    ImGui_ImplWin32_Init(window);
    ImGui_ImplDX9_Init(pDevice);
}


bool init = false;
bool openmenu = false;
long __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
    // Unhook
    if (GetAsyncKeyState(VK_END)) {

        kiero::shutdown();
    }

    // Open Menu
    if (GetAsyncKeyState(VK_HOME) & 1) {
        openmenu = !openmenu;
    }

    if (openmenu) {

        ImGui_ImplDX9_NewFrame();
        ImGui_ImplWin32_NewFrame();
        ImGui::NewFrame();

        auto flags = ImGuiConfigFlags_NoMouseCursorChange | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize;
        static int ttab;

        ImGui::Begin(("DarwinTap"), nullptr, flags);

        if (ImGui::Button((u8"Аимбот"), ImVec2(100.f, 0.f))) {
            ttab = 1;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button((u8"Визуалы"), ImVec2(100.f, 0.f))) {
            ttab = 2;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button((u8"Другое"), ImVec2(100.f, 0.f))) {
            ttab = 3;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button((u8"Цвета"), ImVec2(100.f, 0.f))) {
            ttab = 4;
        }

        ImGui::End();
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
    }
    return oEndScene(pDevice);
}

LRESULT __stdcall WndProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

    if (true && ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam))
        return true;

    return CallWindowProc(oWndProc, hWnd, uMsg, wParam, lParam);
}

BOOL CALLBACK EnumWindowsCallback(HWND handle, LPARAM lParam)
{
    DWORD wndProcId;
    GetWindowThreadProcessId(handle, &wndProcId);

    if (GetCurrentProcessId() != wndProcId)
        return TRUE; // skip to next window

    window = handle;
    return FALSE; // window found abort search
}

HWND GetProcessWindow()
{
    window = NULL;
    EnumWindows(EnumWindowsCallback, NULL);
    return window;
}

DWORD WINAPI MainThread(LPVOID lpReserved)
{
    bool attached = false;
    InitImGui(pDevice);
    do
    {
        if (kiero::init(kiero::RenderType::D3D9) == kiero::Status::Success)
        {
            kiero::bind(42, (void**)& oEndScene, hkEndScene);
            do
                window = GetProcessWindow();
            while (window == NULL);
            oWndProc = (WNDPROC)SetWindowLongPtr(window, GWL_WNDPROC, (LONG_PTR)WndProc);
            attached = true;
        }
    } while (!attached);
    return TRUE;
}

BOOL WINAPI DllMain(HMODULE hMod, DWORD dwReason, LPVOID lpReserved)
{
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hMod);
        CreateThread(nullptr, 0, MainThread, hMod, 0, nullptr);
        break;
    case DLL_PROCESS_DETACH:
        kiero::shutdown();
        break;
    }
    return TRUE;
}
Учи язык, функцию надо вызывать в теле цыкла до условия if (kiero.. т.д)
1650785972585.png
 
  • Bug
Реакции: sizeoftrickster

Fiksae

Потрачен
26
10
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Andrinall

Известный
680
532
Я так уже делал тоже крашит.
Если речь идёт про gta sa - удали собейт в виде d3d9.dll(или enb если есть и попробуй без этого файла в папке) , лично у меня после удаления сразу перестало крашить при инжекте dllки.
1650791513260.png


C++:
// main.h
#include "includes.h"

extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

typedef long(__stdcall* EndScene)(LPDIRECT3DDEVICE9);
static EndScene oEndScene = NULL;

typedef long(__stdcall* Reset)(LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS*);
static Reset oReset = NULL;

typedef long(__stdcall* PresentScene)(IDirect3DDevice9*, const RECT*, const RECT*, HWND, const RGNDATA*);
static PresentScene oPresent = NULL;

static WNDPROC oWndProc = NULL;

void InitImGui(LPDIRECT3DDEVICE9 pDevice, HWND window)
{
    ImGui::CreateContext();
    ImGuiIO& io = ImGui::GetIO();
    io.Fonts->AddFontFromFileTTF(("C:\\Windows\\Fonts\\Arial.ttf"), 20, NULL, io.Fonts->GetGlyphRangesCyrillic());
    io.ConfigFlags = ImGuiConfigFlags_NoMouseCursorChange;
    ImGui_ImplWin32_Init(window);
    ImGui_ImplDX9_Init(pDevice);
    // renderer::SetupStyle();
}

LRESULT CALLBACK hkWindowProc(_In_ HWND hwnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
{
    if (ImGui_ImplWin32_WndProcHandler(hwnd, uMsg, wParam, lParam) > 0)
        return 1L;

    return ::CallWindowProcA(oWndProc, hwnd, uMsg, wParam, lParam);
}

long __stdcall hkPresent(IDirect3DDevice9* pDevice, const RECT* pSourceRect, const RECT* pDestRect, HWND hDestWindowOverride, const RGNDATA* pDirtyRegion)
{
    if (!renderer::init) {
        D3DDEVICE_CREATION_PARAMETERS params;
        pDevice->GetCreationParameters(&params);

        oWndProc = (WNDPROC)::SetWindowLongPtr((HWND)params.hFocusWindow, GWLP_WNDPROC, (LONG)hkWindowProc);

        InitImGui(pDevice, params.hFocusWindow);

        renderer::init = true;
    }

    // Unhook
    if (GetAsyncKeyState(VK_END)) {
        kiero::shutdown();
    }

    // Open Menu
    if (GetAsyncKeyState(VK_HOME) & 1) {
        renderer::Enabled = !renderer::Enabled;
    }

    if (renderer::Enabled) {

        ImGui_ImplDX9_NewFrame();
        ImGui_ImplWin32_NewFrame();
        ImGui::NewFrame();

        auto flags = ImGuiConfigFlags_NoMouseCursorChange | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize;
        static int ttab = 0;

        ImGui::Begin("DarwinTap", nullptr, flags);

        if (ImGui::Button(u8"Аимбот", ImVec2(100.f, 0.f))) {
            ttab = 1;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Визуалы", ImVec2(100.f, 0.f))) {
            ttab = 2;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Другое", ImVec2(100.f, 0.f))) {
            ttab = 3;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Цвета", ImVec2(100.f, 0.f))) {
            ttab = 4;
        }

        ImGui::End();
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
    }

    return oPresent(pDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
}

long __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice) {
    if (!renderer::init)
    {
        D3DDEVICE_CREATION_PARAMETERS params;
        pDevice->GetCreationParameters(&params);

        oWndProc = (WNDPROC)::SetWindowLongPtr((HWND)params.hFocusWindow, GWLP_WNDPROC, (LONG)hkWindowProc);

        InitImGui(pDevice, params.hFocusWindow);

        renderer::init = true;
    }
    // Unhook
    if (GetAsyncKeyState(VK_END)) {

        kiero::shutdown();
    }

    // Open Menu
    if (GetAsyncKeyState(VK_HOME) & 1) {
        renderer::Enabled = !renderer::Enabled;
    }

    if (renderer::Enabled) {

        ImGui_ImplDX9_NewFrame();
        ImGui_ImplWin32_NewFrame();
        ImGui::NewFrame();

        auto flags = ImGuiConfigFlags_NoMouseCursorChange | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize;
        static int ttab = 0;

        ImGui::Begin("DarwinTap", nullptr, flags);

        if (ImGui::Button(u8"Аимбот", ImVec2(100.f, 0.f))) {
            ttab = 1;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Визуалы", ImVec2(100.f, 0.f))) {
            ttab = 2;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Другое", ImVec2(100.f, 0.f))) {
            ttab = 3;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Цвета", ImVec2(100.f, 0.f))) {
            ttab = 4;
        }

        ImGui::End();
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
    }
    return oEndScene(pDevice);
}

long __stdcall hkReset(LPDIRECT3DDEVICE9 pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters)
{
    ImGui_ImplDX9_InvalidateDeviceObjects();
    long result = oReset(pDevice, pPresentationParameters);
    ImGui_ImplDX9_CreateDeviceObjects();

    return result;
}

int mainThread()
{
    if (kiero::init(kiero::RenderType::D3D9) == kiero::Status::Success)
    {
        kiero::bind(17, (void**)&oPresent, hkPresent);
        //kiero::bind(42, (void**)&oEndScene, hkEndScene);
        kiero::bind(16, (void**)&oReset, hkReset);
    }

    return 0;
}

BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID)
{
    switch(fdwReason){
        case DLL_PROCESS_ATTACH: {
            DisableThreadLibraryCalls(hInstance);
            CloseHandle(CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)mainThread, NULL, 0, NULL));
            break;
        }
        case DLL_PROCESS_DETACH: {
            renderer::init = false;
           
            kiero::shutdown();
            ImGui_ImplWin32_Shutdown();
            ImGui_ImplDX9_Shutdown();
            ImGui::DestroyContext();
            break;
        }
    }

    return TRUE;
}
 
Последнее редактирование:

Fiksae

Потрачен
26
10
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

sc6ut

неизвестный
Модератор
382
1,075
Если речь идёт про gta sa - удали собейт в виде d3d9.dll(или enb если есть и попробуй без этого файла в папке) , лично у меня после удаления сразу перестало крашить при инжекте dllки.
Посмотреть вложение 144833

C++:
// main.h
#include "includes.h"

extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

typedef long(__stdcall* EndScene)(LPDIRECT3DDEVICE9);
static EndScene oEndScene = NULL;

typedef long(__stdcall* Reset)(LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS*);
static Reset oReset = NULL;

typedef long(__stdcall* PresentScene)(IDirect3DDevice9*, const RECT*, const RECT*, HWND, const RGNDATA*);
static PresentScene oPresent = NULL;

static WNDPROC oWndProc = NULL;

void InitImGui(LPDIRECT3DDEVICE9 pDevice, HWND window)
{
    ImGui::CreateContext();
    ImGuiIO& io = ImGui::GetIO();
    io.Fonts->AddFontFromFileTTF(("C:\\Windows\\Fonts\\Arial.ttf"), 20, NULL, io.Fonts->GetGlyphRangesCyrillic());
    io.ConfigFlags = ImGuiConfigFlags_NoMouseCursorChange;
    ImGui_ImplWin32_Init(window);
    ImGui_ImplDX9_Init(pDevice);
    // renderer::SetupStyle();
}

LRESULT CALLBACK hkWindowProc(_In_ HWND hwnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
{
    if (ImGui_ImplWin32_WndProcHandler(hwnd, uMsg, wParam, lParam) > 0)
        return 1L;

    return ::CallWindowProcA(oWndProc, hwnd, uMsg, wParam, lParam);
}

long __stdcall hkPresent(IDirect3DDevice9* pDevice, const RECT* pSourceRect, const RECT* pDestRect, HWND hDestWindowOverride, const RGNDATA* pDirtyRegion)
{
    if (!renderer::init) {
        D3DDEVICE_CREATION_PARAMETERS params;
        pDevice->GetCreationParameters(&params);

        oWndProc = (WNDPROC)::SetWindowLongPtr((HWND)params.hFocusWindow, GWLP_WNDPROC, (LONG)hkWindowProc);

        InitImGui(pDevice, params.hFocusWindow);

        renderer::init = true;
    }

    // Unhook
    if (GetAsyncKeyState(VK_END)) {
        kiero::shutdown();
    }

    // Open Menu
    if (GetAsyncKeyState(VK_HOME) & 1) {
        renderer::Enabled = !renderer::Enabled;
    }

    if (renderer::Enabled) {

        ImGui_ImplDX9_NewFrame();
        ImGui_ImplWin32_NewFrame();
        ImGui::NewFrame();

        auto flags = ImGuiConfigFlags_NoMouseCursorChange | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize;
        static int ttab = 0;

        ImGui::Begin("DarwinTap", nullptr, flags);

        if (ImGui::Button(u8"Аимбот", ImVec2(100.f, 0.f))) {
            ttab = 1;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Визуалы", ImVec2(100.f, 0.f))) {
            ttab = 2;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Другое", ImVec2(100.f, 0.f))) {
            ttab = 3;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Цвета", ImVec2(100.f, 0.f))) {
            ttab = 4;
        }

        ImGui::End();
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
    }

    return oPresent(pDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
}

long __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice) {
    if (!renderer::init)
    {
        D3DDEVICE_CREATION_PARAMETERS params;
        pDevice->GetCreationParameters(&params);

        oWndProc = (WNDPROC)::SetWindowLongPtr((HWND)params.hFocusWindow, GWLP_WNDPROC, (LONG)hkWindowProc);

        InitImGui(pDevice, params.hFocusWindow);

        renderer::init = true;
    }
    // Unhook
    if (GetAsyncKeyState(VK_END)) {

        kiero::shutdown();
    }

    // Open Menu
    if (GetAsyncKeyState(VK_HOME) & 1) {
        renderer::Enabled = !renderer::Enabled;
    }

    if (renderer::Enabled) {

        ImGui_ImplDX9_NewFrame();
        ImGui_ImplWin32_NewFrame();
        ImGui::NewFrame();

        auto flags = ImGuiConfigFlags_NoMouseCursorChange | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize;
        static int ttab = 0;

        ImGui::Begin("DarwinTap", nullptr, flags);

        if (ImGui::Button(u8"Аимбот", ImVec2(100.f, 0.f))) {
            ttab = 1;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Визуалы", ImVec2(100.f, 0.f))) {
            ttab = 2;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Другое", ImVec2(100.f, 0.f))) {
            ttab = 3;
        }
        ImGui::SameLine(0.f, 2.f);
        if (ImGui::Button(u8"Цвета", ImVec2(100.f, 0.f))) {
            ttab = 4;
        }

        ImGui::End();
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
    }
    return oEndScene(pDevice);
}

long __stdcall hkReset(LPDIRECT3DDEVICE9 pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters)
{
    ImGui_ImplDX9_InvalidateDeviceObjects();
    long result = oReset(pDevice, pPresentationParameters);
    ImGui_ImplDX9_CreateDeviceObjects();

    return result;
}

int mainThread()
{
    if (kiero::init(kiero::RenderType::D3D9) == kiero::Status::Success)
    {
        kiero::bind(17, (void**)&oPresent, hkPresent);
        //kiero::bind(42, (void**)&oEndScene, hkEndScene);
        kiero::bind(16, (void**)&oReset, hkReset);
    }

    return 0;
}

BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID)
{
    switch(fdwReason){
        case DLL_PROCESS_ATTACH: {
            DisableThreadLibraryCalls(hInstance);
            CloseHandle(CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)mainThread, NULL, 0, NULL));
            break;
        }
        case DLL_PROCESS_DETACH: {
            renderer::init = false;
           
            kiero::shutdown();
            ImGui_ImplWin32_Shutdown();
            ImGui_ImplDX9_Shutdown();
            ImGui::DestroyContext();
            break;
        }
    }

    return TRUE;
}
если есть кастомный d3d9.dll, то в файле нет паттерна с девайсом который все ищут + сам файл другого размера, поэтому крашит из-за access violation. чтобы это исправить, я каждый раз беру размер дллки и прохожусь по нему, а если не нахожу, то юзаю таблицу игры (с использованием которой чит видно при записи, но лучше так чем нерабочий плагин). вот решение то что я написал: https://gitlab.com/samp-plugins/ultrawh/-/blob/main/src/dx9.cpp#L9
 
  • Нравится
Реакции: Andrinall

Chilim

Потрачен
71
6
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Добрый вечер,подскажите какой пакет использовать для drunklevel?
 

Fiksae

Потрачен
26
10
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Добрый вечер,подскажите какой пакет использовать для drunklevel?
Всмысле какой пакет? Есть только рпс

Добрый вечер,подскажите какой пакет использовать для drunklevel?
Если ты хочешь заменить уровень опьянения то вот код:
c++:
void DrunkLevel(int PlayerID, float level)
{
    RakNet::BitStream bs;

    bs.Write<bool>(false);

    bs.Write<WORD>(PlayerID);

    bs.Write<float>(level);

    rakhook::send_rpc(35, &bs, PacketPriority::HIGH_PRIORITY, PacketReliability::RELIABLE_ORDERED, 0u, false);
}

void main()
{
    DrunkLevel(твой id, уровень опьянения); // вызов

}
 
Последнее редактирование:
  • Bug
Реакции: kin4stat

Z3roKwq

Известный
294
157
E0020 идентификатор "stInCarData" не определен
E0135 class "PlayerPool" не содержит члена "pLocalPlayer"

все инклюды подключены, в чем можеь быть проблема
 

Chilim

Потрачен
71
6
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
E0020 идентификатор "stInCarData" не определен
E0135 class "PlayerPool" не содержит члена "pLocalPlayer"

все инклюды подключены, в чем можеь быть проблема
Опред
E0020 идентификатор "stInCarData" не определен
E0135 class "PlayerPool" не содержит члена "pLocalPlayer"

все инклюды подключены, в чем можеь быть проблема
Добавь в класс PlayerPoll pLocalPlayer
 

Fiksae

Потрачен
26
10
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
я про определение stInCarData
Укажи путь до stInCarData например: samp::stInCarData либо просто в main.cpp добавь структуру
c++:
struct stInCarData
{
    uint16_t    sVehicleID;
    uint16_t    sLeftRightKeys;
    uint16_t    sUpDownKeys;
    union
    {
        uint16_t            sKeys;
        struct stSAMPKeys    stSampKeys;
    };
    float        fQuaternion[4];
    float        fPosition[3];
    float        fMoveSpeed[3];
    float        fVehicleHealth;
    uint8_t        bytePlayerHealth;
    uint8_t        byteArmor;
    uint8_t        byteCurrentWeapon;
    uint8_t        byteSiren;
    uint8_t        byteLandingGearState;
    uint16_t    sTrailerID;
    union
    {
        uint16_t    HydraThrustAngle[2];    //nearly same value
        float        fTrainSpeed;
    };
};

и тогда уже вызывай её