repeat работает когда не нужен

bruskin

Участник
Автор темы
151
14
Версия MoonLoader
Другое
Lua:
if text:find('Время действия маски (%d+) минут, после исхода времени ее придётся выбросить%.') then
        usedmask = text:match('Время действия маски (%d+) минут, после исхода времени ее придётся выбросить%.')
        lua_thread.create(function()
            repeat
                wait(60000)
                usedmask = usedmask - 1
            until usedmask == 0
        end)
    end
    if text:find('Вы успешно выкинули маску') then
        usedmask = 0
    end
Вообщем-то есть такой код, который должен устанавливать количество минут когда маска надета и 0 минут когда снята
И вот если использовать маску, а потом снять - значение минут устанавливается на 0, а вот repeat продолжает работать и выводит минуты в минус, что делать? Как это остановить?
 
  • Bug
Реакции: qdIbp
Решение
Конечно он продолжит работать, потому что итерация цикла уже запустилась, он ждет минуту и убавляет на 1 текущее значение, а т.к. текущее значение 0, получается -1. Проверка переменной должна быть до ее изменения, а не после. Еще другой способ есть, просто завершить поток, если ты выкинул маску
Lua:
if text:find('Время действия маски (%d+) минут, после исхода времени ее придётся выбросить%.') then
        usedmask = text:match('Время действия маски (%d+) минут, после исхода времени ее придётся выбросить%.')
        lua_thread.create(function()
        if usedmask ~= 0 then
            repeat
                wait(60000)
                if usedmask ~= then
                usedmask = usedmask - 1
                end
            until...

MrDorlik

Известный
953
384
а вот repeat продолжает работать
Конечно он продолжит работать, потому что итерация цикла уже запустилась, он ждет минуту и убавляет на 1 текущее значение, а т.к. текущее значение 0, получается -1. Проверка переменной должна быть до ее изменения, а не после. Еще другой способ есть, просто завершить поток, если ты выкинул маску
 
Последнее редактирование:

bruskin

Участник
Автор темы
151
14
Конечно он продолжит работать, потому что итерация цикла уже запустилась, он ждет минуту и убавляет на 1 текущее значение, а т.к. текущее значение 0, получается -1. Проверка переменной должна быть до ее изменения, а не после. Еще другой способ есть, просто завершить поток, если ты выкинул маску
Lua:
if text:find('Время действия маски (%d+) минут, после исхода времени ее придётся выбросить%.') then
        usedmask = text:match('Время действия маски (%d+) минут, после исхода времени ее придётся выбросить%.')
        lua_thread.create(function()
        if usedmask ~= 0 then
            repeat
                wait(60000)
                if usedmask ~= then
                usedmask = usedmask - 1
                end
            until usedmask == 0
        end)
    end
 
Последнее редактирование:

Похожие темы

  1. У
    • Закрыта
      • Нравится
    Ответы
    78
    Просмотры
    44K