Помогите чайнику с циклом repeat until lua

mooonwalker

Новичок
Автор темы
9
0
Короче мне надо чтобы цикл повторялся пока в чат сампа не будет написана команда (я делаю пиарщик, команда /pr вызывает диалоговое окно куда игрок вводит текст для пиара, потом это сообщение пишется в sampSendChat, и мне надо чтобы оно писалось пока команда /pr не будет написана еще раз)
pr:
function pr()
    lua_thread.create(function() -- Нужен для цикла (while на 3-й строке)
        sampShowDialog(6406,"Пиарщик", "Введите текст для пиара: ", "Ок", "Отмена", 1)
        while sampIsDialogActive(6406) do wait(100) end -- ждёт пока вы ответите на диалог
        local result, button, list, input = sampHasDialogRespond(6406)
        if result and button == 1 then
            repeat wait(3000) until --а вот тут надо чтобы цикл повторялся пока в чат не будет написано /pr
                sampSendChat(input)
            end
        else
            sampAddChatMessage("Вы не ввели текст для пиара!", -1)
        end
    end)
end
 
Решение
Короче мне надо чтобы цикл повторялся пока в чат сампа не будет написана команда (я делаю пиарщик, команда /pr вызывает диалоговое окно куда игрок вводит текст для пиара, потом это сообщение пишется в sampSendChat, и мне надо чтобы оно писалось пока команда /pr не будет написана еще раз)
pr:
function pr()
    lua_thread.create(function() -- Нужен для цикла (while на 3-й строке)
        sampShowDialog(6406,"Пиарщик", "Введите текст для пиара: ", "Ок", "Отмена", 1)
        while sampIsDialogActive(6406) do wait(100) end -- ждёт пока вы ответите на диалог
        local result, button, list, input = sampHasDialogRespond(6406)
        if result and button == 1 then
            repeat wait(3000) until --а вот тут надо чтобы цикл...

Tema05

Известный
1,471
435
Короче мне надо чтобы цикл повторялся пока в чат сампа не будет написана команда (я делаю пиарщик, команда /pr вызывает диалоговое окно куда игрок вводит текст для пиара, потом это сообщение пишется в sampSendChat, и мне надо чтобы оно писалось пока команда /pr не будет написана еще раз)
pr:
function pr()
    lua_thread.create(function() -- Нужен для цикла (while на 3-й строке)
        sampShowDialog(6406,"Пиарщик", "Введите текст для пиара: ", "Ок", "Отмена", 1)
        while sampIsDialogActive(6406) do wait(100) end -- ждёт пока вы ответите на диалог
        local result, button, list, input = sampHasDialogRespond(6406)
        if result and button == 1 then
            repeat wait(3000) until --а вот тут надо чтобы цикл повторялся пока в чат не будет написано /pr
                sampSendChat(input)
            end
        else
            sampAddChatMessage("Вы не ввели текст для пиара!", -1)
        end
    end)
end
Самый простой вариант создать boolean переменную в начале кода. Все всяких функций.
local pr_bool = false
Далее при активации команды в самом начале функции инвентируешь значение.
pr_bool = not pr_bool
Далее проверяешь её значение после изменения. Если оно true то запускаешь поток с циклом для пиара (то есть все что у тебя сейчас в функции). Если false то нечего не делаешь. А уже в цикле ставишь условие работы что pr_bool должно быть true. Это должно завершить цикл когда переменная станет false.

И у тебя есть момент когда текст не был введён и цикл не запустился. Тут не забудь присваивать переменной false.
 
  • Нравится
Реакции: whyega52