1 (изменено: efomine.74, 2024-04-30 00:50:57)

Тема: AHK: Зажатие клавиши при условии

Здравствуйте.

Этот код заставляет нажимать левую кнопку мыши при нескольких условиях, а именно: 1. Зажата клавиша "X", 2. По центру экрана был изменён цвет пикселей.

Задача такова сделать чтобы скрипт полностью функционировал также при зажатой клавише Ctrl, и не отжимал её когда она зажата соответственно. Заранее спасибо.

Threshold = 20
*~$x::
MouseGetPos, MouseX, MouseY
PixelGetColor, Color1, (MouseX+2), (MouseY+2)
StringSplit, Colorz, Color1
Color1B = 0x%Colorz3%%Colorz4%
Color1G = 0x%Colorz5%%Colorz6%
Color1R = 0x%Colorz7%%Colorz8%
Color1B += 0
Color1G += 0
Color1R += 0

while (GetKeyState("x", "P"))
    {
        BlockInput, MouseMove
        sleep 1
        MouseGetPos, MouseX, MouseY
        PixelGetColor, Color2, (MouseX+2), (MouseY+2)
        StringSplit, Colorz, Color2
        Color2B = 0x%Colorz3%%Colorz4%
        Color2G = 0x%Colorz5%%Colorz6%
        Color2R = 0x%Colorz7%%Colorz8%
        Color2B += 0
        Color2G += 0
        Color2R += 0
        if (Color1R > (Color2R + Threshold)) or (Color1R < (Color2R - Threshold)) or (Color1G > (Color2G + Threshold)) or (Color1G < (Color2G - Threshold)) or (Color1B > (Color2B + Threshold)) or (Color1B < (Color2B - Threshold))
            {
                send {LButton}
            }
    }
BlockInput, MouseMoveOff
Return

End::
exitapp
return

2

Re: AHK: Зажатие клавиши при условии

efomine.74, этот скрипт нужен для игры?

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

3 (изменено: efomine.74, 2024-04-30 01:03:18)

Re: AHK: Зажатие клавиши при условии

teadrinker
Да.

4

Re: AHK: Зажатие клавиши при условии

efomine.74 пишет:

Да

efomine.74, ознакомьтесь, пожалуйста, с Правилами, отредактируйте свой пост. Обратите внимание на точки в конце предложений.
Для вопросов по играм у нас есть специальная ветка, если вы не заметили.

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

5

Re: AHK: Зажатие клавиши при условии

Ой, забыл добавить "заранее спасибо"!

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

6 (изменено: efomine.74, 2024-04-30 00:53:22)

Re: AHK: Зажатие клавиши при условии

teadrinker
Отредактировал, подметьте пожалуйста, если что-то не так, спасибо.

7

Re: AHK: Зажатие клавиши при условии

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

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

8 (изменено: efomine.74, 2024-04-30 01:14:17)

Re: AHK: Зажатие клавиши при условии

teadrinker
Проверил на сайте для теста клавиатуры, отображающий все нажатые клавиши в данный момент. Ctrl отжимается сразу же в момент наведения курсора на другой цвет (Удалил строчки в коде блокирующие перемещение курсора), видимо дело все же не в игре.

Может команда Send мешает зажатию клавиши?

Ctrl отжимается только тогда когда меняется цвет, а не зажимается клавиша "x", то есть при воспроизведении этой части кода:

if (Color1R > (Color2R + Threshold)) or (Color1R < (Color2R - Threshold)) or (Color1G > (Color2G + Threshold)) or (Color1G < (Color2G - Threshold)) or (Color1B > (Color2B + Threshold)) or (Color1B < (Color2B - Threshold))
            {
                send {LButton}
            }

Не отжимая клавиши "x" и "Ctrl", если вернуть курсор на изначальный цвет, тем самым остановив цикл нажатия левой кнопки мыши, Ctrl снова начинает нажиматся.

9

Re: AHK: Зажатие клавиши при условии

efomine.74 пишет:

Может команда Send мешает зажатию клавиши?

Не должна, проверьте без неё.

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

10

Re: AHK: Зажатие клавиши при условии

teadrinker
Попробовал, ничего не происходит, как и должно было, но при этом Ctrl теперь не отжимается.

if (Color1R > (Color2R + Threshold)) or (Color1R < (Color2R - Threshold)) or (Color1G > (Color2G + Threshold)) or (Color1G < (Color2G - Threshold)) or (Color1B > (Color2B + Threshold)) or (Color1B < (Color2B - Threshold))
            {
                
            }

11

Re: AHK: Зажатие клавиши при условии

Это достаточно странно, я проверил остальные клавиши, например "Shift" и всё работает отлично, и ничего не отжимается при срабатывании, но вот именно "Ctrl" ему чем-то не угодил.

12

Re: AHK: Зажатие клавиши при условии

Ну, тогда попробуйте добавить {Ctrl Down} после {LButton}.

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

13

Re: AHK: Зажатие клавиши при условии

Или как-то так:

if (Color1R > (Color2R + Threshold)) or (Color1R < (Color2R - Threshold)) or (Color1G > (Color2G + Threshold)) or (Color1G < (Color2G - Threshold)) or (Color1B > (Color2B + Threshold)) or (Color1B < (Color2B - Threshold))
    {
        send {LButton}
        if GetKeyState("Ctrl", "P") {
            send {Ctrl Down}
        }
    }
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14

Re: AHK: Зажатие клавиши при условии

teadrinker
С этим кодом происходит всё тоже самое что и в изначальной версии. В этой он просто в момент срабатывания всё также отжимается на а затем снова нажимается.

15

Re: AHK: Зажатие клавиши при условии

Попробовал поменять в игре ключевую клавишу на "c", и всё работает прекрасно, но всё же это совсем не удобно.

16 (изменено: efomine.74, 2024-04-30 01:45:12)

Re: AHK: Зажатие клавиши при условии

Было бы удобно если бы вместо "x" была боковая кнопка мыши, верхняя или нижняя, я попробовал так сделать но ничего не происходит.

while (GetKeyState("XButton2", "P"))
while (GetKeyState("XButton1", "P"))

17

Re: AHK: Зажатие клавиши при условии

Нет идей, ждите гуру по скриптам для игр!

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