Вопросы по таймеру в imgui

Tony Delony

Новичок
Автор темы
7
0
Версия MoonLoader
.026-beta
В общем делаю функцию авто докладов в скрипте. Ну тип например каждый 20 минут в чат делается доклад. Но столкнулся с такой проблемой, то что если ты включаешь эти авто доклады то всё ок. Например каждые 20 минут делается доклад. НО стоит выключить на 3 минуты авто доклады, и обратно их включить, тогда почему то начинают работать параллельно два цикла. И старый продолжает работать, и новый начинает работу. Цикл у меня в lua_thread.create. Я нашёл функцию которая завершает параллельный процесс. Тогда игру просто крашит. Помогите разобраться.

Lua:
function wait_timer_report()
    if CheckBoxAutoReport.v then
        five_window_state.v = false
        sampAddChatMessage(d_info .. "Авто-Доклад активирован. Чтобы сообщить про ЧС вне докладов - L-ALT + Y", -1)
        sampAddChatMessage(d_info .. "Деактивировать Авто-Доклад - L-ALT + N", -1)
        while CheckBoxAutoReport.v do
            if CheckBoxAutoReport.v then
                if CheckRadio_Post.v == 1 then
                    sampSendChat("/f [ВВС]: Докладывает: " .. mainIni.config.rang .. " " .. nick .. ". Пост: " .. u8:decode(ReportPost.v) .. ". " ..  u8:decode(StatusPost.v))
                else
                    sampSendChat("/r Докладывает: " .. mainIni.config.rang .. " " .. nick .. ". Пост: " .. u8:decode(ReportPost.v) .. ". " ..  u8:decode(StatusPost.v))
                end
                if CheckBoxTimeAndScreen.v then
                    sampSendChat("/time")
                    lua_thread.create(makeScreenshot) -- там задержка 800мс. перед тем как сделать скрин
                end
                wait(buffer_wait_report.v)
            end
        end
    end
end

А ЭТОТ ВЕСЬ КОД при нажатии галочки я запускаю через lua_thread.create. Я пробовал после того как выключаешь авто доклады, принудительно закрывать lua_thread.create. тогда крашило сразу после выключения авто доклада
 

Tak

Известный
177
70
почему то начинают работать параллельно два цикла
Можно создать переменную, при старте авто доклада и установить ее на true, при завершении false, а в потоке проверять true ли она, если-нет, выходить из цикла.
 

Tony Delony

Новичок
Автор темы
7
0
Можно создать переменную, при старте авто доклада и установить ее на true, при завершении false, а в потоке проверять true ли она, если-нет, выходить из цикла.
подскажи каким образом выходить из цикла? Потому что как ты видишь в коде, чек бокс имеет значение либо тру либо фолс, я этот чек бокс подставляю и в вайл, и соответственно, проверка перед вайлом
Можно создать переменную, при старте авто доклада и установить ее на true, при завершении false, а в потоке проверять true ли она, если-нет, выходить из цикла.
А я возможно полял свою ошибку. Ибо переменная чек бокс на проверку тру или фолс стоит первее нежели вайл, то есть когда я выключаю доклад, то я пропускаю цкил но не останавливаю его
подскажи каким образом выходить из цикла? Потому что как ты видишь в коде, чек бокс имеет значение либо тру либо фолс, я этот чек бокс подставляю и в вайл, и соответственно, проверка перед вайлом

А я возможно полял свою ошибку. Ибо переменная чек бокс на проверку тру или фолс стоит первее нежели вайл, то есть когда я выключаю доклад, то я пропускаю цкил но не останавливаю его
Нет не помогло такое решение)) так как я создаю поток, который имеет вайл тру, но к нему в следующий раз не возвращаюсь, а опять делаю новый. Как возвращаться к старому потоку?
 
Последнее редактирование: