Author Topic: Помощь с IF  (Read 1559 times)

0 Members and 3 Guests are viewing this topic.

Макс666

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Помощь с IF
« on: August 26, 2018, 01:51:25 PM »
Уверен что, код написан неправильно и каряво, но он работает! Его просто нужно усовершенствовать.

Мини игра (рыбалка) где рандомно появляется красная надпись и зеленая. На красную нужно нажать ЛКМ, на зеленую ПКМ, пока не заполнится полоска. Но, после заполнения полоски, ещё некоторое время надпись с цветом остается и скрипт ещё раз на неё кликает.. Из-за этого выскакивает предупреждение (драться нельзя) и может кикнуть с сервера.


После ввода команды "/fish", полоска появляется не сразу (рандомно в течении 3-10 секунд), поэтому стоит while.
Нужно поставить два условия. Если в определенной точке находит белый цвет (в полоске белая надпись) только тогда нужно искать красный с зеленым (в другом месте). Т.е. когда полоска пропадет, чтобы не клацал по зеленому или красному, а сразу останавливался.
Подскажите как такое сделать, ставить два условия..

Code: (clickermann) [Select]
wait 3s

KEYPRESS(0x75)
wait 1s
KEYSTRING ("/fish", 1)
wait 1s
KEYPRESS(0x0D)
wait 1s

FOR($a=0,$a<30)



$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN(722,255, 1182,468, 1907124)  // ищет красный цвет
    LCLICK($_return1, $_return2)
    WAITMS(200)
ELSE
    GETSCREEN
IF_PIXEL_IN(722,255, 1182,468, 2909750)    // ищет зеленый цвет
    RCLICK($_return1, $_return2)
    WAITMS(200)
END_IF
END_CYC

END_CYC


HALT


Макс666

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Помощь с IF
« Reply #1 on: August 26, 2018, 05:58:01 PM »
Нашел решение. Вроде работает.
Code: (clickermann) [Select]

wait 3s

KEYPRESS(0x75)
wait 1s
KEYSTRING ("/fish", 1)
wait 1s
KEYPRESS(0x0D)
wait 1s

FOR($a=0,$a<30)



$check = 0
WHILE($check = 0)

GETSCREEN
IF_PIXEL_IN(652,656, 667,663, 16776191)  // ищет белую полоску
waitms(100)


GETSCREEN
IF_PIXEL_IN(722,255, 1182,468, 1907124)  // красный
    LCLICK($_return1, $_return2)
    WAITMS(200)
ELSE
    GETSCREEN
IF_PIXEL_IN(722,255, 1182,468, 2909750)    // зеленый
    RCLICK($_return1, $_return2)
    WAITMS(200)
END_IF
END_IF
END_CYC

END_CYC


HALT

Но как сделать так чтобы, после того как пропадает полоска, скрипт сам останавливался? Сейчас после того как полоска пропадает, судя по всему начинается ожидание while. Приходится вручную останавливать скрипт и запускать заново. Было бы удобнее чтобы он сам останавливался. Тогда можно засунуть это все в ещё один цикл и отдыхать :)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помощь с IF
« Reply #2 on: August 26, 2018, 06:15:00 PM »
wait 3s - это не наш синтаксис, правильно wait (3)
В последнем скрипте отсутствует 1 END_IF
Зачем там FOR($a=0,$a<30) ?
Где выход из цикла WHILE($check = 0) ?
Этот цикл становится бесконечным.
Выйти из него можно написав в нужном месте $check = 1

Макс666

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Помощь с IF
« Reply #3 on: August 26, 2018, 06:31:30 PM »
3s используется в другой проге, перепутал.
FOR использую потому что, по красному и зеленому нужно кликать пока не заполнится шкала в полоске. Без него он клацает по найденному цвету один раз и цикл завершается.
Про выход из while не знал, пользовался встроенным шаблоном. В написании кода меня и любителем сложно назвать ;D

Спасибо за указание на ошибки, буду пробовать разобраться.