Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Цикл While, пропуск действия

Автор: yohohox 6.11.2019, 13:09

Добрый день товарищи.
Подскажите пожалуйста в чем может быть проблема.
Нужно чтобы цикл проходил 3 раза, проверял нужный цвет и нажималась клавиша.
А тут в лог выводит "Цвет не найден" 3 раза, а клик на клавишу не происходит.

Код
local count = 0
    while true do

        count = count + 1

        if color (964, 378, handle) == 65535 then
            log ("Цвет найден")
        else
            log ("Цвет не найден")
            send217 ("Down")
        end

        if count == 3 then
           break
        end

    end

Автор: yohohox 7.11.2019, 14:12

пробовал и через repeat и for тоже не то, что не так?
всего лишь нужно что бы условие повторилось несколько раз после чего цикл прекратил работу.

Автор: Levo222 7.11.2019, 14:25

Цитата(yohohox @ 7.11.2019, 18:12) *

пробовал и через repeat и for тоже не то, что не так?
всего лишь нужно что бы условие повторилось несколько раз после чего цикл прекратил работу.

паузу хотя бы 0 поставить, и некоторые send217 не воспринимают, нужно или sendex писать или Send()

Автор: yohohox 7.11.2019, 14:34

Цитата(Levo222 @ 7.11.2019, 14:25) *

паузу хотя бы 0 поставить, и некоторые send217 не воспринимают, нужно или sendex писать или Send()

Дело в том что все работает прекрасно, только вот не выходит у меня ограничить кол-во повторов цикла.

Автор: Levo222 7.11.2019, 14:38

Цитата(yohohox @ 7.11.2019, 18:34) *

Дело в том что все работает прекрасно, только вот не выходит у меня ограничить кол-во повторов цикла.

А чему равно true?

Код

if count == 3 then
           return false
        end

или почему не сделать while count < 3 do?

Автор: yohohox 7.11.2019, 14:58

Цитата(Levo222 @ 7.11.2019, 14:38) *

А чему равно true?

или почему не сделать while count < 3 do?

true ни чему не равна, это чтоб бесконечный цикл был.
если делаю while count < 3 do. тогда нет проверки по цвету и кликов, только в лог 3 раза сообщения выводится "Click"
Видимо задачу нужно подробнее описать.

Прикрепленное изображение
Есть такой прямоугольник, серая полоска перемещается туда = обратно по оси х.
нужно отслеживать когда серая полоса перекрывает желтую и делать клик. и так повторять N-ое кол-во раз.

что собственно безуспешно пытаюсь сделать. вроде бы задача должна быть не трудная)

Автор: Levo222 7.11.2019, 15:11

Цитата(yohohox @ 7.11.2019, 18:58) *

нужно отслеживать когда серая полоса перекрывает желтую и делать клик

дак клик или "send217 ("Down")"?

Цитата(yohohox @ 7.11.2019, 18:58) *

и так повторять N-ое кол-во раз.

тогда не while а for

тогда нужно отслеживать не желтую полосу а серую и ставить счетчик внутрь найденного
Код
 if color (964, 378, handle) == "серый цвет" then -- серый цвет на месте желтой полосы или неравенство желтого ~= "желтый цвет"
            log ("Цвет найден")
        kleft (964, 378) -- мышью, или
        send217(клавиша)
        count = count + 1
        else
            log ("Цвет не найден")
        end

Автор: yohohox 7.11.2019, 15:47

Цитата(Levo222 @ 7.11.2019, 15:11) *
тогда нужно отслеживать не желтую полосу а серую и ставить счетчик внутрь найденного

Действительно, Вы правы. Спасибо Вам большое!
Теперь работает как надо

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)