Содержание

    HotkeyNet и RIFT: взгляд мультибоксера

    RIFT - многопользовательская ролевая онлайн-игра, предоставляемая по принципу free-to-play. Последнее для нас особенно приятно, поскольку мы никак не зависим от толщины кошелька. Поэтому, когда я в первый же день встретил там мультибоксера, то нисколько не удивился. Спустя пару дней одиночных странствий я решил, что настало время для самого интересного.

    HotkeyNet и RIFT: взгляд мультибоксера

    Использовать для управления ISBoxer я не стал, потому что это слишком просто. Сегодня я буду приручать нового зверя при помощи старого доброго HotkeyNet.

    Конечно же первым делом был опробован готовый скрипт для World of Warcraft, но ощущения были такие, будто я закусывал молоко солёным огурцом. По отдельности они совсем не плохие, но в сочетании представляют собой гремучую смесь. Так же и в игре - HotkeyNet и RIFT не сразу нашли общий язык.

    Установщик игры доступен на этой странице. Готовый скрипт для RIFT вы найдёте в конце статьи.

     

    Запуск клиентов

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

    Открыть несколько окон оказалось сложнее, чем я думал. В текущей версии RIFT это делается через программу-лаунчер, называемую "Glyph" и одновременно представляющую собой веб-установщик для некоторых других игр. Порядок действий обычно такой:

    1. Ввод адреса электронной почты и пароля от зарегистрированной учётной записи.

    2. Выбор справа вверху группы серверов (между американскими и европейскими).
    3. Открытие клиента кнопкой "Запустить".
    4. Нажатие на кнопку "Выход", затем процедура повторяется с остальными аккаунтами.

    После третьего перезапуска окон меня такая схема начала жутко раздражать и я решил упростить процесс скриптом. Вот сокращённая версия того, что из этого получилось:

    //----------------------------------------------------------------------
    // Шаблон для запуска и переименования окон
    //----------------------------------------------------------------------
    <Template LaunchAndRename>
    <TurnHotkeysOff> // выключение отправки нажатий в окна

    <SendFocusWin>
    <KeyUp Ctrl Alt>
    <Key Shift Tab> // перевод курсора на первое поле
    <Text %2%> // ввод почтового адреса
    <Key Tab>

    <WaitForWin RIFT 120000> // ожидание открытия нового окна в течение 2 мин
    <RenameTargetWin Rift%1%> // переименование окна
    <SetAffinity %3% %4%> // распределение нагрузки на процессор

    <ResizeAndPosition 1 2 3 4 5> // перемещение окон на исходные позиции
    <EndTemplate>


    //----------------------------------------------------------------------
    // Ввод почтового адреса в открытом окне авторизации
    //----------------------------------------------------------------------
    <Hotkey Ctrl Alt L>
    <If WinDoesNotExist Rift1>
    <ApplyTemplate LaunchAndRename 1 Email1 0 1>

    <Else If WinDoesNotExist Rift2>
    <ApplyTemplate LaunchAndRename 2 Email2 0 1>

    <Else If WinDoesNotExist Rift3>
    <ApplyTemplate LaunchAndRename 3 Email3 2 3>

    <Else If WinDoesNotExist Rift4>
    <ApplyTemplate LaunchAndRename 4 Email4 2 3>

    <Else If WinDoesNotExist Rift5>
    <ApplyTemplate LaunchAndRename 5 Email5 2 3>

    <TurnHotkeysOn> // включение отправки нажатий в окна


    По сравнению с другими скриптами комбинация Ctrl+Alt+L не пытается ничего запустить. Вот как это работает:

    1. Открываем HotkeyNet.
    2. Запускаем Glyph. Если окно авторизации не появилось само, в лаунчере нажимаем вверху "Выход" и сразу "Вход".
    3. Скорее всего, курсор окажется в поле ввода пароля. В таком случае сразу нажимаем Ctrl+Alt+L. Скрипт моментально проверит, какие окна уже запущены, и введёт в первое поле соответствующий почтовый адрес. Нам остаётся только ввести пароль и нажать "Войти".
    4. Нажимаем кнопку "Запустить". Как только HotkeyNet обнаружит новое окно, оно будет автоматически переименовано и перемещено на своё место. Также операционная система получит указания производить вычисления в этом окне определёнными логическими ядрами процессора.
    5. Повторяем последовательность с остальными аккаунтами, начиная со второго шага.

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

    Если вы не боитесь, что содержимое скрипта попадёт в чьи-то шаловливые ручонки или его утащит троян, можете добавить пароль перед <Key Shift Tab>.

    Для корректной работы необходимо в меню HotkeyNet "Options > Send Mode Settings" установить такие настройки:

    Желательно также зайти в меню "Options > Settings" и в секции "Window name match" переключиться на опцию "Exact match". Это избавит от ситуаций, когда из-за встречающегося слова "RIFT" в заголовках других окон скрипт работает некорректно.

    Теперь пять окон запускаются с минимальным количеством манипуляций менее чем за минуту.

     

    Размещение окон

    Не успел я насладиться этой маленькой победой, как возникли новые проблемы. У окон не убиралась рамка, а панель задач постоянно всплывала из-за непонятных миганий значков.

    С миганиями пришлось смириться, дополнительно отказавшись от автоматического скрытия панели задач. Рамки удалось частично замаскировать, переместив окна так, чтобы заголовки и границы находились за пределами экрана или перекрывались остальными окнами. На представленном выше скриншоте окна размещены при помощи такого кода, где первые два числа справа от SetWinRect отвечают за координаты, а два последних за размеры:

    <Command ResizeAndPosition>
    <SendWinM Rift%1%>
    <SetWinRect -6 -30 1932 865>
    <SendWinM Rift%2%>
    <SetWinRect -8 805 490 243>
    <SendWinM Rift%3%>
    <SetWinRect 474 805 490 243>
    <SendWinM Rift%4%>
    <SetWinRect 956 805 490 243>
    <SendWinM Rift%5%>
    <SetWinRect 1438 805 490 243>


    Ещё одним неприятным сюрпризом стала реакция RIFT на переключение между окнами. Здесь оно происходит заметно медленнее, чем в WoW. Поэтому пришлось привыкать использовать эту возможность только в крайних случаях.

     

    Горячие клавиши и макросы

    Похоже, что самое страшное позади и можно приступить к игре... Погодите. Почему в настройках управления я не вижу действие "Follow target", как в WoW? Ох уж эти разработчики фри-ту-плей, не дают спокойно жить мультибоксерам! Придётся добавить макрос.

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

    Из-за того, что мне стало не хватать места для способностей, я размещу новые макросы на дополнительной панели сбоку:

    1. Включается отображение дополнительных панелей в меню "Esc > Настройки > Интерфейс > Панели":

      Настройки отображения панелей в интерфейсе RIFTНастройки отображения панелей в интерфейсе RIFT

    2. Далее заходим в меню "Esc > Редактор макросов" и добавляем две простых записи: "follow" и "interact". Сохраняем их и перемещаем на ячейки боковой панели.

      Редактор макросов RIFTРедактор макросов RIFT

    3. Открываем меню "Esc > Управление" и назначаем клавиши для новых макросов. Достаточно навести курсор на ячейку и нажать подходящую комбинацию. Для следования в игре я выберу G, а для взаимодействия T:


    Здесь я снова столкнулся с неприятностями - по каким-то причинам игра наотрез отказалась воспринимать нажатия с модификаторами, полученные через HotkeyNet. Поэтому лучше использовать клавиши без приставок Alt, Ctrl и т. д. Если вы хотите сохранить привычную комбинацию, в этом может помочь скрипт, например, таким способом:

    <Hotkey Ctrl R>
    <SendLabel r1, r2, r3, r4, r5>
    <Key F>


    После смены специализации или создания новых персонажей, разумеется, мне не захочется снова добавлять кучу макросов ко всем заклинаниям и способностям. Для простого управления группой от лица любого героя я воспользуюсь скриптом, который позволит определёнными в игре клавишами выбирать главного, атаковать общую цель, следовать и т. д.:

    Действие Горячая клавиша
    1-й член группы F2
    2-й член группы F3
    3-й член группы F4
    4-й член группы F5
    Цель текущей цели F
    Follow macro G
    Interact macro T

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

    Чтобы таким скриптом можно было переключать главного между остальными героями, принимать в группу их нужно по очереди, начиная со второго. Для удобства я добавлю в первое окно такой макрос:

    invite ник_второго_персонажа
    invite ник_третьего_персонажа
    invite ник_четвёртого_персонажа
    invite ник_пятого_персонажа

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

     

    Отправка нажатий и кликов

    Бег с препятствиями на этом не закончился. Нажатия в фоновых окнах срабатывали нестабильно, и даже после прочтения безобидного заклинания персонажи могли убежать в неизвестном направлении. Изменив в скрипте способ отправки нажатий на SendWinSF, удалось взять ситуацию под контроль. Расплатой за надёжность стала небольшая задержка в фоновых окнах. Но, если специально не присматриваться, то она вообще не заметна.

    Дальше ещё интереснее. Отправка кликов мыши клавишами Insert или Delete не давала никакого эффекта на игровых объектах: NPC, трупах, контейнерах и т. п. Не сильно повлияло на ситуацию и увеличение задержки для команды ClickMouse. Однако, при взаимодействии с элементами интерфейса всё было в порядке, например, в диалогах с NPC. Получается, что клики всегда достигают окон, но игра почему-то игнорирует их, если они связаны с воздействием на окружающие объекты.

    На помощь пришла функция "взаимодействие с целью". Ответственный за неё макрос "interact" я назначал на кнопку T. Чтобы перед взаимодействием у всех выбиралась цель главного персонажа, я добавлю её к остальным клавишам из списка "AssistList":

    <KeyList AssistList 0-9, Minus, Plus, T>


    С автоматическим сбором добычи станет ещё проще. Включается эта опция в меню "Esc > Настройки > Интерфейс > Разное > Автоматический сбор трофеев".

     

    Выводы

    Скрипт в итоге получился такой. В принципе, цель достигнута - настроив игру и причесав скрипт, мне удалось приспособиться и забыть о неудобствах.

    Нельзя сказать, что игра идеально приспособлена для мультибоксинга, но всё необходимое в ней есть. Были и другие моменты, которые оставили неприятный осадок. Например, пинг во время игры выше обычного или корявый перевод клиента на русский язык.

    Тем не менее для замены World of Warcraft игра вполне подойдёт. Особенно это касается тех, кто не ждёт чуда от нового дополнения или только успевает собирать золото на продление подписки.

     


    Понравился материал? Расскажи друзьям!

    Оставить комментарий
    Пожалуйста, авторизуйтесь, чтобы оставлять комментарии.