Делаю свой первый SFPlugin

Статус
В этой теме нельзя размещать новые ответы.

clicore

Известный
Автор темы
170
124
Привет всем! Возможно я не в нужную тему написал, но вот короче(Не компилирует):

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();

void CALLBACK weather(std::string param) //Каллбэк который вызывает команда
{
    if (param.empty()) return; //Похоже у меня тут что то не правильно
    int    w = std::string(param); //И тут
    SF->getCLEO()->callOpcode("01B6: set_weather %d", w); //Меняю погоду на w
};

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()->registerConsoleCommand("setweather", weather); //Регистрирую консольную команду
        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;
}
 

Sire Like

Blanche Bier
Друг
487
232
1)
C++:
SF->registerConsoleCommand("setweather", weather);
2)
C++:
SF->getCLEO()->callOpcode("01B6: set_weather %d", param);
Так же проще будет, но я не в курсе будет ли это работать
В первом пункте ты лишнего написал.

C++:
if (param.empty()) return; //Похоже у меня тут что то не правильно

Тут всё правильно, проверка на пустой параметр.
 
Статус
В этой теме нельзя размещать новые ответы.