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

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

zheluk!

Новичок
7
0
Как через plugin sdk + sampapi от blast.hk отправить нажатие\зажатие кнопки в игру, через стандартные C++ штучки по типу sendimput keybd персонаж ходит но не обрабатывает нажатие на e ( Использовать )
 

reussssya

Новичок
28
8
Как через plugin sdk + sampapi от blast.hk отправить нажатие\зажатие кнопки в игру, через стандартные C++ штучки по типу sendimput keybd персонаж ходит но не обрабатывает нажатие на e ( Использовать )
while(!GetAsyncKeyState(ид клавишы))
 

korsarsan

Участник
79
27
Вопрос знат0кам imgui
После запуска компа, и первого запуска сампа вылетает эта ошибка
C++:
ImGuiStyle& ImGui::GetStyle()
{
    IM_ASSERT(GImGui != NULL && "No current context. Did you call ImGui::CreateContext() and ImGui::SetCurrentContext() ?"); // <== ВОТ ЭТА
    return GImGui->Style;
}
И конечно же стиль не подгружается, но на второй запуск сампа и дальнейшие ошибка больше не вылезает и стиль нормально грузится
Кто знает че за магия ? )
 

AdCKuY_DpO4uLa

Известный
287
477
Вопрос знат0кам imgui
После запуска компа, и первого запуска сампа вылетает эта ошибка
C++:
ImGuiStyle& ImGui::GetStyle()
{
    IM_ASSERT(GImGui != NULL && "No current context. Did you call ImGui::CreateContext() and ImGui::SetCurrentContext() ?"); // <== ВОТ ЭТА
    return GImGui->Style;
}
И конечно же стиль не подгружается, но на второй запуск сампа и дальнейшие ошибка больше не вылезает и стиль нормально грузится
Кто знает че за магия ? )
Вероятнее всего ты не вызываешь ImGui::CreateContext(); при инициализации.
Если же ты вызываешь эту функцию, то можешь отключить ассерты имгуи в настройках (imconfig.h) для этого нужно раскомментировать строчку
//#define IM_ASSERT(_EXPR) ((void)(_EXPR))
 

funob

Новичок
7
1
Вопрос знатокам сф апи 551
Как сделать антиафк? (Включение/отключение плагином)
 

F0RQU1N and

Известный
1,310
495
Вопрос знатокам сф апи 551
Как сделать антиафк? (Включение/отключение плагином)
C++:
#include <Windows.h>
#include "SAMPFUNCS_API.h"
#include "game_api.h"

SAMPFUNCS* SF = new SAMPFUNCS( );

bool bafk = false, init = false;

void __stdcall mainloop( )
{
    if ( GAME && GAME->GetSystemState( ) == eSystemState::GS_PLAYING_GAME && SF->getSAMP( )->IsInitialized( ) && !init )
    {
        SF->getSAMP( )->registerChatCommand( "afk", []( std::string params ) {
            bafk ^= true;

            *(std::uint8_t*)0x747FB6 = bafk;
            *(std::uint8_t*)0x74805A = bafk;

            std::memcpy( (void*)0x74542B, bafk ? "\x90\x90\x90\x90\x90\x90\x90\x90" : "\x50\x51\xFF\x15\x00\x83\x85\x00", 8 );
            std::memcpy( (void*)0x53EA88, bafk ? "\x90\x90\x90\x90\x90\x90" : "\x0F\x84\x7B\x01\x00\x00", 6 );

            SF->getSAMP( )->getChat( )->AddChatMessage( 0xFFFFFFFFF, std::to_string( bafk ).c_str( ) );
        } );

        init = true;
    }
}

bool __stdcall DllMain( HMODULE hModule, DWORD dwReasonForCall, void* )
{
    if ( dwReasonForCall == DLL_PROCESS_ATTACH )
        SF->initPlugin( mainloop, hModule );

    return true;
}

адреса для патчей ес чо отсюда взял

Вероятнее всего ты не вызываешь ImGui::CreateContext(); при инициализации.
Если же ты вызываешь эту функцию, то можешь отключить ассерты имгуи в настройках (imconfig.h) для этого нужно раскомментировать строчку
//#define IM_ASSERT(_EXPR) ((void)(_EXPR))
всмысле, че за хуйню ты советуешь? зачем отключать ассерты там же дальше чтение идет GImGui->Style и просто крашить будет
 
Последнее редактирование:

korsarsan

