Создание скрипта AHK в Notepad ++ - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь сделать ahk-скрипт, чтобы попытаться упростить одноразовый скрипт. Практически я запускаю более 1000 команд в игре одну за другой. Сейчас у меня есть что-то вроде этого. У меня есть все команды в одном текстовом файле, но без кодировки ahk.

.waypointadd 1 100234 40 -469
.waypointadd 2 99549 34 5
.waypointadd 3 100615 37 -160
.waypointadd 4 100817 27 -457
.waypointadd 5 100503.5 10.5 -647.5
.waypointadd 6 100494.5 10.5 -625.5

Это продолжается некоторое время. Я новичок в использовании выражений и тому подобного, и я в значительной степени пытаюсь заставить его нажать Enter, набрать команду, затем нажать Enter, а затем go к следующей. Я явно не могу сделать это вручную. Я пробовал использовать некоторые базовые c выражения замены и прочее, но не совсем уверен, как это сделать.

В конце концов, я бы хотел, чтобы это выглядело так

send {enter}
send (command 1)
send {enter}
send {enter}
send (command 2)
send {enter}

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Вы можете сохранить все команды в своем буфере обмена (CTRL + C их), а затем l oop через все из них:

Loop, Parse, Commands, `n, `r ;split by linefeed, ignore carriage return
{
    SendInput, % A_LoopField "{Enter 2}"
    Sleep, 1000 ;however long you need
}

Множество способов получить команды в ваш скрипт, я просто загрузил их из вашего буфера обмена, должно быть довольно легко просто скопировать блок команд, который вы хотите, а затем запустить скрипт.
Затем есть синтаксический анализ l oop .
И затем SendInput используется для отправки текущей команды, за которой следует два нажатия Enter.
В качестве альтернативы, если ваша игра поддерживает вставку из буфера обмена, это будет приятно просто загрузить в буфер обмена все, что вы хотите отправить, а затем отправить CTRL + V.

Если код с SendInput выполняется слишком быстро, вы можете попробовать переключиться на нормальный Send и, возможно, даже использовать SetKeyDelay, чтобы добавить еще большую задержку между нажатиями клавиш.

0 голосов
/ 07 мая 2020

вы можете привязать его к клавише, например ....

1::
loop, 1 {
  send {enter}
  send (command 1)
  send {enter}
  send {enter}
  send (command 2)
  send {enter}
}

, или сделать функцию, когда вы нажимаете клавишу. lmk, если это помогает или нет

doSomething() {
  send {enter}
  send (command 1)
  send {enter}
  send {enter}
  send (command 2)
  send {enter}
}

1::
doSomething()
...