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

san0

Известный
Друг
411
267
#pragma comment(lib, "*.lib")
Обычно, по общепринятой практике, подключение библиотек делают в настройках проекта.
Хорошо бы скинуть что-то про декорированные имена, extern "C", и как это согласовывается в С/C++, но, скорее всего, это не так уж и важно, ведь это абсолютно общедоступная и легко находимая информация.
В общем, на конкретно поставленный вопрос вот прям все расписано и по полочкам разложено Пошаговое руководство. Создание и использование библиотеки DLL (C++)(https://msdn.microsoft.com/ru-ru/library/ms235636.aspx)
И тоже самое, но на английском, и не для методов, а для функций (для каждой кнопочки скриншот даже) MicrosoftDocs/cpp-docs(https://github.com/MicrosoftDocs/cpp-docs/blob/master/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md)
 
  • Нравится
Реакции: Ranto и p1cador

-raymond-

Известный
110
9
как отследить что по моему персонажу попали из оружия?
 
Последнее редактирование:

Sasiko1

Новичок
24
0
Хочу выводить квадрат по команде, но чёт делаю не правильное укажите на ошибки))
C++:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

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

using namespace std;

SAMPFUNCS *SF = new SAMPFUNCS();


bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
    CONST RGNDATA *pDirtyRegion)
{
    if (SUCCEEDED(SF->getRender()->BeginRender()))
    {
        SF->getRender()->DrawBox(500, 500, 25, 25, D3DCOLOR_ARGB(255, 0, 255, 0));
        SF->getRender()->EndRender();
    };

    return true;
};

void CALLBACK cmd_show_info_player(std::string param)
{
    Present(); // ЧЁТ ДЕЛАЮ НЕ ПРАВИЛЬНО :)
};


void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);
        SF->getSAMP()->registerChatCommand("ren", cmd_show_info_player);
    }
}


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;
}
 

Dark_Knight

Me, me and me.
Друг
4,062
2,078
Хочу выводить квадрат по команде, но чёт делаю не правильное укажите на ошибки))
C++:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

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

SAMPFUNCS *SF = new SAMPFUNCS();
bool render = false;


bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
    CONST RGNDATA *pDirtyRegion) {
    if (SUCCEEDED(SF->getRender()->BeginRender()) && render) {
        SF->getRender()->DrawBox(500, 500, 25, 25, D3DCOLOR_ARGB(255, 0, 255, 0));
        SF->getRender()->EndRender();
    };
    return true;
};

void CALLBACK cmd_show_info_player(std::string param) {
    render = !render;
};


void CALLBACK mainloop() {
    static bool init = false;
    if (!init){
        if (!GAME)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;
        SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);
        SF->getSAMP()->registerChatCommand("ren", cmd_show_info_player);
    }
}


BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved) {
    switch (dwReasonForCall) {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule); break;
    }
    return TRUE;
}
 

holmes0

Известный
29
8
Как добавить сообщение в чат сампа и получить IP сервера? (без SF и всяких API)
 
Последнее редактирование:

Ranto

Участник
45
1
Задался таким вопросом, как делают красивые GUI(ЮИ, точно не знаю) для всяких программ, могу пример привести:
1. Лаунчер EpicGames, у них хороший дизайн, моё внимание довольно таки привели.
2. Steam;Origin;Uplay =)
 

iAmerican

Известный
Друг
615
257
Задался таким вопросом, как делают красивые GUI(ЮИ, точно не знаю) для всяких программ, могу пример привести:
1. Лаунчер EpicGames, у них хороший дизайн, моё внимание довольно таки привели.
2. Steam;Origin;Uplay :)
Самописные
 

iAmerican

Известный
Друг
615
257
Задам тупой вопрос, это как? (просто не шарю)
Там сидит целая команда которая пишет интерфейс для этих лаунчеров. Они не брали готовое API.

Исходник - [SF-Plugin] Menu + function(https://blast.hk/threads/12290/) - как пример. Только что ты перечислил у них все гораздо сложнее.
 
  • Нравится
Реакции: Ranto