Участник
79
27
всмысле, че за хуйню ты советуешь? зачем отключать ассерты там же дальше чтение идет GImGui->Style и просто крашить будет
И как тогда решить, потому что если только createcontext включать он при первой загрузке загружает что нужно а потом начинает грузить не стиль из конфига. Мб ImGui::SetCurrentContext() надо, но я не шарю как его правильно использовать

адреса кнопок открытия чата, помогите пж...
Типо )
0x54Клавиша T
VK_F60x75Клавиша F6
 
Последнее редактирование:

Smeruxa

Известный
1,303
683
Подключил ImGui в SF плагин, если бегать с ним минуту где-то, то при открытии все меню с ума начинает сходить, иногда на что-то нажимает, а со временем проходит, будто повторяет все мои действия сделанные раннее, просто с отключенным курсором, как можно исправить?
Подгружаю я imgui_load в mainloop main.cpp
main.cpp:
if (SUCCEEDED(SF->getRender()->BeginRender()))
    {
        // RENDER

        rVisual->Render();

        // RENDER

        // IMGUI

        if (rConfig->imgui_active) {
            ImGui_ImplDX9_NewFrame();
            ImGui_ImplWin32_NewFrame();
            ImGui::NewFrame();

            // DRAW

            SF->getSAMP()->getMisc()->ToggleCursor(true);
            ImGui::SetNextWindowSize(ImVec2(651.f, 296.f));
            ImGui::SetNextWindowPos(ImVec2(rConfig->ScreenResolution[0] * 0.5f, rConfig->ScreenResolution[1] * 0.5f), ImGuiCond_Always, ImVec2(0.5f, 0.5f));
            ImGui::Begin("", &rConfig->imgui_active, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse);
       
            ImGui::End();

            // DRAW

            ImGui::EndFrame();
            ImGui::Render();
            ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
            IDirect3DDevice9* device = SF->getRender()->getD3DDevice();
            device->SetRenderState(D3DRS_ZENABLE, FALSE);
            device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
            device->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE);
        }

        // IMGUI

        SF->getRender()->EndRender();
    }
C++:
LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

