Что нового

Мышь, клавиатура PixelSearch работает не полностью

oOpsBY

Новичок
Сообщения
5
Репутация
0
Привет.
Подскажите пожалуйста. Имеется данный скрипт, но есть проблема в работе.

Код:
HotKeySet("{F1}","_Exit")
HotKeySet("{F2}","_Pause")
While 1
$Reload = PixelSearch(637, 571,1222, 970,0xBBF8FF)
If IsArray($Reload) = True Then
sleep(350)
Send("D")
EndIf
WEnd
Func _Exit()
Exit
EndFunc


Все работает, пиксель находит, и в нужный момент нажимает то, что мне нужно. Но как только я начинаю двигать персонажа, скрипт перестает работать.
Суть такова, мне нужно найти синий пиксель, см. скриншот, и в момент перезарядки нажать кнопку "D".
Персонаж перемещается мышкой (MOBA).
Дополнительные кнопки в этот момент не нажимаются.

1630218276889.png
 

Oki

Продвинутый
Сообщения
452
Репутация
62
С таким набором параметров ищется точное совпадение цвета. А алгоритмы отрисовки объектов при движении, вероятно, могут в отдельных "кадрах" незаметно для глаза менять компоненты цвета на незначительные величины или, что хуже для анализа, менять отдельные пиксели существенно, заботясь лишь о том, что несколько соседних пикселей совместно создают в глазу впечатление определённого цвета (при движении отдельные пиксели отслеживаются с трудом, но на скриншотах можно разглядеть). Имеет смысл сделать несколько скриншотов при движении и проверить цвета вручную. Лучше всего программно (тестовым скриптом, например) снимать скриншоты и программно же анализировать параллельно с визуальным обозрением результатов. Если же положиться на удачу, то можно поиграться с шестым параметром функции PixelSearch.
 
Последнее редактирование:
Автор
oOpsBY

oOpsBY

Новичок
Сообщения
5
Репутация
0
С таким набором параметров ищется точное совпадение цвета. А алгоритмы отрисовки объектов при движении, вероятно, могут в отдельных "кадрах" незаметно для глаза менять компоненты цвета на незначительные величины или, что хуже для анализа, менять отдельные пиксели существенно, заботясь лишь о том, что несколько соседних пикселей совместно создают в глазу впечатление определённого цвета (при движении отдельные пиксели отслеживаются с трудом, но на скриншотах можно разглядеть). Имеет смысл сделать несколько скриншотов при движении и проверить цвета вручную. Лучше всего программно (тестовым скриптом, например) снимать скриншоты и программно же анализировать параллельно с визуальным обозрением результатов. Если же положиться на удачу, то можно поиграться с шестым параметром функции PixelSearch.
Возможно, но фишка в том что AutoClickExtreme с этим делом справился на ура, он находит нужный пиксель и выполняет задачу. Причем я пробовал искать как голубой пиксель показанный на скриншоте, так и пиксель самого "Умения" и в обеих случаях результат был положительный. Что не сказать об autoit и ahk.

1630414615225.png
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Возможно, но фишка в том что AutoClickExtreme с этим делом справился на ура, он находит нужный пиксель и выполняет задачу. Причем я пробовал искать как голубой пиксель показанный на скриншоте, так и пиксель самого "Умения" и в обеих случаях результат был положительный. Что не сказать об autoit и ahk.

Пикселя цвета 0xBBF8FF на этой картинке нет. А тяжело искать чёрную кошку в тёмной комнате, если её там нет. То, что другие средства радостно сообщают, что нашли отсутствующую "чёрную кошку", говорит лишь о том, что эти средства делают не то, о чём их попросили, пусть даже из лучших побуждений, но никак не извещая об этом. Вот близких цветов, малоотличимых от искомого на глаз, на этой картинке в очень разных местах (даже там, где таковые на первый взгляд не ожидаются!) хватает. С небольшим значением шестого параметра функции PixelSearch найдутся даже те точки, которые вряд ли подойдут для актуальной цели. Нужно, скорее, искать стабильную область пикселей близких цветов, для чего функция PixelSearch не предназначена. Ну или же задать более узкую область экрана для поиска, чтобы избежать ложноположительных срабатываний в таких вопиющих случаях (но, возможно, не во всех).

Например, в голубом прямоугольнике, на который указывает стрелка номер 1, все точки имеют цвета 0xBAF8FE и 0xBBF8FE (максимальный модуль разности по одной из RGB-составляющих с искомым цветом от 3 до 4 единиц), тогда как одинокий пиксель чуть повыше буквы "R" (его несложно рассмотреть, если вглядеться) имеет цвет #BAF8FE, который ещё ближе к искомому (здесь подобный максимум модуля разности составляет всего одну единицу, но всё же это не в точности искомый цвет; такой же цвет наблюдается лишь у одного пикселя в области, на которую указывает стрелка номер 2; настолько близких по цвету пикселей, кроме этих двух примеров, на этой картинке нет: у остальных пикселей хотя бы одна RGB-составляющая отличается от искомого цвета минимально на две единицы в какую-либо сторону).
Сообщение автоматически объединено:

А на скриншоте в стартовом посте вообще в прямоугольничке цвет и вовсе не голубой, а белый. Голубое там свечение вокруг, которое создаёт обман зрения. Нельзя точный цвет определять на глаз, нужно проверять.
 
Последнее редактирование:
Автор
oOpsBY

oOpsBY

Новичок
Сообщения
5
Репутация
0
0xFEF8BB
Хорошо, объясните мне тогда почему в первом случае с autoit и ahk если мой персонаж стоит на месте то пиксель находится, а во втором когда персонаж в движении то положительного результата нет.
В первом посте я немного ошибся с цветом. Вот факт того что искомый мной пиксель присутствует на скриншоте. Так же он есть и в игре когда я смотрю там. (Скриншот был немного ужат по качеству.)
В любом случае спасибо за развернутые ответы.

Анимация.gif
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
Вам сказали попробовать 6 параметр PixelSearch, вы попробовали?

Код:
$Reload = [URL='https://autoit-script.ru/docs/functions/pixelsearch.htm']PixelSearch[/URL](637, 571,1222, 970,0xBBF8FF, 20)

shade-variation[необязательный] Число от 0 до 255, показывающее, на сколько может отличаться красная, зелёная и синяя компоненты цвета. По умолчанию 0 (точное совпадение).
 
Автор
oOpsBY

oOpsBY

Новичок
Сообщения
5
Репутация
0
Вам сказали попробовать 6 параметр PixelSearch, вы попробовали?

Код:
$Reload = [URL='https://autoit-script.ru/docs/functions/pixelsearch.htm']PixelSearch[/URL](637, 571,1222, 970,0xBBF8FF, 20)
Еще нет, пока нет возможности. Когда попробую отпишу.
 
Верх