Другое SAMPFUNCS | API C++

Sire Like

Blanche Bier
Друг
487
235
блч засунь ее над функцией своей

bool activew = true;

{
Тут твоя херня что выше
}
 

Harryss

Участник
233
26
блч засунь ее над функцией своей

bool activew = true;

{
Тут твоя херня что выше
}
Дак само собой пытался так сделать. И над функцией, и перед условием - ошибки за неопределенный идентификатор. И прежде чем писать, смотрел такие же темы что @CleanLegend скинул. В mainloop'е чистого проекта даже пример есть с переменной init, так делать пытался - не вышло.
C++:
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.");
        init = true;
   }
 
Последнее редактирование:

ALF

Известный
Проверенный
320
539
Дак само собой пытался так сделать. И над функцией, и перед условием - ошибки за неопределенный идентификатор. И прежде чем писать, смотрел такие же темы что @CleanLegend скинул. В mainloop'е чистого проекта даже пример есть с переменной init, так делать пытался - не вышло.
C++:
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.");
        init = true;
   }
Боже...
после include напиши bool activew = true;
хз как тебе ещё объяснить
 

Harryss

Участник
233
26
Боже...
после include напиши bool activew = true;
хз как тебе ещё объяснить
Правда думаешь, что я не понимаю? Прилагаю два скриншота. На первом код, на втором ошибка.

Вынеси её перед мэином


(После загрузки директивов)
Выше приложил скриншоты, тоже пробывал. Уже не знаю, в чем ошибка,
 

Вложения

  • Безымянный.png
    Безымянный.png
    76.2 KB · Просмотры: 255
  • Безымянный1.png
    Безымянный1.png
    5.8 KB · Просмотры: 244

Harryss

Участник
233
26
Скинь как ты директивы загрузил (порядок)
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

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

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

bool activew = true;
// И далее само собой остальной код, на скриншоте первом видно
 

Cake_

Потрачен
Проверенный
263
313
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

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

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
[code=cpp]#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
#include <d3d9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
bool activew = true;
// И далее само собой остальной код, на скриншоте первом видно[/code]
Это после твоей первой строки поставь

Это после твоей первой строки поставь
C++:
#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
#include <d3d9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
 
  • Нравится
Реакции: Harryss

Harryss

Участник
233
26
Это после твоей первой строки поставь


C++:
#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
#include <d3d9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
Поставил - проблема осталась. Если переменную объявлять перед mainloop, то выдает две ошибки о неопределенном идентификаторе, а если объявлять после директив, то выходит сразу 127 ошибок, среди них уже нет ошибок о неопределенном идентификаторе. Наверное, мне стоит приложить сюда весь код.
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include "ImGUI\imgui.h"
#include "ImGUI\imgui_impl_dx9.h"
#include "ImGUI\imgui_impl_win32.h"
#include <d3d9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

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

bool activew = true;
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::Text("Hello world!");
            }
            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;
}
 

Вложения

  • Безымянный.png
    Безымянный.png
    61 KB · Просмотры: 243

Sire Like

Blanche Bier
Друг
487
235
Если ты пихнешь ее над mainloop то никак не будет работать, потому что проверка на эту activew выше, смени нахуй названия переменных , в пизду
 

Harryss

Участник
233
26
Если ты пихнешь ее над mainloop то никак не будет работать, потому что проверка на эту activew выше, смени нахуй названия переменных , в пизду
Чем это поможет? Попробовал - проблема все та же, только с новым названием переменной.
 

Sire Like

Blanche Bier
Друг
487
235
Чем это поможет? Попробовал - проблема все та же, только с новым названием переменной.
Не , просто у меня бывало такое уже как-то. Это было связано с тем , что имя переменной было такое как например какая-либо функция, ну сменил имя да и норм
 

ufdhbi

Известный
Проверенный
1,463
867
Поставил - проблема осталась. Если переменную объявлять перед mainloop, то выдает две ошибки о неопределенном идентификаторе, а если объявлять после директив, то выходит сразу 127 ошибок, среди них уже нет ошибок о неопределенном идентификаторе. Наверное, мне стоит приложить сюда весь код.
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include "ImGUI\imgui.h"
#include "ImGUI\imgui_impl_dx9.h"
#include "ImGUI\imgui_impl_win32.h"
#include <d3d9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

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

bool activew = true;
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::Text("Hello world!");
            }
            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;
}
собери проект, у меня работает
 

Harryss

Участник
233
26
собери проект, у меня работает
У меня при таковом коде выбрасывает те самые 127 ошибок. Я попытался их прогуглить - вроде это связано с кривой подгрузкой imgui_impl_dx9.h
В папке проекта папка imgui, в обозревателе решений на скриншоте видно. ImGui брал отсюда: ocornut/imgui(https://github.com/ocornut/imgui)

P.S. Сейчас сидел и вспомнил о выебистой манере 10-й Windows, проверю DirectX свой
 

Вложения

  • Безымянный.png
    Безымянный.png
    91.2 KB · Просмотры: 209
Последнее редактирование:

Неадекватная сова

Известный
Проверенный
283
229
У меня при таковом коде выбрасывает те самые 127 ошибок. Я попытался их прогуглить - вроде это связано с кривой подгрузкой imgui_impl_dx9.h
В папке проекта папка imgui, в обозревателе решений на скриншоте видно. ImGui брал отсюда: ocornut/imgui(https://github.com/ocornut/imgui)
Лично собрал руками за 3 минуты и все спокойно компилится - ImGui.zip(https://yadi.sk/d/E5okMbg4Icvu9A)
 
  • Нравится
Реакции: Harryss