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

CleanLegend

Известный
Всефорумный модератор
477
935
@Harryss http://cppstudio.com/post/9507/
Зачем ты тратишь своё время напрасно? После ответа на этот вопрос будет еще похожий вопрос, это всё из базового уровня.
не зная базовой информации, ты не сможешь идти дальше.
Хочешь узнать что такое глобальная переменная? - http://cppstudio.com/post/415/
 
  • Нравится
Реакции: Rjx13

Sire Like

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

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
538
Дак само собой пытался так сделать. И над функцией, и перед условием - ошибки за неопределенный идентификатор. И прежде чем писать, смотрел такие же темы что @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 · Просмотры: 253
  • Безымянный1.png
    Безымянный1.png
    5.8 KB · Просмотры: 242

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 · Просмотры: 242

Sire Like

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

Harryss

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

Sire Like

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

ufdhbi

Известный
Проверенный
1,458
865
Поставил - проблема осталась. Если переменную объявлять перед 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 · Просмотры: 207
Последнее редактирование:

Rjx13

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