Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: doushy on March 19, 2018, 10:44:21 PM

Title: Как выполнять 2 условия не зависимо друг от друга.
Post by: doushy on March 19, 2018, 10:44:21 PM
Подскажите, как сделать так, чтобы первое действие выполнялось всегда, а второе, которое "//", каждые 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)
   
 ///
   
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: Oraven on March 20, 2018, 07:10:30 AM
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
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: Vint on March 20, 2018, 08:01:41 AM
С погрешностью до  ~ +44 сек.
Ну это так, чтоб в курсе был.
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: Oraven on March 20, 2018, 11:45:26 AM
Можно конечно в поток запихнуть, тогда 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)
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: doushy on March 20, 2018, 07:43:39 PM
Oraven, спасибо большое, а ещё один вопрос, можно ли сделать так, чтобы в лого выводило координаты(это понятно как), и цвет, по которому он нашёл совпадение(Это при условии, что там много цветов в коде)

И ещё, как сделать, что бы не с 20 минуты начиналось второе условие, а с запуска и соответственно каждые 20 минут.
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: Oraven on March 20, 2018, 09:44:28 PM
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)
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: doushy on March 20, 2018, 10:43:36 PM
Спасибо, Oraven.
Но вот с потоками что то не получается...не работает первая часть, только вторая(
Ещё такой не стандартный вопрос. возможно ли сделать так, чтобы второе условие когда выполнялось, первое не работала, но и сделать так, чтобы втрое условие врубалось после 20 минут, но обязательно по завершению первого. потому что сейчас бывают случаи, когда второе, спустя 20 минут включается, а в это время первый кусок ещё не выполнил своё действие...
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: Oraven on March 21, 2018, 07:40:37 AM
Без потоков все выполняется последовательно сверху вниз.

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
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: doushy on March 22, 2018, 01:55:20 AM
П.с. Извините что так много вопросов. Просто очень интересно стало в этой области...


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
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: Vint on March 22, 2018, 04:24:43 PM
  • Вопросик, как можно сделать, что бы сам кликер спустя время(например час), выключался и включался(ну типо запускался по новой)
  • Как сделать так, чтобы 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
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: doushy on March 22, 2018, 07:05:51 PM
А как сделать цикл, чтобы он повторялся в течении 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
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: Vint on March 23, 2018, 08:55:37 AM
Vint, Спасибо. Не поверишь, но справка у меня не работает. написано файла не найдено. так что прошу у вас совета...
Я же говорил "не говори"  :) :D
Скачай нормальный дистрибутив и проверь чтобы все файлы распаковались нормально.
Если файл на месте, но проблема с отображением, то сделать это:
Раздел "Ошибки", прибитая сверху тема  СПРАВКА НЕ ОТКРЫВАЕТСЯ (решение проблемы) (http://crapware.aidf.org/forum/index.php?topic=1031.0)
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: doushy on March 23, 2018, 02:41:52 PM
Да, я уже разобрался с этим вопросом, спасибо.
Что по поводу проги ?подскажиье пожалуйста
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: Vint on March 23, 2018, 05:32:31 PM
Непонятно описание.

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

И что делать, если в течении 60 сек не нашли? Об этом никаких упоминаний.
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: doushy on March 27, 2018, 02:06:01 PM
Подскажите, почему условие зациклилось на последнем(где время), оно же должно каждые 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
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: Oraven on March 27, 2018, 03:31:07 PM
Не мусори в коде!
Оставленная косая черта
Code: (clickermann) [Select]
$time = $_time_t + 1200                          /привела к вот такому результату
Значение переменной $time
Code: [Select]
16:32:44 1522168364+1200/
Условия стоит писать таким образом
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)
   END_IF
ELSE
   WAITMS(50)
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
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: doushy on March 27, 2018, 11:08:44 PM
Oraven, спасибо

а ещё, это так делается, что два временных условия выполнялись не зависимо друг от друга ?!
или по другому ?!...по мочему то есть задержка, то есть нет такого что первое, первое второе, первое, первое второе...оно как то странно это делает....

Code: (clickermann) [Select]
IF($time_1 < $_time_t)
   LCLICK(413,757) 
   $time_1 = $_time_t + 5
END_IF

IF($time_2 < $_time_t)
   LCLICK(417,838) 
   $time_2 = $_time_t + 10
END_IF
Title: Re: Как выполнять 2 условия не зависимо друг от друга.
Post by: Vint on March 28, 2018, 09:19:42 AM
по мочему то есть задержка, то есть нет такого что первое, первое второе, первое, первое второе...оно как то странно это делает....

Ничего странного, выполняется ровно то, что написано.
Если другого кода нет, то можно писать прямо
[spoiler]
Code: (clickermann) [Select]
LCLICK(413,757) // первое
WAIT(5)
LCLICK(413,757) // первое
LCLICK(417,838) // второе
WAIT(5)
[/spoiler]

А почему сейчас не первое, первое второе... На самом деле точность у тебя до секунды, это низкая точность для коротких интервалов. Переменная $_time_t дискретная, меняет значение раз в секунду. Нужно переходить на миллисекунды $_ms.

Вот возьмём такой простой короткий код:
Code: (clickermann) [Select]
IF($time_1 < $_time_t)
   LCLICK(413,757) 
   $time_1 = $_time_t + 5
END_IF
Через сколько времени от первого произойдёт второй клик? Через 5 секунд (5000 ms)? Неа. А через сколько?
На самом деле в таком написании примерно... от 5000 до 5999 ms. Когда прибавлял 5 к $_time_t, $_time_t могла стать такой какая она есть и 0 ms назад и 999. Соответственно и следующее переключение будет или через 1000 или через 1 ms.

Так же, само выполнение кода требует времени, это нужно учитывать. К примеру, у LCLICK добавлена задержка по умолчанию в 30 мс (в настройках программы можно убрать). И остальной код не мгновенный. Даже при переходе на $_ms реальный интервал временами будет увеличиваться на эту величину, ведь условий то два. Но это будет очень редко и всего на ~30-40 ms. Обычно это не критично для большинства задач.

Code: (clickermann) [Select]
DEFINE($time_2, $_ms + 4000)

IF($time_1 < $_ms)
    LOGWRITE("Клик 1")
    WAITMS(30)
    $time_1 = $_ms + 2000
END_IF

IF($time_2 < $_ms)
    LOGWRITE("Клик 2")
    WAITMS(30)
    $time_2 = $_ms + 4000
END_IF
WAITMS(5) // если есть ещё код с задержками, то эта строка не обязательна.

Если прям кровь из носу всегда нужен точный порядок 1-1-2, то нужно писать по другому.