Author Topic: Как выполнять 2 условия не зависимо друг от друга.  (Read 5374 times)

0 Members and 1 Guest are viewing this topic.

doushy

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Подскажите, как сделать так, чтобы первое действие выполнялось всегда, а второе, которое "//", каждые 20 минут...или в идеале, чтобы когда второе выполнялось, первое временно переставала работать.


GETSCREEN
IF_PIXEL_IN(1072,247, 1543,284, 2410228)
   LCLICK($_return1, $_return2)
   WAITMS(1000)
   LCLICK(1307, 535)
   WAITMS(40000)
   LCLICK(1512,65)
   WAITMS(1000)
   LCLICK(1312,584)
   WAITMS(1000)
   LCLICK(1331,341)
END_IF



/ //
    LCLICK(1111,111)
    WAITMS(1000)
    LCLICK(345,111)
    WAITMS(1000)
    LCLICK(561,111)
   WAITMS(120000)
   
 ///
   

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(1072,247, 1543,284, 2410228)
   LCLICK($_return1, $_return2)
   WAIT(1)
   LCLICK(1307, 535)
   WAIT(40)
   LCLICK(1512,65)
   WAIT(1)
   LCLICK(1312,584)
   WAIT(1)
   LCLICK(1331,341)
   WAIT(1)
ELSE
   WAITMS(100)
END_IF

DEFINE($time, $_time_t + 1200)
IF($time < $_time_t) // условие сработает через 20 мин после запуска, и будет срабатывать каждые 20 мин
   LCLICK(1111,111)
   WAIT(1)
   LCLICK(345,111)
   WAIT(1)
   LCLICK(561,111)
   WAIT(1)
   $time = $_time_t + 1200
END_IF

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
С погрешностью до  ~ +44 сек.
Ну это так, чтоб в курсе был.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Можно конечно в поток запихнуть, тогда 40 сек не помеха
Code: (clickermann) [Select]
THREAD(t1, 0)
   GETSCREEN
   IF_PIXEL_IN(1072,247, 1543,284, 2410228)
      LCLICK($_return1, $_return2)
      WAIT(1)
      LCLICK(1307, 535)
      WAIT(40)
      LCLICK(1512,65)
      WAIT(1)
      LCLICK(1312,584)
      WAIT(1)
      LCLICK(1331,341)
      WAIT(1)
   ELSE
      WAITMS(100)
   END_IF
END_THREAD

SETTHREAD (t1, 0)
WAITMS(50)
LCLICK(1111,111)
WAIT(1)
LCLICK(345,111)
WAIT(1)
LCLICK(561,111)
WAIT(1)
SETTHREAD (t1, 1)
WAIT(1200)

doushy

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Oraven, спасибо большое, а ещё один вопрос, можно ли сделать так, чтобы в лого выводило координаты(это понятно как), и цвет, по которому он нашёл совпадение(Это при условии, что там много цветов в коде)

И ещё, как сделать, что бы не с 20 минуты начиналось второе условие, а с запуска и соответственно каждые 20 минут.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
THREAD(t1, 0)
   GETSCREEN
   IF_PIXEL_IN(1072,247, 1543,284, 2410228)
      LOGWRITE ("Координата ", $_return1, "," $_return2, " Цвет = ", PXL($_return1,$_return2))       
      LCLICK($_return1, $_return2)
      WAIT(1)
      LCLICK(1307, 535)
      WAIT(40)
      LCLICK(1512,65)
      WAIT(1)
      LCLICK(1312,584)
      WAIT(1)
      LCLICK(1331,341)
      WAIT(1)
   ELSE
      WAITMS(100)
   END_IF
END_THREAD

SETTHREAD (t1, 0)
WAITMS(50)
LCLICK(1111,111)
WAIT(1)
LCLICK(345,111)
WAIT(1)
LCLICK(561,111)
WAIT(1)
SETTHREAD (t1, 1)
WAIT(1200)

