1 (изменено: Cucumber, 2022-07-20 17:14:30)

Тема: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

Здравствуйте, нужна помощь.
Когда пиксель ( 0x0af70f ) появляется на определенный координатах, то нужно ЗАЖАТЬ клавишу, после того, как пиксель изменяется в отмеченной зоне, клавиша отжимается, а скрипт продолжает выполнять следующее условие.

У меня в коде останавливается на зажатие LMB:

Loop
{
    PixelGetColor, right, 1710, 1037, RGB
    PixelGetColor, left, 1711, 1037, RGB
    PixelGetColor, mid, 1709, 1037, RGB
    if ( right = "0x4fb8ff" or left = "0x4fb8ff" or mid = "0x4fb8ff" ) 
    {
        if Not @error Then
        Break
    }
}
Send, {LButton down}
Loop 
{
    PixelGetColor, right, 1710, 1037, RGB
    PixelGetColor, left, 1711, 1037, RGB
    PixelGetColor, mid, 1709, 1037, RGB
    if ( right = "0x58de80" or left = "0x58de80" or mid = "0x58de80" ) 
    {
        if Not @error Then
        Break
    }
}
Send, {LButton up}

Можно ли как то соединить два Loop'a, чтобы соответствовало выше написанному?

2

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

А что за интересная конструкция if Not @error Then ? Что это означает?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: Cucumber, 2022-07-21 02:56:18)

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

teadrinker, Ам... *Если нет ошибок, то*.
В моем случае, если найден нужный пиксель (и вообще все правильно), то выполняется действие.

4

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

Думаете, AHK такое понимает?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: Cucumber, 2022-07-21 02:59:23)

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

teadrinker, Да, у меня это работает.

6

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

Поверьте, в таком виде это не работает.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: Cucumber, 2022-07-21 03:16:08)

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

teadrinker пишет:

это не работает.

Не работает в общем или не будет работать в выполнении поставленного выше условия?
Я хочу доработать код, чтобы не зависеть от cooldown'a в игре, а выполнять все по мере появления или исчезновении пикселей.

8

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

Ну, если что-то в переменную @error поместить, тогда будет работать, но в вашем коде этого не происходит. В любом случае слово Then лишнее, AHK его воспринимает, как пустую переменную.

Then := true
@error := false
if Not @error Then
   MsgBox, no error
else
   MsgBox, error
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

teadrinker, хорошо, Я понял, что вы мне написали про Then, спасибо, но я задавал другой вопрос.

10

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

Я, честно говоря, не очень понял вопрос.

Cucumber пишет:

Когда пиксель ( 0x0af70f ) появляется на определенный координатах, то нужно ЗАЖАТЬ клавишу, после того, как пиксель изменяется в отмеченной зоне, клавиша отжимается, а скрипт продолжает выполнять следующее условие.

Что за «следующее условие»? Под условием обычно понимается конструкция if-else. И что значит «продолжает выполнять»? Он его уже выполняет в данный момент? Я поэтому просто указал на явную ошибку, может в ней и была проблема.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11 (изменено: Cucumber, 2022-07-22 02:34:58)

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

teadrinker, Перефразирую.
Находим пиксель ( 0x4fb8ff ), далее зажимаем LMB. Ищем в других координатах пиксель с цветом ( 0x58de80 ), если находим, то отжимаем LMB.

Loop
{
    PixelGetColor, right, 1710, 1037, RGB
    PixelGetColor, left, 1711, 1037, RGB
    PixelGetColor, mid, 1709, 1037, RGB
    if ( right = "0x4fb8ff" or left = "0x4fb8ff" or mid = "0x4fb8ff" ) 
    {
        if Not @error
        Break
    }
}
Send, {LButton down}
Loop 
{
    PixelGetColor, right, 1810, 1037, RGB
    PixelGetColor, left, 1811, 1037, RGB
    PixelGetColor, mid, 1809, 1037, RGB
    if ( right = "0x58de80" or left = "0x58de80" or mid = "0x58de80" ) 
    {
        if Not @error
        Break
    }
}
Send, {LButton up}

У меня проблема в том, что после зажатия LMB, скрипт ничего не делает.

12

Re: AHK: Зажать или отпустить клавишу в зависимости от цвета пикселя

Cucumber пишет:

после зажатия LMB, скрипт ничего не делает.

А почему вы так решили? Можно добавить отладочные сообщения:

Loop
{
    PixelGetColor, right, 1710, 1037, RGB
    PixelGetColor, left, 1711, 1037, RGB
    PixelGetColor, mid, 1709, 1037, RGB
    if ( right = "0x4fb8ff" or left = "0x4fb8ff" or mid = "0x4fb8ff" ) 
    {
        if Not @error
        Break
    }
}
MsgBox, скрипт вышел из первого цикла
Send, {LButton down}
Loop 
{
    ToolTip скрипт вошёл во второй цикл
    
    PixelGetColor, right, 1810, 1037, RGB
    PixelGetColor, left, 1811, 1037, RGB
    PixelGetColor, mid, 1809, 1037, RGB
    if ( right = "0x58de80" or left = "0x58de80" or mid = "0x58de80" ) 
    {
        if Not @error
        Break
    }
}
MsgBox, скрипт вышел из второго цикла
Send, {LButton up}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder