Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: kkklient on August 27, 2021, 03:37:29 PM
-
Здраствуйте, пишу бота для игры, нужно считывать цвет пикселя в определенной точке и сравнивать с четырьмя значениями, для каждого значения своё действие, если совпадений не найдено, то переходить к следующей точке и повторять те же действия. Вот часть кода, который у меня получился(не работает)
getscreen
colormode(7)
WAITMS(100)
if_pixel_in(776, 802, 776, 802, 4194303) //ищет первый цвет
waitms(10)
KEYPRESS(40)
else
end_if
if_pixel_in(776, 802, 776, 802, 16777023) //ищет второй цвет
waitms(10)
KEYPRESS(37)
else
end_if
if_pixel_in(776, 802, 776, 802, 12550143) //ищет третий цвет
waitms(10)
KEYPRESS(39)
else
end_if
if_pixel_in(776, 802, 776, 802, 4177919) //ищет четвертый цвет
waitms(10)
KEYPRESS(38)
else
end_if
Буду благодарен, если поможете найти лучшее и, главное, рабочее решение этой задачи
P.s.: не бейте палками, впервые связываюсь с программированием
-
А что не работает?
Я думаю, как минимум, colormode здесь не нужен.
-
А что не работает?
Скрипт стартует и почти моментально выключается
-
Он выполняет свою задачу и выключается. У тебя не пописано ничего, что делать, если ничего не нашлось. Colormode убери.
-
getscreen
WAITMS(20)
if_pixel_in(776, 802, 776, 802, 4194303) //ищет первый цвет
print("Нашли первый цвет")
waitms(10)
KEYPRESS(40)
else
print("Не нашли первый цвет")
waitms(20)
end_if
if_pixel_in(776, 802, 776, 802, 16777023) //ищет второй цвет
print("Нашли второй цвет")
waitms(10)
KEYPRESS(37)
else
print("Не нашли второй цвет")
waitms(20)
end_if
if_pixel_in(776, 802, 776, 802, 12550143) //ищет третий цвет
print("Нашли третий цвет")
waitms(10)
KEYPRESS(39)
else
print("Не нашли третий цвет")
waitms(20)
end_if
if_pixel_in(776, 802, 776, 802, 4177919) //ищет четвертый цвет
print("Нашли четвертый цвет")
waitms(10)
KEYPRESS(38)
else
print("Не нашли четвертый цвет")
waitms(20)
end_if
HALT
-
Координаты лучше через переменные задать (изменятся размеры окна и все поплывет), тем более они у тебя одинаковые везде. Если придется изменить, то возни много. И нажатия срабатывать будут в активном окне, т. е. ты нажал, например, запуск скрипта на кликере, он тебе нашел пиксель и нажал стрелку, но не в том окне, где искал, а в активном.
-
Координаты лучше через переменные задать (изменятся размеры окна и все поплывет), тем более они у тебя одинаковые везде. Если придется изменить, то возни много. И нажатия срабатывать будут в активном окне, т. е. ты нажал, например, запуск скрипта на кликере, он тебе нашел пиксель и нажал стрелку, но не в том окне, где искал, а в активном.
Окно всегда одного размера, поэтому это не страшно
Он выполняет свою задачу и выключается. У тебя не пописано ничего, что делать, если ничего не нашлось. Colormode убери.
colormode был, потому что нет определенно точного цвета пикселя, на экране идет определенный градиент этих цветов, который как раз сглаживается colormode`ом
getscreen
WAITMS(20)
if_pixel_in(776, 802, 776, 802, 4194303) //ищет первый цвет
print("Нашли первый цвет")
waitms(10)
KEYPRESS(40)
else
print("Не нашли первый цвет")
waitms(20)
end_if
if_pixel_in(776, 802, 776, 802, 16777023) //ищет второй цвет
print("Нашли второй цвет")
waitms(10)
KEYPRESS(37)
else
print("Не нашли второй цвет")
waitms(20)
end_if
if_pixel_in(776, 802, 776, 802, 12550143) //ищет третий цвет
print("Нашли третий цвет")
waitms(10)
KEYPRESS(39)
else
print("Не нашли третий цвет")
waitms(20)
end_if
if_pixel_in(776, 802, 776, 802, 4177919) //ищет четвертый цвет
print("Нашли четвертый цвет")
waitms(10)
KEYPRESS(38)
else
print("Не нашли четвертый цвет")
waitms(20)
end_if
HALT
Сейчас посмотрю, может быть дело у меня было совсем в другом
-
Спасибо, novhome, в итоге благодаря тебе я понял, что все правильно написал и скрипт на самом деле работает, я просто ошибся и вместо colormode(6) написал colormode(7)
-
Зачем ты пишешь поиск, если пиксел один и он в известных координатах?
Проверка одного пиксела
GETSCREEN(776, 802, 776, 802)
COLORMODE(6, 776, 802, 776, 802)
$color = PXL(776, 802)
IF($color = 4194303)
KEYPRESS(40)
WAITMS(100)
ELSE
IF($color = 16777023)
KEYPRESS(37)
WAITMS(100)
ELSE
IF($color = 12550143)
KEYPRESS(39)
WAITMS(100)
ELSE
IF($color = 4177919)
KEYPRESS(38)
WAITMS(100)
ELSE
WAITMS(30)
END_IF
END_IF
END_IF
END_IF