Author Topic: Поиск 4х разных пикселей в одной точке  (Read 2480 times)

0 Members and 1 Guest are viewing this topic.

kkklient

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Здраствуйте, пишу бота для игры, нужно считывать цвет пикселя в определенной точке и сравнивать с четырьмя значениями, для каждого значения своё действие, если совпадений не найдено, то переходить к следующей точке и повторять те же действия. Вот часть кода, который у меня получился(не работает)
Code: (clickermann) [Select]
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.: не бейте палками, впервые связываюсь с программированием
« Last Edit: August 27, 2021, 03:41:02 PM by pheren »

novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Поиск 4х разных пикселей в одной точке
« Reply #1 on: August 27, 2021, 04:54:59 PM »
А что не работает?
Я думаю, как минимум, colormode здесь не нужен.
« Last Edit: August 27, 2021, 04:56:42 PM by novhome »

kkklient

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Поиск 4х разных пикселей в одной точке
« Reply #2 on: August 27, 2021, 04:56:31 PM »
А что не работает?
Скрипт стартует и почти моментально выключается

novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Поиск 4х разных пикселей в одной точке
« Reply #3 on: August 27, 2021, 04:58:27 PM »
Он выполняет свою задачу и выключается. У тебя не пописано ничего, что делать, если ничего не нашлось. Colormode убери.

novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Поиск 4х разных пикселей в одной точке
« Reply #4 on: August 27, 2021, 05:03:26 PM »
Code: (Clickermann) [Select]
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

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Поиск 4х разных пикселей в одной точке
« Reply #5 on: August 27, 2021, 05:09:45 PM »
Координаты лучше через переменные задать (изменятся размеры окна и все поплывет), тем более они у тебя одинаковые везде. Если придется изменить, то возни много. И нажатия срабатывать будут в активном окне, т. е. ты нажал, например, запуск скрипта на кликере, он тебе нашел пиксель и нажал стрелку, но не в том окне, где искал, а в активном.

kkklient

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Поиск 4х разных пикселей в одной точке
« Reply #6 on: August 27, 2021, 05:11:36 PM »
Координаты лучше через переменные задать (изменятся размеры окна и все поплывет), тем более они у тебя одинаковые везде. Если придется изменить, то возни много. И нажатия срабатывать будут в активном окне, т. е. ты нажал, например, запуск скрипта на кликере, он тебе нашел пиксель и нажал стрелку, но не в том окне, где искал, а в активном.
Окно всегда одного размера, поэтому это не страшно
Он выполняет свою задачу и выключается. У тебя не пописано ничего, что делать, если ничего не нашлось. Colormode убери.
colormode был, потому что нет определенно точного цвета пикселя, на экране идет определенный градиент этих цветов, который как раз сглаживается colormode`ом
Code: (Clickermann) [Select]
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
Сейчас посмотрю, может быть дело у меня было совсем в другом

kkklient

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Поиск 4х разных пикселей в одной точке
« Reply #7 on: August 27, 2021, 05:33:42 PM »
Спасибо, novhome, в итоге благодаря тебе я понял, что все правильно написал и скрипт на самом деле работает, я просто ошибся и вместо colormode(6) написал colormode(7)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Поиск 4х разных пикселей в одной точке
« Reply #8 on: August 27, 2021, 06:19:20 PM »
Зачем ты пишешь поиск, если пиксел один и он в известных координатах?
Проверка одного пиксела
Code: (clickermann) [Select]
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