Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: fidain on October 31, 2015, 11:36:38 PM
-
Доброго дня.
Нужна следующая последовательность действий:
Найти текст (цифры) на мониторе,
кликнуть по найденному
выполнить поиск двух слов, если слова есть, то возвращаемся в начало
если нет, то ищем определенные пиксели, если нашли кликаем затем enter жмём и halt
если нет, то все сначала начинаем.
По порядку
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 раз. Далее он снова повторяет первый поиск.
Возможно получилось сумбурно, если поможете буду благодарен.
П.С. ОГРОМНОЕ СПАСИБО создателю проги.
-
halt жать не стоит, это прекращение работы кликера
если нет, то ищем определенные пиксели, если нашли кликаем затем enter жмём и halt
если нет, то все сначала начинаем.//так мы выходим или делаем заново?
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
попробуй такой код.у меня все отлично ищется на странице, без повторения поиска
-
skip:
poisk("1837") //ищем 1837
getscreen
IF_PIXEL_IN(502,440, 809, 796, 3315455)//нашли оранжевый ответ
LCLICK($_return1+15, $_return2+5) //кликаем по найденной, в центр
end_if
Что значит skip? Что за оператор?
-
Что значит skip? Что за оператор?
Это метка на которую осуществляется переход через goto(skip)
-
Новый вопрос возник.
Находим картинку на экране (есть довольно большой кусок экрана для анализа). Далее нужно проверить наличие картинки в маленькой прямоугольной области (там находится найденная картинка и там же нужно проверить на наличие другой картинки).
Проще говоря, имеем выражение
привет
Вася
как твои
как братан
как ура ура
Мы ищем слово "братан". Мы его нашли. Теперь нужно проверить есть ли рядом со словом "братан" слово "как". Оно есть в 3 трех местах. Нужно искать именно рядом с найденным словом. Как это реализовать.
Надеюсь правильно описал)))
П.С. Спасибо огромное создателю сайта. На днях буду делать пожертвование. Труд должен быть отблагодарен.
-
И еще вопрос.
Поиске картинки происходит следующее. Подобных картинок (слов) - несколько. И он кликает только по одной. Пока она не исчезнет. Вопрос как сделать так, чтобы кликала 1-3 раза по одной, а потом по другой и т.д.
-
ограничивать область поиска = второй поиск должен начинаться с координат предыдущего результата +1 пиксель
-
ограничивать область поиска = второй поиск должен начинаться с координат предыдущего результата +1 пиксель
Как бы это реализовать. Вот в чем вопрос)) слаб в прграмировании только изучаю))
-
С последним вопросом разобрался. Вопрос в следующем. На экране есть несколько одинаковых картинок. Необходимо что бы он кликнул на одинаковые картинки поочередно. Т.е. картинки идут снизу вверх. Сначала он кликает на картинку сверху и кликает до тех пор пока не выполниться условие. А надо чтобы он 1-2 раза кликнул на картинку первую, затем на вторую и так далее.
При помощи чего можно это реализовать? Заранее благодарю.
-
Функция SCANPICTURE тебе в помощь. Советую заглянуть в шаблоны.
-
Спасибо) Не совсем разобрался в шаблоне. Подскажите, пожалуйста, где почитать подробнее?
-
Очевидно же что в справке!
С неё нужно было и начинать.
-
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. Если есть то кликаем на нее.
Далее в других координатах ищем пиксели и если находим то кликаем на них.
К чему спрашиваю? Не всегда срабатывает. Точнее крайне редко срабатывает. Логику и ошибку найти не могу.
-
Разобрался в чем дело. Оказалось, что картинка 2378 бывает на белом фоне (чисто белый), а бывает на чуть чуть сером. Убрал 100 попадание в картинке на 95 и вуаля)
Всем спасибо.
-
Рано порадовался. Теперь он вообще все подряд тыкает а не 2378....
help
-
Все равно прыгает. Не только 2378 выбирает. Не понимаю уже ничего...
-
Закрась фон вокруг цифр например ярко зеленым, и укажи этот цвет за место -1 в функции. Функция будет считать этот цвет как прозрачность в картинке.
Не надо писать абы что вроде "#ищем картинку 2378" кликер такому не обрадуется
Коменты помечаются //
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
-
Oraven, спасибо огромное. Буду разбираться.