1

Тема: AHK: Почему в этом коде кнопка не зажимается?

Что не так с этим местом?

; Кнопки, что будут нажиматься: (определение по названию файла - добавить остальные)
   If File_Name = 1.jpg
   {
    Send {Space down}
    Sleep 2000
    Send {Space up}
   }
   Else If File_Name = 2.jpg
   {
    Send {B down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {B up}  ; Отпустить.
   }
   Else If File_Name = 3.jpg
   {
    Send {K down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {K up}  ; Отпустить.
   }
   If else File_Name = 4.jpg
   {
    Send {Down down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Down up}  ; Отпустить.
   }
   If else File_Name = 5.jpg
   {
    Send {Right down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Right up}  ; Отпустить.
   }
   If else File_Name = 6.jpg
   {
    Send {Left down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Left up}  ; Отпустить.
   }
   If else File_Name = 7.jpg
   {
    Send {F down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {F up}  ; Отпустить.
   }
   If else File_Name = 8.jpg
   {
    Send {S down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {S up}  ; Отпустить.
   }
   If else File_Name = 9.jpg
   {
    Send {H down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {H up}  ; Отпустить.
   }
   If else File_Name = 10.jpg
   {
    Send {Z down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Z up}  ; Отпустить.
   }
   If else File_Name = 11.jpg
   {
    Send {Shift down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Shift up}  ; Отпустить.
   }
   If else File_Name = 12.jpg
   {
    Send {J down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {J up}  ; Отпустить.
   }
   If else File_Name = 13.jpg
   {
    Send {D down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {D up}  ; Отпустить.
   }
   If else File_Name = 14.jpg
   {
    Send {L down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {L up}  ; Отпустить.
   }
   If else File_Name = 15.jpg
   {
    Send {Up down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Up up}  ; Отпустить.
   }
   If else File_Name = 16.jpg
   {
    Send {V down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {V up}  ; Отпустить.
   }
   
  ToolTip
  Return
 }

Вот полный код.

; Путь, где хранятся картинки для поиска:
Dir = C:\Users\venat\Desktop\Новая папка (3)

; Список где названия картинок с расширением, в качестве делителя строки будет символ '-'
List = 1.jpg-2.jpg-3.jpg-4.jpg-5.jpg-6.jpg-7.jpg-8.jpg-9.jpg-10.jpg-11.jpg-12.jpg-13.jpg-14.jpg-15.jpg-16.jpg

; Время ожидания перед очередным поиском картинок: (указываем в мс)
Time :=	2500		; 0.5 секунд
;Time := 1000*	15	; 15 секунд (можно так)
Return



; F4 - Кнопка запуска таймера, который будет запускать метку 'Search' каждое 'Time' время:
F4::
SetTimer, Search, %Time%
Return

; F5 - Кнопка выключения таймера
F5::
SetTimer, Search, Off
ToolTip, Поиск картинок выключен.
Sleep, 3000
ToolTip
Return


Search:
Loop, parse, List, -
{
 File_Name := A_LoopField
 ImageSearch, Coordinate_X, Coordinate_Y, 0, 0, A_ScreenWidth, A_ScreenHeight, *100 %Dir%\%File_Name%
 If ErrorLevel = 0	; Если картинка найдена:
 {
  MouseMove, %Coordinate_X%, %Coordinate_Y%, 0		; Переместить мышь на картинку
  ToolTip, Найдена: %File_Name%`nПозиция: %Coordinate_X%`, %Coordinate_Y% ,0,0
  Sleep, 1000

; Кнопки, что будут нажиматься: (определение по названию файла - добавить остальные)
   If File_Name = 1.jpg
   {
    Send {Space down}
    Sleep 2000
    Send {Space up}
   }
   Else If File_Name = 2.jpg
   {
    Send {B down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {B up}  ; Отпустить.
   }
   Else If File_Name = 3.jpg
   {
    Send {K down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {K up}  ; Отпустить.
   }
   If else File_Name = 4.jpg
   {
    Send {Down down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Down up}  ; Отпустить.
   }
   If else File_Name = 5.jpg
   {
    Send {Right down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Right up}  ; Отпустить.
   }
   If else File_Name = 6.jpg
   {
    Send {Left down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Left up}  ; Отпустить.
   }
   If else File_Name = 7.jpg
   {
    Send {F down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {F up}  ; Отпустить.
   }
   If else File_Name = 8.jpg
   {
    Send {S down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {S up}  ; Отпустить.
   }
   If else File_Name = 9.jpg
   {
    Send {H down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {H up}  ; Отпустить.
   }
   If else File_Name = 10.jpg
   {
    Send {Z down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Z up}  ; Отпустить.
   }
   If else File_Name = 11.jpg
   {
    Send {Shift down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Shift up}  ; Отпустить.
   }
   If else File_Name = 12.jpg
   {
    Send {J down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {J up}  ; Отпустить.
   }
   If else File_Name = 13.jpg
   {
    Send {D down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {D up}  ; Отпустить.
   }
   If else File_Name = 14.jpg
   {
    Send {L down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {L up}  ; Отпустить.
   }
   If else File_Name = 15.jpg
   {
    Send {Up down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {Up up}  ; Отпустить.
   }
   If else File_Name = 16.jpg
   {
    Send {V down}  ; Нажать клавишу "Стрелка вверх".
    Sleep 2000  ; Держать её нажатой 1 секунду.
    Send {V up}  ; Отпустить.
   }
   
  ToolTip
  Return
 }
 If ErrorLevel = 2
 {
  MsgBox, 8256, ERROR: Ошибка поиска, Не удалось провести поиск. Отсутствует файл %File_name%
  Return
 }
 Else if ErrorLevel = 1
 {
  ToolTip, Картинка %File_name%`nне найдена ,0,0
  Sleep, 1000
  ToolTip
 }

}
Return

2 (изменено: 321c0f4015, 2022-04-04 17:02:02)

Re: AHK: Почему в этом коде кнопка не зажимается?

AHK находит изображение, но вместо зажатия просто нажимает 1 раз.

3

Re: AHK: Почему в этом коде кнопка не зажимается?

321c0f4015 пишет:

Что не так с этим местом?

If else — такого оператора нет.

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

4

Re: AHK: Почему в этом коде кнопка не зажимается?

teadrinker
Я этот код скопировал у другого человека, потому что я в этом ничего не понимаю. Может вы мне подскажете как надо переделать, чтобы вместо единоразового нажатия было зажатие на определенное время?

5

Re: AHK: Почему в этом коде кнопка не зажимается?

321c0f4015 пишет:

я в этом ничего не понимаю

А кто мешает разобраться? Форум для тех, кто интересуется программированием (либо есть Коммерческий раздел). Справка к вашим услугам, тут ничего сложного. Возникнут конкретные вопросы — задавайте.

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

6 (изменено: 321c0f4015, 2022-04-04 18:35:32)

Re: AHK: Почему в этом коде кнопка не зажимается?

teadrinker
Конкретный вопрос был задан в конце предыдущего предложения.

7

Re: AHK: Почему в этом коде кнопка не зажимается?

Я имею в виду конкретные вопросы по работе кода, если что-то непонятно из справки. Если вы сами не приложите никаких усилий, то могут помочь только те, кому данная тема интересна, то-есть такие же новички.

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

8

Re: AHK: Почему в этом коде кнопка не зажимается?

teadrinker
Уже весь день прикладываю усилия и всё равно не могу заставить этот скрипт зажать кнопку, а не просто нажать.

9

Re: AHK: Почему в этом коде кнопка не зажимается?

Чтобы зажать кнопку, достаточно отправить

Send {Space down}

где Space — это название клавиши (если нужно другое, то замените). Если это действие не вызывает ожидаемой реакции, проблема может быть в восприятии игрой посыла клавиш через AHK. Можно попробовать другие режимы Send, смотрите в справке.

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