3

Я недавно купил Rayman 2 от GOG.com. Игра старая и поэтому не дает возможности переназначить ключи, и я хотел бы сделать их немного ближе к тому, к чему мы привыкли сегодня.

Вот скриншот из руководства с привязками клавиш.

По сути, я хочу нормальное движение с WSAD, прыгать с пробелом и стрелять с помощью левой кнопки мыши. Кроме того, я хотел бы, чтобы ключи были переназначены, только когда окно Rayman активно. Я создал скрипт ниже, но он не работает правильно.

Это первый раз, когда я работал с AHK, поэтому я не уверен, что делать. Как правильно настроить скрипт?

Вот что происходит с этим активным скриптом:

  • Скрипт активен независимо от того, открыт ли Рейман или нет, не говоря уже о том, активно ли окно. (Имя окна может быть либо Rayman II либо Rayman2 .)
  • W: движется вперед и поворачивает камеру вправо
  • S: работает как задумано
  • A: движется влево и прыгает
  • D: работает как задумано
  • LButton: работает как задумано
  • пространство: стреляет и прыгает

Сам скрипт:

IfWinActive, Rayman2
{
    w::up
    s::down
    a::left
    d::right
    space::a
    LButton::space
}

2 ответа2

4
  1. Во-первых, вы используете неправильную команду. Используйте #IfWinActive . Это для всего сценария. Выбранная вами команда проверяет, является ли окно активным в скрипте.
  2. Затем проверьте с помощью WindowSpy, что такое ahk_class окна (что полезно, если изменяется заголовок окна). WindowSpy включен в установку AutoHotkey.
  3. Наконец, попробуйте разные SendModes . Есть несколько, которые различаются в деталях. Более подробную информацию о различных командах отправки можно найти здесь .

Ваш код будет выглядеть примерно так:

#IfWinActive, ahk_class xyz ; put your ahk_class instead of xyz
SendMode Play ; try all of the following: Input|Play|Event|InputThenPlay

    w::up
    s::down
    a::left
    d::right
    space::a
    LButton::space

Квалификация. В зависимости от используемой версии Windows имитация нажатия клавиш может работать или не работать. То, что работает до Windows 7, может больше не работать в Windows 8. Это случилось со мной тоже, и я еще не нашел альтернативу в AutoHotkey.

Возможно, вам придется попробовать другое программное обеспечение для макросов (AutoIt, PhraseExpress, Macro Express).

1

Похоже, у вас есть ключи, сопоставленные друг с другом, что может вызвать круговой вызов. Попробуйте поставить $ перед каждым из ваших ключей. Это предотвратит эту проблему.

Пример:

$w::up

Источник

Что касается вашей проблемы IfWinActive , я бы предложил вместо этого использовать ahk_exe . Просто найдите имя процесса в диспетчере задач и поставьте следующую строку перед всеми вашими горячими клавишами.

#If WinActive("ahk_exe rayman.exe")  ; Rename exe to whatever it really is

Источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .