Что нового

Автоматизация Поиск нужного пикселя в определенной зоне

Daniil

Новичок
Сообщения
3
Репутация
0
Всем привет.
Уже который день пытаюсь написать бота, но не как не получается.
Нужно чтобы он в определённой области (а именно с 402 177 по 967 742) искал пиксель нужно цвета и по нахождению его, нажимал на него левой кнопкой мыши.
Код:
While 1
    
For $i=177  to 742 Step 5
    
    For $j=402 to 967 Step 5
        
        If PixelGetColor($j, $i) = 0xED1C24 Then
            MouseMove($j, $i)
            MouseClick("left")
            MsgBox(0, "красный", $j & "," & $i)
        EndIf    
    Next    
Next
WEnd


Объясните что я делаю не так :smile:
 

All2khoff

Продвинутый
Сообщения
352
Репутация
65
Попробуйте не искать точный цвет... а искать с допуском.
Код:
While 1
For $x=177  to 742 Step 5
    For $y=402 to 967 Step 5
        $a = PixelSearch($x, $y, $x+5, $y+5, 0xED1C24, 20) ;ищем по динамическим координатам + 5 пикселей
        If Not @error Then
            MouseMove(($x+($x+5))/2, ($y+($y+5))/2) ;наводим курсор в центр квадрата где найден нужный пиксель
            MouseClick("left")
            MsgBox(0, "красный", ($x+($x+5))/2 & "," & ($y+($y+5))/2)
        EndIf

    Next
Next
WEnd
 

Krislein

Новичок
Сообщения
1
Репутация
0
А если координаты сразу из PixelSearch брать?
Код:
While 1

$aCoords = PixelSearch(402, 177, 967, 742, 0xED1C24, 10)
If Not @error Then
    MouseClick("left", $aCoords[0], $aCoords[1], 1)
    MsgBox(0, "", "красный X  Y: " & $aCoords[0] & "," & $aCoords[1])
EndIf

WEnd
 
Автор
D

Daniil

Новичок
Сообщения
3
Репутация
0
Спасибо конечно, но пиксель в первом случае не находится вообще, а во втором случае ищет, но выводит и двигает мышку не на те координаты. Может ли быть проблема в том, что я тестирую код в Paint-е?
 

All2khoff

Продвинутый
Сообщения
352
Репутация
65
А еще я заметил что перепутал координаты по осям.. :rofl:
ниже исправленный код.
Код:
While 1
For $y=177  to 742 Step 5
    For $x=402 to 967 Step 5
        $a = PixelSearch($x, $y, $x+5, $y+5, 0xED1C24, 20) ;ищем по динамическим координатам + 5 пикселей
        If Not @error Then
            MouseMove(($x+($x+5))/2, ($y+($y+5))/2) ;наводим курсор в центр квадрата где найден нужный пиксель
;~ MouseMove($a[0], $a[1]) наводит прямо на пиксель...
            MouseClick("left")
;~             MsgBox(0, "красный", ($x+($x+5))/2 & "," & ($y+($y+5))/2)
        EndIf

    Next
Next
WEnd

итог работы скрипта с черной кистью в редакторе
1698908248803.png
 
Последнее редактирование:
Автор
D

Daniil

Новичок
Сообщения
3
Репутация
0
Теперь работает, но почему-то немного не совпадает :smile:
Сообщение автоматически объединено:

Все, вопрос решён, беда была в использовании масштаба
 

Вложения

  • изображение_2023-11-03_094446997.png
    изображение_2023-11-03_094446997.png
    75.3 КБ · Просмотры: 4
Последнее редактирование:
Верх