bool CALLBACK Present(CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion);

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 set_style() {
    ImGuiStyle& style = ImGui::GetStyle();
    ImGuiIO& io = ImGui::GetIO();

    style.WindowPadding = ImVec2(2, 2);
    style.WindowRounding = 1;
    style.ChildRounding = 2;
    style.FramePadding = ImVec2(3, 3);
    style.FrameRounding = 1;
    style.ItemSpacing = ImVec2(2, 2);
    style.TouchExtraPadding = ImVec2(0, 0);
    style.IndentSpacing = 21;
    style.ScrollbarSize = 9;
    style.ScrollbarRounding = 1;
    style.GrabMinSize = 10;
    style.GrabRounding = 1;
    style.WindowTitleAlign = ImVec2(0.5, 0.5);
    style.ButtonTextAlign = ImVec2(0.5, 0.5);

    style.Colors[ImGuiCol_FrameBg] = ImVec4(0.16, 0.29, 0.48, 0.54);
    style.Colors[ImGuiCol_FrameBgHovered] = ImVec4(0.26, 0.59, 0.98, 0.40);
    style.Colors[ImGuiCol_FrameBgActive] = ImVec4(0.26, 0.59, 0.98, 0.67);
    style.Colors[ImGuiCol_TitleBg] = ImVec4(0.16, 0.29, 0.48, 1.00);
    style.Colors[ImGuiCol_TitleBgActive] = ImVec4(0.16, 0.29, 0.48, 1.00);
    style.Colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.16, 0.29, 0.48, 1.00);
    style.Colors[ImGuiCol_CheckMark] = ImVec4(0.26, 0.59, 0.98, 1.00);
    style.Colors[ImGuiCol_SliderGrab] = ImVec4(0.24, 0.52, 0.88, 1.00);
    style.Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.26, 0.59, 0.98, 1.00);
    style.Colors[ImGuiCol_Button] = ImVec4(0.26, 0.59, 0.98, 0.40);
    style.Colors[ImGuiCol_ButtonHovered] = ImVec4(0.26, 0.59, 0.98, 1.00);
    style.Colors[ImGuiCol_ButtonActive] = ImVec4(0.06, 0.53, 0.98, 1.00);
    style.Colors[ImGuiCol_Header] = ImVec4(0.26, 0.59, 0.98, 0.31);
    style.Colors[ImGuiCol_HeaderHovered] = ImVec4(0.26, 0.59, 0.98, 0.80);
    style.Colors[ImGuiCol_HeaderActive] = ImVec4(0.26, 0.59, 0.98, 1.00);
    style.Colors[ImGuiCol_Separator] = style.Colors[ImGuiCol_Border];
    style.Colors[ImGuiCol_SeparatorHovered] = ImVec4(0.26, 0.59, 0.98, 0.78);
    style.Colors[ImGuiCol_SeparatorActive] = ImVec4(0.26, 0.59, 0.98, 1.00);
    style.Colors[ImGuiCol_ResizeGrip] = ImVec4(0.26, 0.59, 0.98, 0.25);
    style.Colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.26, 0.59, 0.98, 0.67);
    style.Colors[ImGuiCol_ResizeGripActive] = ImVec4(0.26, 0.59, 0.98, 0.95);
    style.Colors[ImGuiCol_TextSelectedBg] = ImVec4(0.26, 0.59, 0.98, 0.35);
    style.Colors[ImGuiCol_Text] = ImVec4(1.00, 1.00, 1.00, 1.00);
    style.Colors[ImGuiCol_TextDisabled] = ImVec4(0.50, 0.50, 0.50, 1.00);
    style.Colors[ImGuiCol_WindowBg] = ImVec4(0.06, 0.06, 0.06, 0.94);
    style.Colors[ImGuiCol_ChildBg] = ImVec4(1.00, 1.00, 1.00, 0.00);
    style.Colors[ImGuiCol_PopupBg] = ImVec4(0.08, 0.08, 0.08, 0.94);
    //style.Colors[ImGuiCol_ComboBg] = style.Colors[ImGuiCol_PopupBg]; ImGuiCol_Bg
    style.Colors[ImGuiCol_Border] = ImVec4(0.43, 0.43, 0.50, 0.50);
    style.Colors[ImGuiCol_BorderShadow] = ImVec4(0.00, 0.00, 0.00, 0.00);
    style.Colors[ImGuiCol_MenuBarBg] = ImVec4(0.14, 0.14, 0.14, 1.00);
    style.Colors[ImGuiCol_ScrollbarBg] = ImVec4(0.02, 0.02, 0.02, 0.53);
    style.Colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.31, 0.31, 0.31, 1.00);
    style.Colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.41, 0.41, 0.41, 1.00);
    style.Colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.51, 0.51, 0.51, 1.00);
    //style.Colors[ImGuiCol_CloseButton] = ImVec4(0.41, 0.41, 0.41, 0.50);
    //style.Colors[ImGuiCol_CloseButtonHovered] = ImVec4(0.98, 0.39, 0.36, 1.00);
    //style.Colors[ImGuiCol_CloseButtonActive] = ImVec4(0.98, 0.39, 0.36, 1.00);
    style.Colors[ImGuiCol_PlotLines] = ImVec4(0.61, 0.61, 0.61, 1.00);
    style.Colors[ImGuiCol_PlotLinesHovered] = ImVec4(1.00, 0.43, 0.35, 1.00);
    style.Colors[ImGuiCol_PlotHistogram] = ImVec4(0.90, 0.70, 0.00, 1.00);
    style.Colors[ImGuiCol_PlotHistogramHovered] = ImVec4(1.00, 0.60, 0.00, 1.00);
    style.Colors[ImGuiCol_ModalWindowDimBg] = ImVec4(0.80, 0.80, 0.80, 0.35);
}

void ImGuiInizialization::Load() {
    ImGui::CreateContext();
    ImGui_ImplWin32_Init(GetActiveWindow());
    ImGui_ImplDX9_Init(SF->getRender()->getD3DDevice());
    ImGui::GetIO().Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\Arial.ttf", 16.5f, NULL, ImGui::GetIO().Fonts->GetGlyphRangesCyrillic());
    child_font = ImGui::GetIO().Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\Arial.ttf", 17.f, NULL, ImGui::GetIO().Fonts->GetGlyphRangesCyrillic());
    set_style();
    SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);
    SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_RESET, Reset);
    SF->getGame()->registerWndProcCallback(SFGame::MEDIUM_CB_PRIORITY, WndProcHandler);
    SF->getGame()->registerGameDestructorCallback(PluginFree);
}
 
  • Ха-ха
Реакции: 4el0ve4ik