1

Тема: AHK: поиск одного цвета на другом и нажатие ЛКМ

Всех приветствую! Обращаюсь на форум за помощью в улучшении скрипта. Суть такова: в АХК я разбираюсь не очень, и нужно допилить скрипт таким образом, чтобы по нахождению белого прямоугольника поверху на зелёном скрипт нажимал ЛКМ, а после не нахождения подобных прямоугольников нажимал на клавишу Е.

Пример кода присутствует. Заранее благодарен всем тем, кто выделит свое время на помощь!


F2::
Send, {о Down}
Sleep, 100
Send, {о Up}

PixelGetColor, Check, 891, 758, alt
ToolTip, Check=%Check% ,0,0
If (Check = "0xFFFFFF")
 Goto, Label2
If (Check = "0x00FF00")
 Goto, Label3
Return

Label2:
Send {Click 2}
Return

Label3:
Send {Click R}
Return

~Esc::	; Убрать подсказку:
ToolTip
Return

2 (изменено: scared, 2022-06-23 20:08:51)

Re: AHK: поиск одного цвета на другом и нажатие ЛКМ

https://imgur.com/a/Uv99kmO вот пример, в какой момент нужно нажимать ЛКМ. Т.е. искать совпадение, и нажимать ЛКМ в момент совпадения.

3

Re: AHK: поиск одного цвета на другом и нажатие ЛКМ

Код, который вы взяли тут не подходит для этого. Хоть бы попытались что-то сделать сами.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

4 (изменено: scared, 2022-06-25 08:10:32)

Re: AHK: поиск одного цвета на другом и нажатие ЛКМ

__Михаил__, следующий код так же не подойдет? На нахождение координат цветов. Ну и возможно ли впихнуть сюда нажатие на ЛКМ в случае совпадения расположения цветов? Если же и это не подойдет - проясните пожалуйста, с помощью какого аргумента или т.п. можно осуществить подобное действо...


#Persistent
#SingleInstance, force
#NoEnv

SetTimer, update, 50

F2::
ExitApp
return

update:
resultWhite := findWhite()
r := resultWhite[1]
whiteX := resultWhite[2]
whiteY := resultWhite[3]

if r {
    result := checkGreen(whiteX, whiteY)
    if(result) {
        SendInput, {LButton}
        ;SoundBeep, 100, 100
    }
}
return


findWhite() {
    PixelSearch, fx, fy, 350, 147, 850, 170, 0xFFFFFF, 5, Fast
    if ErrorLevel
        return array(false, 0, 0)
    else
        return array(true, fx, fy)
}

checkGreen(sx, sy) {
    PixelGetColor, oc, sx, sy+10, Alt
    if(oc == 0x00FF00) {
        return true
    } else {
        return false
    }
}

5

Re: AHK: поиск одного цвета на другом и нажатие ЛКМ

Уже интереснее код, но не рабочий. Не ясно зачем искать сначала белый пиксель затем зелёный. Проще искать картинку - меньше проблем будет.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

6

Re: AHK: поиск одного цвета на другом и нажатие ЛКМ

__Михаил__, если Вам не сложно - подскажите пожалуйста, коим образом это возможно сделать. Был бы максимально признателен.