Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Roland on May 20, 2019, 10:33:46 PM

Title: Странное поведение при определении цвета
Post by: Roland on May 20, 2019, 10:33:46 PM
Добрый день, простой код:
Code: [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   If (PXL(267, 36) ! 10751)   
      SCREENSHOTEX(100, 35, 280, 45, "Мой скриншот_", 1)
$check = 1
         WAITMS(50)
    ELSE
         WAITMS(50)
   END_IF
END_CYC

по сути чекается полоска хп. Когда хп падает до определенного уровня - делаю скрин всей полоски.
Проблема в том что я ставлю контрольную точку в начале (вместо x=267 - х=150) или в конце - скрин делается примерно на одном и том же уровне хп. Не могу понять где проблема :(
Title: Re: Странное поведение при определении цвета
Post by: Roland on May 21, 2019, 09:45:27 AM
Quote
Возможно, что разница в 117 пикселей в вашем случае и есть  - примерно один уровень ХП.

SCREENSHOTEX(100, 35, 280, 45, "Мой скриншот_", 1)
здесь как раз вся полоска хп - 100->280
я условно ставил проверку пикселя в интервале 150...267 и срабатывание все равно в одном и том же месте

Quote
Наиболее вероятно, что цвет всегда не равен 10751 - в результате вы всегда сразу получаете скрин текущего состояния полоски, независимо от контрольной точки.

я это предполагал.
запускаю скрипт, иду тестить на мобах. Хп постепенно проседает и скрин чекается ВСЕГДА в одном и том же месте. То есть как-то работает все-таки.
Title: Re: Странное поведение при определении цвета
Post by: Vint on May 21, 2019, 12:30:28 PM
Ну, так у тебя же скрин есть, на нём и проверь цвет в проверяемой точке. Только не примерно, а именно под PXL, потом смотри соседние цвета.

И покажи хоть пару скринов своей полоски.
Title: Re: Странное поведение при определении цвета
Post by: Roland on May 21, 2019, 01:55:11 PM
чтобы поставить условие PXL я навожу курсор на точку полоски в игре и записываю x,y,clr.
скрин только вечером смогу (
Title: Re: Странное поведение при определении цвета
Post by: Vint on May 21, 2019, 05:03:19 PM
Мало ли случаев. Привязка, масштаб win не 100%. При этом можно брать координаты не в том месте.
Title: Re: Странное поведение при определении цвета
Post by: Roland on May 21, 2019, 07:41:58 PM
полоска хп примерно такая
https://yadi.sk/i/sxD9WlvGgAmepw (https://yadi.sk/i/sxD9WlvGgAmepw)

Quote
Привязка, масштаб win не 100%. При этом можно брать координаты не в том месте.

записанные координаты в SCREENSHOTEX совпадают с фактическими.
Масштаб нормальный
Title: Re: Странное поведение при определении цвета
Post by: Oraven on May 21, 2019, 08:55:11 PM
Контролировать уровень полоски лучше всего с помощью подсчета пикселов определенного цвета

$count = PXLCOUNT(10,10, 100,100, 255)
LOGWRITE ($count) // смотрим в логе количество пикселов
IF($count < 100)
  // действие если уровень ниже заданного
END_IF


Чтобы выронить цвет полоски применяем цветокоррекцию 7 уровень

GETSCREEN
COLORMODE(7)

Title: Re: Странное поведение при определении цвета
Post by: Roland on May 21, 2019, 09:12:48 PM
Контролировать уровень полоски лучше всего с помощью подсчета пикселов определенного цвета

$count = PXLCOUNT(10,10, 100,100, 255)
LOGWRITE ($count) // смотрим в логе количество пикселов
IF($count < 100)
  // действие если уровень ниже заданного
END_IF


Чтобы выронить цвет полоски применяем цветокоррекцию 7 уровень

GETSCREEN
COLORMODE(7)

попробую, спасибо
Title: Re: Странное поведение при определении цвета
Post by: Roland on May 21, 2019, 09:18:27 PM
скриншот в формате .jpg ничего не даёт, а вот пара несжатых скриншотов в разных состояниях полоски, сильно поможет пониманию возникших у вас проблем.

в том и дело что независимо от условия - скрин полоски примерно одинаков, залил бмп
https://yadi.sk/i/t7t-T0wTI93Ibg (https://yadi.sk/i/t7t-T0wTI93Ibg)
https://yadi.sk/i/HPwcDU-EKyiygA (https://yadi.sk/i/HPwcDU-EKyiygA)
Title: Re: Странное поведение при определении цвета
Post by: Космич on May 21, 2019, 10:07:20 PM
Высота цифр статичная в 7 пикселей, сама строка вроде бы тоже на одном месте, а вот на счёт разделителя я не уверен, но он один и всегда по центру. Так что можешь анализировать полосу здоровья высотой 1 пиксель и на всю ширину индикатора здоровья. Можно еще воспользоваться распознаванием чисел, выбирай сам
Title: Re: Странное поведение при определении цвета
Post by: Vint on May 22, 2019, 01:07:10 PM
хорошо видно, что ваши изображения уже были предварительно сжаты, повторная перекодировка ничего в данном случае не меняет.
Если скачать, bmp-шки не сжатые, всё нормально.

Вот только цвета 10751 на них НЕТ!
Title: Re: Странное поведение при определении цвета
Post by: Roland on May 22, 2019, 01:44:45 PM
Вот только цвета 10751 на них НЕТ!

смотрел цвет в кликере курсором.
если такого цвета нет - то скрин должен сработать сразу же. Правильно? Но такого не происходит.
Title: Re: Странное поведение при определении цвета
Post by: Roland on May 22, 2019, 08:21:09 PM
в-общем PXLCOUNT работает, все спасибо
но почему PXL не пошел - непонятно )

------------------------

спрошу тут - а как зажать клавишу на несколько секунд?
Code: [Select]
keyDown(#Q)
waitms(4000)
  keyUp(#Q)

не пашет
Title: Re: Странное поведение при определении цвета
Post by: Vint on May 23, 2019, 09:17:03 AM
Ты так и не сказал используешь привязку или нет.
Зажатия не работают в привязке.
Если это какой нибудь эмулятор андроида, то и другие проблемы могут лезть от туда.

Но указанного тобой цвета на скринах нет, можешь сам проверить. Вот скрин твоего цвета 10751..., видно что он яркий, видимо полоска подсвечивается при наведении курсора, неужели это нельзя заметить? В этом случае цвета нужно брать со скрина.

+Цвета на полоске не постоянные. Смотри скрин где я свёл слоями твои два скрина. Вот область выделенная муравьями не имеет отличий.
Как раз на второй полосе пикселей отличия довольно обширные, есть и в других местах. Составляющая красного цвета там отличается на 1 единицу. Естественно, точный поиск это определит.
Цвет может "плыть" и при изменении значения на полоске, такое часто бывает.

Используй цветокоррекцию 7 уровня и всё как рукой снимет.
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
    GETSCREEN(100, 35, 280, 45)
    COLORMODE(7, 100, 35, 280, 45)
    IF(PXL(267, 36) ! 8355839)
        SCREENSHOTEX(100, 35, 280, 45, "Мой скриншот_", 1)
        $check = 1
    END_IF
    WAITMS(50)
END_CYC
Title: Re: Странное поведение при определении цвета
Post by: Roland on May 23, 2019, 10:56:32 AM
Ты так и не сказал используешь привязку или нет.
Зажатия не работают в привязке.
Если это какой нибудь эмулятор андроида, то и другие проблемы могут лезть от туда.

нет, привязки не использую пока. Это десктопная игра. Но в ней есть возможность оконного режима с разрешением полного экрана (1920*1080). Может в этом причина что зажатие не работает?

про цвета: может это особенности рендера такие... я взяли другие координаты (36 строку и 446 цвет) и по ней PXL не отрабатывает, а PXLCOUNT вполне точно работает. Про COLORMODE я понял на будущее.

еще вопрос: после GETSCREEN я сколько угодно раз могу обращаться к этому снимку для обработки разных участков?
GETSCREEN по координатам работает существенно быстрее полного?
Title: Re: Странное поведение при определении цвета
Post by: Vint on May 23, 2019, 01:07:34 PM
еще вопрос: после GETSCREEN я сколько угодно раз могу обращаться к этому снимку для обработки разных участков?
Да. Если там не было изменений или они не нужны.

GETSCREEN по координатам работает существенно быстрее полного?
Быстрее. На разных машинах по разному. На старых очень заметно.
И от разрешения общего зависит. Это всё только по надобности, если нужно ловить очень быстро, или желательно не грузить лишним процессор.