doushy

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Спасибо, Oraven.
Но вот с потоками что то не получается...не работает первая часть, только вторая(
Ещё такой не стандартный вопрос. возможно ли сделать так, чтобы второе условие когда выполнялось, первое не работала, но и сделать так, чтобы втрое условие врубалось после 20 минут, но обязательно по завершению первого. потому что сейчас бывают случаи, когда второе, спустя 20 минут включается, а в это время первый кусок ещё не выполнил своё действие...
« Last Edit: March 20, 2018, 10:55:24 PM by doushy »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Без потоков все выполняется последовательно сверху вниз.

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(1072,247, 1543,284, 2410228)
   LCLICK($_return1, $_return2)
   LOGWRITE ("Координата ", $_return1, "," $_return2, " Цвет = ", PXL($_return1,$_return2))
   WAIT(1)
   LCLICK(1307, 535)
   WAIT(40)
   LCLICK(1512,65)
   WAIT(1)
   LCLICK(1312,584)
   WAIT(1)
   LCLICK(1331,341)
   WAIT(1)
ELSE
   WAITMS(100)
END_IF

IF($time < $_time_t)
   LCLICK(1111,111)
   WAIT(1)
   LCLICK(345,111)
   WAIT(1)
   LCLICK(561,111)
   WAIT(1)
   $time = $_time_t + 1200
END_IF

doushy

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
  • Вопросик, как можно сделать, что бы сам кликер спустя время(например час), выключался и включался(ну типо запускался по новой)
  • Как сделать так, чтобы LOGWRITE выполнялся после второго pixel, но писал данные первого поиска(так как второй pixel это просто проверка, а данные нужны с первого)
  • И ещё, как сделать if в if (например: чтобы кусок где "IF($time < $_time_t)" , перед этим проверился (IF_PIXEL_IN или IF_PICTURE_IN).
  • Как сделать, go-goto(go), если оно уже используется ?!как то go переименовать или как ?
П.с. Извините что так много вопросов. Просто очень интересно стало в этой области...


Code: (clickermann) [Select]
GETSCREEN
go:
IF_PIXEL_IN(1077,243, 1543,280, 5816544,   2410228,      3920632,  5431289,    2996716,   48618 )
   
   WAITMS(1)
   LCLICK($_return1, $_return2)
   WAITMS(300)
   
   //
   
   IF_PIXEL_IN(1240,490, 1384,562, 16760320)
      LCLICK($_return1, $_return2)
      LOGWRITE ("Координаты:", $_return1, "," $_return2, " Цвет = ", PXL($_return1,$_return2))
      WAIT(1)
      LCLICK(1307, 535)
      WAIT(40)
      LCLICK(1512,65)
      WAIT(2)
      LCLICK(1312,584)
      WAIT(1)
      LCLICK(1331,341)
      WAIT(1)
   ELSE
      goto(go)
      WAITMS(50)
   END_IF
END_IF

WAITMS(100)

IF($time < $_time_t)
   LCLICK(1319,989)
   WAIT(1)
   LCLICK(1395,987)
   WAIT(1)
   LCLICK(1488,458)
   WAIT(40)
   LCLICK(1520,59)
   WAIT(1)
   LCLICK(1332,327)
   WAIT(1)
   LCLICK(1395,987)
   WAIT(1)
   $time = $_time_t + 1200
END_IF
« Last Edit: March 22, 2018, 05:04:16 AM by doushy »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
  • Вопросик, как можно сделать, что бы сам кликер спустя время(например час), выключался и включался(ну типо запускался по новой)
  • Как сделать так, чтобы LOGWRITE выполнялся после второго pixel, но писал данные первого поиска(так как второй pixel это просто проверка, а данные нужны с первого)
  • И ещё, как сделать if в if (например: чтобы кусок где "IF($time < $_time_t)" , перед этим проверился (IF_PIXEL_IN или IF_PICTURE_IN).
  • Как сделать, go-goto(go), если оно уже используется ?!как то go переименовать или как ?
П.с. Извините что так много вопросов. Просто очень интересно стало в этой области...

Зачем там вкорячено GOTO? Тем более неправильно. Перезапуск здесь нужен как пятое колесо.
Не нужно ставить паузы сразу после поиска, зачем они там? Паузы нужны после действий и при ожидании изменений на экране.
2. Ну так и запоминай их после первого поиска, см. код.
3.  :o Просто вставь блок внутрь другого блока. Непонятно в чём проблема.
4. здесь go - любая текстовая метка.

Ммм... судя по всему ты справку в глаза не видел. Если интересно стало, то чего же бредёшь на ощупь? Только не говори что она не открывается.

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(1077,243, 1543,280, 5816544,2410228,3920632,5431289,2996716,48618)
    $x1 = $_return1
    $y1 = $_return2
    $c1 = PXL($x1, $y1)
    LCLICK($x1, $y1)
    WAITMS(300)
   
    IF_PIXEL_IN(1240,490, 1384,562, 16760320)
        LCLICK($_return1, $_return2)
        LOGWRITE("Координаты:", $x1, "," $y1, " Цвет = ", $c1)
        WAIT(1)
        LCLICK(1307, 535)
        WAIT(40)
        LCLICK(1512,65)
        WAIT(2)
        LCLICK(1312,584)
        WAIT(1)
        LCLICK(1331,341)
        WAIT(1)
    ELSE
        WAITMS(50)
    END_IF
END_IF

IF($time < $_time_t)
    LCLICK(1319,989)
    WAIT(1)
    LCLICK(1395,987)
    WAIT(1)
    LCLICK(1488,458)
    WAIT(40)
    LCLICK(1520,59)
    WAIT(1)
    LCLICK(1332,327)
    WAIT(1)
    LCLICK(1395,987)
    WAIT(1)
    $time = $_time_t + 1200
END_IF
« Last Edit: March 22, 2018, 04:27:10 PM by Vint »


doushy

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
А как сделать цикл, чтобы он повторялся в течении 60 секунд к примеру ?

Vint, Спасибо. Не поверишь, но справка у меня не работает. написано файла не найдено. так что прошу у вас совета...извините за тупые вопросы. Спасибо

где ошибка ?Да, знаю, бред написан, тем более не дописан, но я запутался:( и да, я знаю что цвета можно запихнуть в одну кучу, но мне нужно именно так для понимания Подправьте пожалуйста...(хочу что бы он в течение 60 секунд проверял то или иное место, и если не находил ничего, то заново искал, а по истечению 60 сек нажимал в выбранное место...

Code: (clickermann) [Select]
$time = $_time_t + 60
WHILE($time > $_time_t) // öèêë äëèòñÿ 60 ñåê
   
   GETSCREEN
   IF_PIXEL_IN(1491,58,1532,100, 3092272)
      LCLICK($_return1, $_return2)
      $time = 0
      WAIT(1)
   else
     
      IF_PIXEL_IN(1470,56,1541,110, 6513764)
         LCLICK($_return1, $_return2)
         $time = 0
         WAIT(1)
      else
         WAITMS(50)
      END_IF
   END_IF
END_CYC

HALT
« Last Edit: March 22, 2018, 11:35:43 PM by doushy »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Vint, Спасибо. Не поверишь, но справка у меня не работает. написано файла не найдено. так что прошу у вас совета...
Я же говорил "не говори"  :) :D
Скачай нормальный дистрибутив и проверь чтобы все файлы распаковались нормально.
Если файл на месте, но проблема с отображением, то сделать это:
Раздел "Ошибки", прибитая сверху тема  СПРАВКА НЕ ОТКРЫВАЕТСЯ (решение проблемы)
« Last Edit: March 23, 2018, 08:57:41 AM by Vint »


doushy

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Да, я уже разобрался с этим вопросом, спасибо.
Что по поводу проги ?подскажиье пожалуйста

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Непонятно описание.

Нужно в течении 60 секунд искать 2 цвета, раздельно. По истечении 60 сек кликать в найденный (видать последним). Так?
Даже если нашли сразу, всё равно ждём все 60 сек? Зачем?

И что делать, если в течении 60 сек не нашли? Об этом никаких упоминаний.


doushy

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Подскажите, почему условие зациклилось на последнем(где время), оно же должно каждые 20 минут

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(1077,243, 1543,280,        48618)   //Это поиск сундука. Первые 2 числа, это x1y1, вторые - x2y2. Рисует прямоугольник и там ищет цвета(которые идут дальше))
   $x1 = $_return1
   $y1 = $_return2
   $c1 = PXL($x1, $y1)
   LCLICK($x1, $y1)
   WAITMS(300)
   
   IF_PIXEL_IN(1240,490, 1384,562, 16760320)           //это проверка, когда выскакивает окошко вы хотите посмотреть видео. и цвет поиска прям в серединке типо.
      LCLICK($_return1, $_return2)
      LOGWRITE("Координаты:", $x1, "," $y1, " Цвет = ", $c1)
      WAIT(1)
      LCLICK(1307, 535)                                   //хз куда наживает, но по логике туда, где до этого нажимает пред. строчка)
      WAIT(40)
      LCLICK(1531,68)
      //жмёт на крестик. закрывает рекламу.
      WAIT(2)
      LCLICK(1312,584)               //собирает награду.
      WAIT(1)
      LCLICK(1331,341)
      WAIT(1)
      LCLICK(1331,341)                //жмёт в поле, что бы убрать окно, если выскачит, но это наверное не важно, это предыдущие ошибки.
      WAIT(1)
   ELSE
      WAITMS(50)
   END_IF
END_IF

DEFINE($time, $_time_t + 1200)
IF($time < $_time_t)
   WAIT(5)
   LCLICK(1261,988)  // 10914
   WAIT(1)
   LCLICK(1399,990)  // 410316
   WAITms(300)
   LCLICK(1485,466)  // 3492740
   WAIT(40)
   LCLICK(1531,68)
   WAIT(2)
   LCLICK(1312,584)
   WAIT(1)
   LCLICK(1331,341)
   WAIT(1)
   LCLICK(1331,341)
   WAIT(1)
   
   $time = $_time_t + 1200                          /
   
END_IF



//LCLICK(1073,11)  // 2104092