Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: gippi on June 28, 2017, 06:14:30 PM
-
Здравствуйте. Помогите пожалуйста. Надо находить персонажа на экране и в области вокруг него искать картинки и кликать по ним.
Getscreen
IF_PICTURE_IN(0,0, $_xmax, $_ymax "персонаж.bmp") \\ нахожу персонажа
дальше не знаю как искать в области от этого изображения
IF_PICTURE_IN(................................................, "1.bmp")
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
IF_PICTURE_IN(................................................, "2.bmp")
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
-
Записываем координату картинки в переменные и отнимая и прибавляя значения к ним устанавливаем область поиска.
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax, $_ymax "персонаж.bmp", -1, 100)
$sx = $_return1
$sy = $_return2
IF_PICTURE_IN ($sx-50,$sy-50, $sx+50,$sy+50, "1.bmp", -1, 100) // Ищем в зоне +-50 пикселов от картинки персонаж.bmp
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
IF_PICTURE_IN ($sx-50,$sy-50, $sx+50,$sy+50, "2.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
END_IF
WAITMS(50)
-
Спасибо! только работает не совсем так как надо. Картинок персонажа может быть несколько. Когда находится имеющаяся на данный момент картинка персонажа происходит поиск картинок вокруг него и клик по ним, после клика картинка персонажа меняется и её уже нет в скрипте. По идее после getscreen персонаж обнаруживается кликаются картинки рядом по одному разу и всё далее опять getscreen а имеющейся картинки уже нет и цикл останавливается.
Если написать отдельно для одного положения персонажа, то так всё и происходит:
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pers5.bmp", -1, 100)
$sx = $_return1
$sy = $_return2
IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r1.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r2.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r3.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r4.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r5.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-300,$sy-300, $sx+300,$sy+300, "r6.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
END_IF
WAITMS(50)
Но если добавить несколько положений персонажа, то он начинает кликать по картинке не переставая с определённым промежутком :
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pers1.bmp", -1, 100)
$sx = $_return1
$sy = $_return2
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r1.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r2.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r3.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r4.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r5.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r6.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pers2.bmp", -1, 100)
$sx = $_return1
$sy = $_return2
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r1.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r2.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r3.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r4.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r5.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r6.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pers3.bmp", -1, 100)
$sx = $_return1
$sy = $_return2
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r1.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r2.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r3.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r4.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r5.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, "r6.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
END_IF
WAITMS(50)
Помогите разобраться пожалуйста
-
Помогите разобраться пожалуйста
В твоем примере не хватает нескольких END_IF
FOR($_pers=1,$_pers<4)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax, $_ymax, STRCONCAT("pers",$_pers,".bmp"), -1, 100)
$sx = $_return1
$sy = $_return2
FOR($_r=1,$_r<7)
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, STRCONCAT("r",$_r,".bmp"), -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
END_IF
END_CYC
END_IF
END_CYC
WAITMS(50)
-
Дополню
FOR($_pers=1,$_pers<4) // от "pers1.bmp" до "pers3.bmp"
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax, $_ymax, STRCONCAT("pers",$_pers,".bmp"), -1, 100)
$sx = $_return1
$sy = $_return2
FOR($_r=1,$_r<7) // от "r1.bmp" до "r6.bmp"
IF_PICTURE_IN ($sx-150,$sy-150, $sx+150,$sy+150, STRCONCAT("r",$_r,".bmp"), -1, 100)
LCLICK($_return1, $_return2)
WAITMS(50)
$_r=999 // если найдено прерываем цикл
END_IF
END_CYC
END_IF
END_CYC
WAITMS(50)
-
Зачем прерывать? Я понял что их все надо прокликать.