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

Шурик

Активный
216
43

Шурик

Активный
216
43
Екземпляр класса должен быть глобальным или static
Попытался сделать глобальным и статическим - результата нет, всё также вылетает.
Хочу обратить внимание на то, что если я укажу th.join() после: std::thread th = test.start(""), то игра не вылетит, но к сожалению от потока не будет смысла (т.к. фризит процесс при Sleep).

UPD: Проверил на консольном приложении - успешно (но не в SF).
iSd77Pd.png
 
Последнее редактирование:

Harryss

Участник
233
26
Попытался сделать глобальным и статическим - результата нет, всё также вылетает.
Хочу обратить внимание на то, что если я укажу th.join() после: std::thread th = test.start(""), то игра не вылетит, но к сожалению от потока не будет смысла (т.к. фризит процесс при Sleep).

UPD: Проверил на консольном приложении - успешно (но не в SF).
iSd77Pd.png
Необходимость в парилке с потоком возникла с целью нормально использовать задержку?
 

Harryss

Участник
233
26
Да, но не только из-за задержки.
Если это вдруг поможет, предлагаю простой вариант избавления от этой парилки, с библиотекой thread.
C++:
const auto myTask = []()
{
    // Твой код.
    // Можно использовать Sleep и это не будет тормозить игру.
};
std::thread(myTask).detach();  //<--- Сам вызов потока
 
  • Нравится
Реакции: Шурик

Шурик

Активный
216
43
Если это вдруг поможет, предлагаю простой вариант избавления от этой парилки, с библиотекой thread.
C++:
const auto myTask = []()
{
    // Твой код.
    // Можно использовать Sleep и это не будет тормозить игру.
};
std::thread(myTask).detach();  //<--- Сам вызов потока
Хм, твой способ не подходит для моей ситуации, но за deatch огромное спасибо. На самом деле это решило мою проблему.
 

AnWu

https://t.me/anwublog
Всефорумный модератор
4,762
5,363
Есть ли возможность менять шрифт текста для ImGui меню?
C++:
            ImGui::CreateContext();
            ImGui_ImplWin32_Init(GetActiveWindow());
            ImGui_ImplDX9_Init(SF->getRender()->getD3DDevice());
            ImGuiIO& IO = ImGui::GetIO();
            if (!bChangeFont) {
                ImFontConfig font_config;
                TCHAR path[MAX_PATH];
                HRESULT hr = SHGetFolderPathA(NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, path);
                std::string fPath = std::string(path).append("\\arialbd.ttf");
                IO.Fonts->AddFontFromFileTTF(fPath.c_str(), 14.0f, &font_config, IO.Fonts->GetGlyphRangesCyrillic());
                smallFont = IO.Fonts->AddFontFromFileTTF(fPath.c_str(), 12.0f, &font_config, IO.Fonts->GetGlyphRangesCyrillic());
                bChangeFont = true;
            }
            ImGuiStyle* style = &ImGui::GetStyle();
у меня так
 
  • Нравится
Реакции: {cran}

Шурик

Активный
216
43
Возможно ли в registerChatCommand передать в качестве второго параметра лямбду? Но внутри неё мне нужно получить 2 переменные, которые в ней не находятся. Если да, то пожалуйста покажите пример.
 

Harryss

Участник
233
26
Возможно ли в registerChatCommand передать в качестве второго параметра лямбду? Но внутри неё мне нужно получить 2 переменные, которые в ней не находятся. Если да, то пожалуйста покажите пример.
registerChatCommand напрямую с лямбдой не работает, на основе того, что я показал ранее, с cmd работаю так
C++:
void CALLBACK cmdExample(std::string param)
{
    if (param.empty())
        return;

    const auto task = [param]() // Просто добавил param
    {
        // Код, задержки, все дела.
        int my_int = std::stoi(param); // Получение параметра функции
    };
    std::thread(task).detach();
}
 

Шурик

Активный
216
43
registerChatCommand напрямую с лямбдой не работает, на основе того, что я показал ранее, с cmd работаю так
C++:
void CALLBACK cmdExample(std::string param)
{
    if (param.empty())
        return;

    const auto task = [param]() // Просто добавил param
    {
        // Код, задержки, все дела.
        int my_int = std::stoi(param); // Получение параметра функции
    };
    std::thread(task).detach();
}
У меня нет определённой команды.
Я команды создаю уже непосредственно в самой игре и не могу сделать так как у тебя.