Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: kriozer22 on March 29, 2015, 06:46:57 PM
-
Помогите пожалуйста написать следующее : в определённой области экрана всё-время в разных местах появляется определённый уникльный цвет, нужно определить координаты этого цвета (это я знаю как сделать) и далее проверять в определённой области от этих координат наличие другого цвета по которому если он попадает в эту область кликать мышкой. Спасибо за внимание.
-
GETSCREEN
IF_PIXEL_IN(200,200, 500,500, 255)
IF_PIXEL_IN($_return1-50,$_return2-50, $_return1+50,$_return2+50, 15723239) // поиск в радиусе 50 пикселов от найденной координаты
LCLICK($_return1,$_return2)
WAITMS(100)
END_IF
END_IF
WAITMS(50)
-
большое спасибо Oraven, буду пробовать
-
А если так:
Есть например такой алгоритм действий:
getscreen
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,7891634)
lclick($_return1,$_return2)
end_if
end_if
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,6839199)
lclick($_return1,$_return2)
end_if
end_if
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,6311826)
lclick($_return1,$_return2)
end_if
end_if
Можно ли сделать так чтобы при обнаружении определённого цвета в зоне видимости нажатие на мышку по этому цвету происходило один раз и после этого нажималась кнопка D и S. Чтобы эти кнопки нажимались только если произошло нажатие мышки. И можно ли проверяемые цвета как-то в одно условие засунуть, чтобы не было куча if, я пробовал через запятую не получилось. Правда нужно чтобы не на один какой-то цвет из нескольких сработало нажитие мыши, а на все что найдутся в радиусе видимости. Спасибо
-
А если так:
Есть например такой алгоритм действий:
[spoiler]getscreen
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,7891634)
lclick($_return1,$_return2)
end_if
end_if
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,6839199)
lclick($_return1,$_return2)
end_if
end_if
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,6311826)
lclick($_return1,$_return2)
end_if
end_if[/spoiler]
Можно ли сделать так чтобы [spoiler] при обнаружении определённого цвета в зоне видимости нажатие на мышку по этому цвету происходило один раз и после этого нажималась кнопка D и S. Чтобы эти кнопки нажимались только если произошло нажатие мышки. И можно ли проверяемые цвета как-то в одно условие засунуть, чтобы не было куча if, я пробовал через запятую не получилось. Правда нужно чтобы не на один какой-то цвет из нескольких сработало нажитие мыши, а на все что найдутся в радиусе видимости. Спасибо [/spoiler]
В одном условии обработать все пиксели в зоне не получится. Если правильно понял задачу, то например можно сделать так:
getscreen
sub (clk_and_key, $__X, $__y) // процедура делает клик, затем нажатие D и нажатие S
lclick($__X, $__y)
waitms(30) // пауза после клика (подобрать нужное значение)
keypress(#D)
waitms(30) // пауза после нажатия кнопки (подобрать нужное значение)
keypress(#S)
waitms(30) // пауза после нажатия кнопки (подобрать нужное значение)
end_sub
$exit = 0 // признак завершения работы
while ($exit ! 1)
if_pixel_in(247, 94, 961, 475, 5967631) // если найден контрольный пиксель, то ищем все пиксели нужных цветов, щелкаем их и нажимаем кнопки
if_pixel_in($_return1-120, $_return2-120, $_return1+120, $_return2+120, 7891634) // если есть пиксель1
clk_and_key($_return1, $_return2)
end_if
if_pixel_in($_return1-120, $_return2-120, $_return1+120, $_return2+120, 6839199) // если есть пиксель2
clk_and_key($_return1, $_return2)
end_if
if_pixel_in($_return1-120, $_return2-120, $_return1+120, $_return2+120, 6311826) // если есть пиксель3
clk_and_key($_return1, $_return2)
end_if
end_if
waitms(50) // разгрузка процессора/пауза между проходами
end_cyc
halt
Или же создать массив с цветами и прогонять его в цикле.
Если в задаче есть пиксели с одинаковыми цветами, то можно сделать тюнинг: для массива цветов в цикле вызывать scanpxl и тут же обрабатывать массив полученных координат.
P.S. В коде есть ошибка, нужно сохранить $_return1, $return2. Смотри ниже у Oraven.
-
Вот, все просто ;D
GETSCREEN
IF_PIXEL_IN(247,94, 961,475, 5967631)
$sx = $_return1
$sy = $_return2
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 7891634)
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 6839199)
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 6311826)
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 7891634,6839199,6311826)
LCLICK($_return1, $_return2) // клик
WAITMS(100)
KEYPRESS(#D) // нажимаем D
WAITMS(500)
KEYPRESS(#S) // нажимаем S
WAITMS(500)
END_IF
END_IF
END_IF
END_IF
END_IF
WAITMS(50)
поправил ::)
-
Все три последние поста неправильно. Или так задумано?
IF_PIXEL_IN идут подряд... почему опять и опять используете $_return1, $_return2 ?
Почему после IF_PIXEL_IN(247,94, 961,475, 5967631) не переназначено другим переменным?
А то у нас пляшущие человечки выходят. Всё дальше и дальше от начала, и в случайном направлении.
-
Никуда не кликает) Вообще ничего не происходит.
-
Никуда не кликает) Вообще ничего не происходит.
Ну значит в радиусе 120 пикселов от цвета 5967631 нет всех трех цветов. Как хотел так и написали...
-
Так кликает :
getscreen
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,7891634)
lclick($_return1,$_return2)
end_if
end_if
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,6839199)
lclick($_return1,$_return2)
end_if
end_if
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,6311826)
lclick($_return1,$_return2)
end_if
end_if
А так не кликает :
GETSCREEN
IF_PIXEL_IN(247,94, 961,475, 5967631)
$sx = $_return1
$sy = $_return2
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 7891634)
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 6839199)
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 6311826)
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 7891634,6839199,6311826)
LCLICK($_return1, $_return2) // клик
WAITMS(100)
KEYPRESS(#D) // нажимаем D
WAITMS(500)
KEYPRESS(#S) // нажимаем S
WAITMS(500)
END_IF
END_IF
END_IF
END_IF
END_IF
WAITMS(50)
-
в первом случае я только фрагмент выложил, там больше цветов. Так и нужно чтобы он при наличии хотя бы одного цвета кликал, а не когда в радиусе есть все перечисленные цвета
-
Правда нужно чтобы не на один какой-то цвет из нескольких сработало нажитие мыши, а на все что найдутся в радиусе видимости. Спасибо
Так и нужно чтобы он при наличии хотя бы одного цвета кликал, а не когда в радиусе есть все перечисленные цвета
Ты хоть определись.
Так кликнет на первый попавшийся
GETSCREEN
IF_PIXEL_IN(247,94, 961,475, 5967631)
$sx = $_return1
$sy = $_return2
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 7891634,6839199,6311826)
LCLICK($_return1, $_return2) // клик
WAITMS(100)
KEYPRESS(#D) // нажимаем D
WAITMS(500)
KEYPRESS(#S) // нажимаем S
WAITMS(500)
END_IF
END_IF
WAITMS(50)
Так попытается найти 3 цвета и если найден 1-3 то в конце нажмет D S
$check = 0
GETSCREEN
IF_PIXEL_IN(247,94, 961,475, 5967631)
$sx = $_return1
$sy = $_return2
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 7891634)
LCLICK($_return1, $_return2) // клик
$check = 1
WAITMS(100)
END_IF
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 6839199)
LCLICK($_return1, $_return2) // клик
$check = 1
WAITMS(100)
END_IF
IF_PIXEL_IN($sx-120,$sy-120,$sx+120,$sy+120, 6311826)
LCLICK($_return1, $_return2) // клик
$check = 1
WAITMS(100)
END_IF
IF($check = 1)
KEYPRESS(#D) // нажимаем D
WAITMS(500)
KEYPRESS(#S) // нажимаем S
WAITMS(500)
END_IF
END_IF
WAITMS(50)
-
А чего в одну не вписал?
-
Исходя из описания, примерно следующее:
Если найден контрольный пиксель, то искать пиксели заданных цветов и на каждом кликать и нажимать кнопки. Выше писал пример решения. Только там нужно сохранить полученные в первом условии координаты и засунуть во вложенные условия вместо $_return1, $_return2.
Более четко опиши задачу, скрин прикрепи или ссылку на игру дай.
Так кликает :
getscreen
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,7891634)
lclick($_return1,$_return2)
end_if
end_if
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,6839199)
lclick($_return1,$_return2)
end_if
end_if
if_pixel_in(247,94,961,475,5967631)
if_pixel_in($_return1-120,$_return2-120,$_return1+120,$_return2+120,6311826)
lclick($_return1,$_return2)
end_if
end_if
Тебе Oraven написал вариант.
Условие if_pixel_in(247,94,961,475,5967631) - нужно один раз тебе. Вложенные условия засовуй в него все вместе последовательно, ведь тебе нужно для каждого пикселя отдельно кликнуть. После lclick($_return1,$_return2) добавь, как тебе подсказали не раз :):
KEYPRESS(#D) // нажимаем D
WAITMS(500)
KEYPRESS(#S) // нажимаем S
WAITMS(500)
-
Извиняюсь если запутал, сейчас вложил скрин. Хочу сделать полуавтоматического бота, ходить буду сам, а всё остальное хочу чтобы кликермэн делал. На картинке виден мой персонаж и монстры 2-х видов. Персонаж появляется на карте в рандомном порядке и у оружия есть определённый радиус действия. Нужно чтобы по монстрам попавшим в радиус действия происходил 1 раз клик мышью и затем клавиша D (перезарядка) и S (конец хода), затем я передвигаю персонажа и если монстры попали в радиус стрельбы всё заново.