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

Основной раздел => Общие вопросы => Topic started by: fidain on October 31, 2015, 11:36:38 PM

Title: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on October 31, 2015, 11:36:38 PM
 Доброго дня.
 Нужна следующая последовательность действий:
Найти текст (цифры) на мониторе,
кликнуть по найденному
выполнить поиск двух слов, если слова есть, то возвращаемся в начало
если нет, то ищем определенные пиксели, если нашли кликаем затем enter жмём и halt
если нет, то все сначала начинаем.
 По порядку

Code: (clickermann) [Select]
KEYDOWN(#CTRL)
waitms(100)
KEYPRESS(70)
waitms(100)
KEYUP (#CTRL)
waitms(100)
KEYSTRING("1837")
WAITMS(100)
IF_PIXEL_IN(502,440, 809, 796, 3315455)
   LCLICK($_return1, $_return2)
   end_if
WAITMS(100)// Нажали контрол + в, щелкаем мышкой по найденному

#LCLICK(1407,78)// закрываем окно поиска в браузере
WAITMS(1000) 
KEYDOwN(#CTRL)
waitms(100)
KEYPRESS(70)
waitms(100)
KEYUP(#CTRL)
waitms(100)
KEYSTRING("с пряником")
WAITMS(100)
GETSCREEN
IF_PIXEL_IN(1023,367, 1434, 662, 3315455)// Мы наши надпись
   End_if

На эту надпись нажать нельзя. Как программе понять, что надпись есть и ввести переменную (или как-то иначе, и на ее основании делать дальнейшие действия (вернуться в начало)?

Когда два раза подряд нажимаю контрол + в (точнее это должна делать программа), получается сделать только 1 раз. Далее он снова повторяет первый поиск.

 Возможно получилось сумбурно, если поможете буду благодарен.
 П.С. ОГРОМНОЕ СПАСИБО создателю проги.
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: Doda on November 01, 2015, 12:42:27 AM
  halt  жать не стоит, это прекращение работы кликера

если нет, то ищем определенные пиксели, если нашли кликаем затем enter жмём и halt
если нет, то все сначала начинаем.//так мы выходим или делаем заново?


Code: (clickermann) [Select]
sub(poisk,$tekst) //подпрограмма
   WAITMS(1000)
   KEYDOWN(#CTRL)
   waitms(100)
   KEYPRESS(70)
   waitms(100)
   KEYUP (#CTRL)
   waitms(100)
   KEYSTRING($tekst)
   WAITMS(100)
end_sub

skip:
poisk("1837")  //ищем  1837
getscreen
IF_PIXEL_IN(502,440, 809, 796, 3315455)//нашли оранжевый ответ
   LCLICK($_return1+15, $_return2+5) //кликаем по найденной, в центр
end_if

LCLICK(1407,78)// закрыли
poisk(" с пряником") //ищем пряник
GETSCREEN
IF_PIXEL_IN(1023,367, 1434, 662, 3315455)//
   goto(skip)  //если слова есть, то возвращаемся в начало
   
else // если не нашли то ищем пиксель
   
   IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)//ищем красный
      LCLICK($_return1, $_return2)  //нашли и кликнули
      WAITMS(100)
      KEYPRESS(#ENTER)  //жмем ентер
      halt//жмем хальт как и просил
   END_IF
   
End_if




попробуй такой код.у меня все отлично ищется на странице, без повторения поиска
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on November 01, 2015, 12:34:19 PM
Code: (clickermann) [Select]
skip:
poisk("1837")  //ищем  1837
getscreen
IF_PIXEL_IN(502,440, 809, 796, 3315455)//нашли оранжевый ответ
   LCLICK($_return1+15, $_return2+5) //кликаем по найденной, в центр
end_if
Что значит skip? Что за оператор?
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: Oraven on November 01, 2015, 02:24:00 PM
Что значит skip? Что за оператор?

Это метка на которую осуществляется переход через goto(skip)
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on December 16, 2015, 12:23:37 PM
 Новый вопрос возник.
 Находим картинку на экране (есть довольно большой кусок экрана для анализа). Далее нужно проверить наличие картинки в маленькой прямоугольной области (там находится найденная картинка и там же нужно проверить на наличие другой картинки).
 Проще говоря, имеем выражение

привет
Вася
как твои
как братан
как ура ура

Мы ищем слово "братан". Мы его нашли. Теперь нужно проверить есть ли рядом со словом "братан" слово "как". Оно есть в 3 трех местах.  Нужно искать именно рядом с найденным словом. Как это реализовать.
 Надеюсь правильно описал)))
П.С. Спасибо огромное создателю сайта. На днях буду делать пожертвование. Труд должен быть отблагодарен.
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on December 16, 2015, 12:31:58 PM
И еще вопрос.
Поиске картинки происходит следующее. Подобных картинок (слов) - несколько. И он кликает только по одной. Пока она не исчезнет. Вопрос как сделать так, чтобы кликала 1-3 раза по одной, а потом по другой и т.д.
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: Луций on December 16, 2015, 12:59:17 PM
ограничивать область поиска = второй поиск должен начинаться с координат предыдущего результата +1 пиксель
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on December 16, 2015, 03:36:05 PM
ограничивать область поиска = второй поиск должен начинаться с координат предыдущего результата +1 пиксель
Как бы это реализовать. Вот в чем вопрос)) слаб в прграмировании только изучаю))
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on December 17, 2015, 04:18:11 PM
С последним вопросом разобрался. Вопрос в следующем. На экране есть несколько одинаковых картинок. Необходимо что бы он кликнул на одинаковые картинки поочередно. Т.е. картинки идут снизу вверх.  Сначала он кликает на картинку сверху и кликает до тех пор пока не выполниться условие. А надо чтобы он 1-2 раза кликнул на картинку первую, затем на вторую и так далее.
 При помощи чего можно это реализовать? Заранее благодарю.
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: Oraven on December 17, 2015, 05:12:54 PM
Функция SCANPICTURE тебе в помощь. Советую заглянуть в шаблоны.
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on December 17, 2015, 06:09:54 PM
Спасибо) Не совсем разобрался в шаблоне. Подскажите, пожалуйста, где почитать подробнее?
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: Vint on December 18, 2015, 09:11:12 AM
Очевидно же что в справке!
С неё нужно было и начинать.
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on January 11, 2016, 07:37:05 PM
Code: [Select]
GETSCREEN
SCANPICTURE($pozivnoy, 0,438, 184,853, "2378.bmp") #ищем картинку 2378
$y = arrpop($pozivnoy)
$x = arrpop($pozivnoy)
 WAITMS(100)
