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

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,809
При компиляции вот такого кода ( SFPlugin )
cod:
#include <Windows.h>
#include "main.h"

SAMPFUNCS *SF = new SAMPFUNCS();

void __stdcall mainloop()


void CALLBACK cmd_show_info_player(std::string param);
{
    if (param.empty()) return;
    int    i = std::stoi(param);

    char buf[128];

    stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[i];

    if (!pPlayer) return;

    sprintf(buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d",
        pPlayer->szPlayerName,
        pPlayer->iPing,
        pPlayer->iScore,
        pPlayer->iIsNPC,
        pPlayer->pPlayerData->iAFKState == 2);

    SF->getSAMP()->getChat()->AddChatMessage(-1, buf);
};


{
    static bool initialized = false;
    if (!initialized)
    {
        if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized())
        {
            initialized = true;
            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded.");
            SF->getSAMP()->registerChatCommand("showinfo", cmd_show_info_player);
        }
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    if (dwReasonForCall == DLL_PROCESS_ATTACH)
        SF->initPlugin(mainloop, hModule);
    return TRUE;
}

Выдаёт такую ошибку:

1>------ Сборка начата: проект: SFPlugin, Конфигурация: Release Win32 ------
1> main.cpp
1>main.cpp(9): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>main.cpp(10): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>main.cpp(31): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
У тебя явно написано где ошибка, чего не хватает, и почему не компилируется
 
  • Нравится
Реакции: sc6ut

EclipsedFlow

Известный
Проверенный
1,045
475
Выводит какой-то бред, замахался с этим уже, помогите пожалуйста.

C++:
std::ifstream file(license_txt);
    if (file.is_open())
    {
        std::string lines;
        while (std::getline(file, lines)) // Перебирает строки и потом сравнивает с hdd_now
        {
            if (lines == hdd_now) {
                SF->Log("Путь к файлу: %s\nHDD: %s\nТекст: %s", license_txt, hdd_now, lines);
                msg("Подписки куплена, приятного использования");
            }
            else
            {
                SF->Log("Путь к файлу: %s\nHDD: %s\nТекст: %s", license_txt, hdd_now, lines);
                msg("Подписки нету, её нужно купить");
            }
        }
        file.close();
    }

Скрин:
1635626871650.png
 

#Rin

Известный
Всефорумный модератор
1,214
1,043
Выводит какой-то бред, замахался с этим уже, помогите пожалуйста.

C++:
std::ifstream file(license_txt);
    if (file.is_open())
    {
        std::string lines;
        while (std::getline(file, lines)) // Перебирает строки и потом сравнивает с hdd_now
        {
            if (lines == hdd_now) {
                SF->Log("Путь к файлу: %s\nHDD: %s\nТекст: %s", license_txt, hdd_now, lines);
                msg("Подписки куплена, приятного использования");
            }
            else
            {
                SF->Log("Путь к файлу: %s\nHDD: %s\nТекст: %s", license_txt, hdd_now, lines);
                msg("Подписки нету, её нужно купить");
            }
        }
        file.close();
    }

Скрин:
Посмотреть вложение 119843
Для std::string следует использовать метод .c_str()
C++:
lines.c_str()
Для выводы HDD скорее тебе требуется: "%X"
 

EclipsedFlow

Известный
Проверенный
1,045
475
когда в лог выводишь....
После проверки, 7 строка.
C++:
std::ifstream file(license_txt);
    if (file.is_open())
    {
        std::string lines;
        while (std::getline(file, lines)) // Перебирает строки и потом сравнивает с hdd_now
        {
            if (lines == hdd_now) {
                SF->Log("Путь к файлу: %s\nHDD: %s\nТекст: %s", license_txt, hdd_now, lines);
                msg("Подписки куплена, приятного использования");
            }
            else
            {
                SF->Log("Путь к файлу: %s\nHDD: %s\nТекст: %s", license_txt, hdd_now, lines);
                msg("Подписки нету, её нужно купить");
            }
        }
        file.close();
    }
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,809
После проверки, 7 строка.
C++:
std::ifstream file(license_txt);
    if (file.is_open())
    {
        std::string lines;
        while (std::getline(file, lines)) // Перебирает строки и потом сравнивает с hdd_now
        {
            if (lines == hdd_now) {
                SF->Log("Путь к файлу: %s\nHDD: %s\nТекст: %s", license_txt, hdd_now, lines);
                msg("Подписки куплена, приятного использования");
            }
            else
            {
                SF->Log("Путь к файлу: %s\nHDD: %s\nТекст: %s", license_txt, hdd_now, lines);
                msg("Подписки нету, её нужно купить");
            }
        }
        file.close();
    }
C++:
std::ifstream file(license_txt);
    if (file.is_open())
    {
        std::string lines;
        while (std::getline(file, lines)) // Перебирает строки и потом сравнивает с hdd_now
        {
            if (lines == hdd_now) {
                SF->Log("Путь к файлу: %s\nHDD: %s\nТекст: %s", license_txt.c_str(), hdd_now.c_str(), lines.c_str());
                msg("Подписки куплена, приятного использования");
            }
            else
            {
                SF->Log("Путь к файлу: %s\nHDD: %s\nТекст: %s", license_txt.c_str(), hdd_now.c_str(), lines.c_str());
                msg("Подписки нету, её нужно купить");
            }
        }
        file.close();
    }
 

EclipsedFlow

Известный
Проверенный
1,045
475
При добавлении этой функции в исполнение, плагин SF не загружается вообще.

C++:
size_t write_data_file(void* ptr, size_t size, size_t nmemb, FILE* stream) {
    size_t written = fwrite(ptr, size, nmemb, stream);
    return written;
} // Доп. функция, строка 14

void download_file()
{
    std::string file_txt = game_directory() + "\\SAMPFUNCS\\lic.txt";

    CURL* curl = curl_easy_init();
    if (curl) {
        FILE* fp = fopen(file_txt.c_str(), "wb");
        curl_easy_setopt(curl, CURLOPT_URL, "url");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data_file);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
        CURLcode res = curl_easy_perform(curl);
        SF->Log(curl_easy_strerror(res)); // Вывод лога

        curl_easy_cleanup(curl);
        fclose(fp);
    }
 

F0RQU1N and

Известный
1,308
498
При добавлении этой функции в исполнение, плагин SF не загружается вообще.

C++:
size_t write_data_file(void* ptr, size_t size, size_t nmemb, FILE* stream) {
    size_t written = fwrite(ptr, size, nmemb, stream);
    return written;
} // Доп. функция, строка 14

void download_file()
{
    std::string file_txt = game_directory() + "\\SAMPFUNCS\\lic.txt";

    CURL* curl = curl_easy_init();
    if (curl) {
        FILE* fp = fopen(file_txt.c_str(), "wb");
        curl_easy_setopt(curl, CURLOPT_URL, "url");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data_file);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
        CURLcode res = curl_easy_perform(curl);
        SF->Log(curl_easy_strerror(res)); // Вывод лога

        curl_easy_cleanup(curl);
        fclose(fp);
    }
компиль курл статически
 
  • Нравится
Реакции: EclipsedFlow

EclipsedFlow

Известный
Проверенный
1,045
475
компиль курл статически
Если я думаю правильно где-то была строка со слово Static, после инициализации библиотеки, её нежно добавить или как правильно?
#define CURL_STATICLIB
 
Последнее редактирование:

EclipsedFlow

Известный
Проверенный
1,045
475
  • Bug
Реакции: F0RQU1N and