1

Тема: AHK: Циклер, повторение действия

Здравствуйте. Недавно начал изучать язык AHK, и появились вопросы. Читая темы, собрал скрипт:


Space::
      Loop
         {
            Send, {Space}
            Sleep, 50
            If GetKeyState("Space", "P") = 0
               Break
         }

Но при нажатие самой клавиши Space, она становится не рабочей.
В чём может быть проблема? И вообще, правильно ли сделан скрипт? Будет ли он работать не только в текстовых редакторах?

2

Re: AHK: Циклер, повторение действия

Попробуйте  так.   Если   есть   незнакомые  команды,   прочитайте  о   них   в   документации.


$Space::
      Loop
         {
            Send, {Space}
            Sleep, 50
            If GetKeyState("Space", "P") = 0
               Break
         }
Return

3

Re: AHK: Циклер, повторение действия

В текстовом редакторе скрипт работает, но я не понимаю, почему он не хочет работать в игре. В ней пробел не работает (именно как клавиша действия), но игровой чат идёт. Попробовал сделать так:

#IfWinActive MTA: San Andreas
   {
      $Space::
         Loop
            {
               Send, {Space}
               Sleep, 50
               If GetKeyState("Space", "P") = 0
                  Break
            }
    } 
    else
    {  

    }
Return

Толку нуль. :\
Может быть, я компилирую не так? (...\AutoHotkey\Compiler\Ahk2Exe.exe)
Помогите пожалуйста.

4

Re: AHK: Циклер, повторение действия

Возможно, опытные игроки подскажут, что делать.

5

Re: AHK: Циклер, повторение действия

Можно попробовать в опции игры назничить на пример на клавишу Z действие/функцию клавиши Space.

#IfWinActive, MTA: San Andreas
Space::
   Loop
   {
      Send, {vk5a} ; z
      Sleep, 50
      If !GetKeyState("Space", "P")
         Break
   }
   Return

6

Re: AHK: Циклер, повторение действия

В общем, клавиша (в моём случае Space) указанная на выполнение цикла, становится не рабочей. Менял на левый/правый шифты - всё тоже самое.. Да и вообще, от #IfWinActive я не вижу особого смысла.. Может быть есть что-то подобное ей, только на процесс? к primeru.exe?

7 (изменено: Grey, 2011-10-24 06:10:46)

Re: AHK: Циклер, повторение действия

jakko пишет:

Менял на левый/правый шифты - всё тоже самое.

Назначте действие/функцию не на шифт, альт или контрл а на любую другую клавишу.

jakko пишет:

...от #IfWinActive я не вижу особого смысла.

Смысл появится, если в эту директиву вписать правильные данные не:

#IfWinActive MTA: San Andreas

, а:

#IfWinActive, GTA:SA:MP

, или:

#IfWinActive, ahk_class Grand theft auto San Andreas

это взято из сети, так как самой игры у меня нет.

jakko пишет:

Может быть есть что-то подобное ей, только на процесс? к primeru.exe?

На процесс, есть команда Process. К primeru.exe'ом будет блокнот:

Space::
   Process, Exist, notepad.exe
   IfWinActive, % "ahk_pid" ErrorLevel
   {
      Loop
      {
         Counter:=" (количество нажатий: " . A_Index . ")"
         Send, {vk5a} ; z
         Sleep, 50
         If !GetKeyState("Space", "P")
            Break
      }
      Counter:=
   }
   Else
      Send, {Space Down}
   Return

Space Up::Send, {Space Up}

vk5A::TrayTip,, % "нажата клавиша z"Counter