GETSCREEN

IF_PICTURE_IN ($x,$y, $x+180,$y+20, "123.bmp")
   LCLICK($_return1, $_return2)
GETSCREEN
IF_PIXEL_IN(1005,395, 1439,827, 39168, 39423, 10040268)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
END_IF
WAITMS(500)

Господа, я Вам, наверно, уже порядком надоел) Но, все-таки, просьба проверить код.
 - найти картинку 2378, далее проверяем есть ли рядом картинка 123. Если есть то кликаем на нее.
Далее в других координатах ищем пиксели и если находим то кликаем на них.

К чему спрашиваю? Не всегда срабатывает. Точнее крайне редко срабатывает. Логику и ошибку найти не могу.
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on January 11, 2016, 08:10:36 PM
Разобрался в чем дело. Оказалось, что картинка 2378 бывает на белом фоне (чисто белый), а бывает на чуть чуть сером. Убрал 100 попадание в картинке на 95 и вуаля)
Всем спасибо.
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on January 11, 2016, 08:21:18 PM
Рано порадовался. Теперь он  вообще все подряд тыкает а не 2378....
 help
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on January 11, 2016, 09:31:22 PM
Все равно прыгает. Не только 2378 выбирает. Не понимаю уже ничего...
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: Oraven on January 11, 2016, 09:59:14 PM
Закрась фон вокруг цифр например ярко зеленым, и укажи этот цвет за место -1 в функции. Функция будет считать этот цвет как прозрачность в картинке.
Не надо писать абы что вроде "#ищем картинку 2378" кликер такому не обрадуется
Коменты помечаются //

Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($pozivnoy, 0,438, 184,853, "2378.bmp", -1, 100) // ищем картинку 2378

WHILE(ARRSIZE($pozivnoy) > 0) // странно почему тут нет этого цикла у тебя, или это не весь скрипт?
   $y = arrpop($pozivnoy)
   $x = arrpop($pozivnoy)
   GETSCREEN
   IF_PICTURE_IN ($x,$y, $x+180,$y+20, "123.bmp")
      LCLICK($_return1, $_return2)
      WAITMS(100)
      GETSCREEN
      IF_PIXEL_IN(1005,395, 1439,827, 39168, 39423, 10040268)
         LCLICK($_return1, $_return2)
         WAITMS(100)
      END_IF
   END_IF
   WAITMS(500)
END_CYC
Title: Re: Последовательное нажатие ctrl+v, один потом второй раз.
Post by: fidain on January 11, 2016, 10:34:12 PM
Oraven, спасибо огромное. Буду разбираться.