5 аккаунтов на одном компьютере (нужен 1 макрос)

Ход создания этого скрипта и другие подробности смотрите в материале Эксперимент с HotkeyNet: избавляемся от макросов. Вот краткая инструкция по применению:

  1. Добавьте каждому персонажу такой макрос:
    /target [nomod, target=Nickname_1]
    /target [mod:ctrl, nomod:alt, target=Nickname_2]
    /target [nomod:ctrl, mod:alt, target=Nickname_3]
    /target [mod:shift, target=Nickname_4]
    /target [mod:ctrl, mod:alt, target=Nickname_5]
  2. Настройте клавиши в игре согласно таблице:
    Действие Кнопка 1
    Макрос для выбора цели F11
    Assist Target (Помочь цели) F
    Follow Target (Следовать за целью) Alt+F
    SetView 4 (Восстановить ракурс 4) End
  3. Сохраните текст, который вы видите ниже, в файл и загрузите в HotkeyNet.
  4. Убедитесь, что путь к игре в секции запуска указан верно.
  5. Чтобы не вводить имена учётных записей при каждом входе, укажите их в скрипте (Login1-5 в секции запуска). Чтобы они вводились корректно, в системе должен быть установлен английский язык ввода по умолчанию.
  6. Макет расположения окон, применяемый здесь, рассчитан на один монитор с разрешением 1920х1080. Если у вас установлено другое разрешение, воспользуйтесь конструктором и замените цифры на подходящие.
  7. В вашей системе установлен не 4-ядерный процессор? Измените значения в команде SetAffinity для лучшего распределения нагрузки.
  8. Экранные кнопки, которые появляются в левом нижнем углу, выполняют следующие функции:
    • Hotkeys - включение/выключение горячих клавиш (кнопка Pause),
    • Typing - включение режима отправки всех нажатий в окна для набора текста (кнопка ScrollLock),
    • Start - запуск окон, которые ещё не запущены (комбинация Ctrl+Alt+L),
    • Exit - закрытие окон (комбинация Alt+F4).
  9. Как добавить ещё клавиш для атаки с автоматическим содействием (или, например, для взаимодействия с целью)? Найдите в скрипте список "KeyList AssistList" и допишите здесь клавиши через запятую.
  10. Для передачи кликов мыши используйте Insert (ЛКМ) и Delete (ПКМ). Дополнительные кнопки мыши отправляют в окна обычные нажатия: 0 - средняя кнопка, - и + - боковые.
  11. Используйте Shift+(1-5) для переключения между окнами или экранные кнопки на верхней панели. Переключайтесь между группами, нажимая Alt+Tab, и используйте обычные кнопки для переключения окон внутри активной группы.
  12. Используйте Alt+F4 для закрытия игровых окон вместо обычного выхода из игры. Это вернёт в исходное состояние некоторые другие функции, например, скрытую панель задач или активное отслеживание окон.
//======================================================================
// Экспериментальный скрипт для управления пятью окнами World of Warcraft
// с помощью программы HotkeyNet на одном компьютере без использования
// макросов "focus", "follow" и "assist".
//
// Автор скрипта: Pashted
// Источник: www.slashfocus.ru
//======================================================================


//----------------------------------------------------------------------
// Команда, автоматически запускаемая при загрузке скрипта.
//
// Перейдите в настройки HotkeyNet и убедитесь, что название команды в разделе
// "Execute command automatically" совпадает с указанным здесь.
//----------------------------------------------------------------------
<Command AutoExec>
// создание панелей на экране
    <CreatePanel SwitchPanel 810 0 300 24>
<CreatePanel ControlPanel 0 713 80 128>

<SetPanelStyle SwitchPanel Frameless>
<SetPanelStyle ControlPanel Frameless>

<TargetWin SwitchPanel>
<SetWinOpacity 92>
<TargetWin ControlPanel>
<SetWinOpacity 92>

// создание кнопок
  <CreateColoredButton Button1 0 0 60 24 0x0B0B0B 0xED1C24 1>
<CreateColoredButton Button2 0 0 60 24 0x0B0B0B 0xED1C24 2>
<CreateColoredButton Button3 0 0 60 24 0x0B0B0B 0xED1C24 3>
<CreateColoredButton Button4 0 0 60 24 0x0B0B0B 0xED1C24 4>
<CreateColoredButton Button5 0 0 60 24 0x0B0B0B 0xED1C24 5>
<CreateColoredButton ButtonH 0 0 80 32 0x33AA33 0xFFFFFF Hotkeys> // состояние горячих клавиш
<CreateColoredButton ButtonS 0 0 80 32 0x101010 0xFFFFFF Typing> // состояние отправки всех нажатий в окна
<CreateColoredButton ButtonL 0 0 80 32 0x0B0B0B 0x808080 Start> // запуск недостающих окон
<CreateColoredButton ButtonE 0 0 80 32 0x660B0B 0xEEEEEE Exit> // закрытие окон

// назначение команд кнопкам
<SetButtonHotkey Button1 Hotkey ScrollLockOff Shift 1>
<SetButtonHotkey Button2 Hotkey ScrollLockOff Shift 2>
<SetButtonHotkey Button3 Hotkey ScrollLockOff Shift 3>
<SetButtonHotkey Button4 Hotkey ScrollLockOff Shift 4>
<SetButtonHotkey Button5 Hotkey ScrollLockOff Shift 5>
<SetButtonHotkey ButtonH Hotkey Pause>
<SetButtonHotkey ButtonS Hotkey ScrollLockOff ScrollLock>
<SetButtonHotkey ButtonL Hotkey Ctrl Alt L>
<SetButtonHotkey ButtonE Hotkey Alt F4>

// перемещение кнопок на панели
  <AddButtonToPanel Button1 SwitchPanel 0 0>
<AddButtonToPanel Button2 SwitchPanel 60 0>
<AddButtonToPanel Button3 SwitchPanel 120 0>
<AddButtonToPanel Button4 SwitchPanel 180 0>
<AddButtonToPanel Button5 SwitchPanel 240 0>
<AddButtonToPanel ButtonH ControlPanel 0 0>
<AddButtonToPanel ButtonS ControlPanel 0 32>
<AddButtonToPanel ButtonL ControlPanel 0 64>
<AddButtonToPanel ButtonE ControlPanel 0 96>

// принудительный перенос панелей на передний план
<TargetWin SwitchPanel>
<AlwaysOnTop On>
<TargetWin ControlPanel>
<AlwaysOnTop On>


//----------------------------------------------------------------------
// Подпрограмма для изменения цвета кнопок на панели после переключения.
//----------------------------------------------------------------------
<Command SwitchColors>
<SetButtonColors Button%1% 0xAA1515 0xFFFFFF>
<SetButtonColors Button%2% 0x0B0B0B 0xED1C24>
<SetButtonColors Button%3% 0x0B0B0B 0xED1C24>
<SetButtonColors Button%4% 0x0B0B0B 0xED1C24>
<SetButtonColors Button%5% 0x0B0B0B 0xED1C24>


//----------------------------------------------------------------------
// Подпрограмма для изменения размеров и размещения окон на одном мониторе с разрешением 1920x1080.
//
// Дополнительные схемы расположения окон есть на странице
// www.slashfocus.ru/hotkeynet/window-layout-builder
//----------------------------------------------------------------------

<Command ResizeAndPosition>
<SendWinM WoW%1%>
<SetWinRect 240 0 1440 810>
<SendWinM WoW%2%>
<SetWinRect 0 810 480 270>
<SendWinM WoW%3%>
<SetWinRect 480 810 480 270>
<SendWinM WoW%4%>
<SetWinRect 960 810 480 270>
<SendWinM WoW%5%>
<SetWinRect 1440 810 480 270>


//----------------------------------------------------------------------
// Шаблон для запуска и переименования окон.
//
// В начале программа проверяет, существует ли окно, которое она собирается запустить.
// Благодаря этому повторное открытие окон добавит лишь те, которых не хватает.
//----------------------------------------------------------------------
<Template LaunchAndRename>
<If WinDoesNotExist WoW%1%>
<Run "C:\Games\World of Warcraft\WoW.exe"> // путь к исполняемому файлу игры

<WaitForWin "World of Warcraft" 10000>
<RenameTargetWin WoW%1%> // переименование окна
<RemoveWinFrame> // удаление рамки окна

<SetAffinity %3% %4%> // распределение нагрузки на процессор

<SendWin WoW%1%>
<Text %2%> // вставка имени аккаунта
<Key Tab>

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

// создание эффекта полосы загрузки
<SetButtonColors Button%1% 0x500000 0xFFFFFF>

// принудительный перенос панелей на передний план
<TargetWin SwitchPanel>
<AlwaysOnTop On>
<TargetWin ControlPanel>
<AlwaysOnTop On>
<EndIf>
<EndTemplate>


//----------------------------------------------------------------------
// Старт игровых клиентов.
//
// Для открытия недостающих окон просто запустите процесс еще раз. Закрывать все окна необязательно.
//
// В шаблон LaunchAndRename подставляются в виде двух последних цифр номера логических ядер процессора.
// Применяемая здесь схема рассчитана на четыре логических ядра.
// Подробности смотрите в описании команды SetAffinity:
// www.slashfocus.ru/hotkeynet/commands/item/setaffinity
//----------------------------------------------------------------------
<Hotkey Ctrl Alt L>
<TurnHotkeysOn> // включение отправки нажатий в окна
<SetButtonColors ButtonH 0x33AA33> // изменение цвета кнопки H на зелёный

<TargetWin HotkeyNet>
<MinimizeWin> // сворачивание главного окна HotkeyNet

<SetTaskbarAutoHide On> // скрытие панели задач

<ApplyTemplate LaunchAndRename 1 Login1 0 1>
<ApplyTemplate LaunchAndRename 2 Login2 0 1>
<ApplyTemplate LaunchAndRename 3 Login3 2 3>
<ApplyTemplate LaunchAndRename 4 Login4 2 3>
<ApplyTemplate LaunchAndRename 5 Login5 2 3>

<SwitchColors 1 2 3 4 5>

<SetActiveWindowTrackingDelay 35> // установка задержки перед активацией окна в мс
<SetActiveWindowTracking On> // включение активного отслеживания окон


//----------------------------------------------------------------------
// Закрытие игровых клиентов.
//----------------------------------------------------------------------
<Command Exit>
<SendWin %1%>
<CloseWin>


<Hotkey Alt F4>
<Exit WoW1>
<Exit WoW2>
<Exit WoW3>
<Exit WoW4>
<Exit WoW5>
<Exit "World of Warcraft">

<SetTaskbarAutoHide Off> // восстановление панели задач

<SetActiveWindowTracking Off> // выключение активного отслеживания окон

<TurnHotkeysOff> // выключение отправки нажатий
<SetButtonColors ButtonH 0x151515> // изменение цвета кнопки H на чёрный

<TargetWin HotkeyNet>
<RestoreWinSize> // восстановление главного окна HotkeyNet

<ResetToggles> // сброс состояния переключателей
<Cancel> // отмена текущих и запланированных действий


//----------------------------------------------------------------------
// Назначение меток окнам для отправки нажатий.
//----------------------------------------------------------------------
<Label w1 local SendWinM WoW1>
<Label w2 local SendWinM WoW2>
<Label w3 local SendWinM WoW3>
<Label w4 local SendWinM WoW4>
<Label w5 local SendWinM WoW5>


//----------------------------------------------------------------------
// Создание списка и назначение основных горячих клавиш.
//
// Напротив except указаны исключения, которые не нужно назначать или уже были назначены.
//----------------------------------------------------------------------
<KeyList AssistList 0-9, Minus, Plus> // содействие главному перед нажатием

<KeyList MainList A-Z, F1-F12, NumpadMinus, NumpadPlus except AssistList> // простые нажатия


<Template Assign>
<Hotkey %1%>
<SendLabel w1, w2, w3, w4, w5>
<Key %Trigger%>
<EndTemplate>


<ApplyTemplate Assign "ScrollLockOff MainList except W, A, S, D, Q, E, M, B, O, L">
<ApplyTemplate Assign "Shift ScrollLockOff MainList">
<ApplyTemplate Assign "Ctrl MainList">
<ApplyTemplate Assign "Alt MainList except F4, F">
<ApplyTemplate Assign "Ctrl Alt MainList except L">


// Используйте в игре ScrollLock для включения режима полной отправки простых нажатий.
<ApplyTemplate Assign "ScrollLockOn AllMainKeys except ScrollLock, Pause">
<ApplyTemplate Assign "Shift ScrollLockOn AllMainKeys except ScrollLock, Pause">


//----------------------------------------------------------------------
// Назначение горячих клавиш c автоматическим содействием ведущему персонажу.
//
// Для корректной работы в игре должны быть назначены дополнительные действия.
//
// Подробнее об этом смотрите на странице:
// www.slashfocus.ru/hotkeynet/item/eksperiment-s-hotkeynet-izbavlyaemsya-ot-makrosov

//----------------------------------------------------------------------
<Template TargetMain>
// отправка каких-то нажатий в какие-то четыре окна
<SendLabel %1%, %2%, %3%, %4%>
<Key %5%>
<Key %6%>
<EndTemplate>


<Template Slaves>
<If ActiveWinIs WoW1>
<ApplyTemplate TargetMain w2 w3 w4 w5 F11 %1%>

<Else If ActiveWinIs WoW2>
<ApplyTemplate TargetMain w1 w3 w4 w5 "Ctrl F11" %1%>

<Else If ActiveWinIs WoW3>
<ApplyTemplate TargetMain w2 w1 w4 w5 "Alt F11" %1%>

<Else If ActiveWinIs WoW4>
<ApplyTemplate TargetMain w2 w3 w1 w5 "Shift F11" %1%>

<Else If ActiveWinIs WoW5>
<ApplyTemplate TargetMain w2 w3 w4 w1 "Ctrl Alt F11" %1%>
<EndIf>
<EndTemplate>


<Hotkey ScrollLockOff AssistList; Ctrl AssistList; Alt AssistList except 5, 6>
<ApplyTemplate Slaves F>

// атака общей цели
<SendLabel w1, w2, w3, w4, w5>
<Key %Trigger%>


<Hotkey Alt F> // следование за главным
<ApplyTemplate Slaves %Trigger%>


<Hotkey Shift 6> // пятиконечная пентаграмма для шаманов
<SendLabel w1, w2, w3, w4, w5>
<KeyUp Shift>

<SendLabel w1>
<Key Shift F11>
<SendLabel w2>
<Key Ctrl Alt F11>
<SendLabel w3>
<Key F11>
<SendLabel w4>
<Key Ctrl F11>
<SendLabel w5>
<Key Alt F11>

<SendLabel w1, w2, w3, w4, w5>
<Key %TriggerMainKey%> // активация цепного лечения клавишей 6


<Hotkey Shift 7> // следование друг за другом
<SendLabel w2>
<Key F11>
<SendLabel w3>
<Key Ctrl F11>
<SendLabel w4>
<Key Alt F11>
<SendLabel w5>
<Key Shift F11>
<SendLabel w2, w3, w4, w5>
<Key Alt F>


<Hotkey Alt 5, 6> // лечение главного персонажа
<SendFocusWin>
<Key %Trigger%>

    <ApplyTemplate Slaves %TriggerMainKey%>


//---------------------------------------------------------------------- // Назначение дополнительных горячих клавиш.
//
// При обычном нажатии произойдёт отправка в активное окно.
// Нажатие вместе с клавишей Shift отправится во все окна. //----------------------------------------------------------------------

<Hotkey ScrollLockOff Esc>
<SendFocusWin> // отправка нажатия в активное на данный момент окно
<Key %Trigger%>

<SendPC local>
<ResetToggles> // сброс состояния переключателей
<Cancel> // отмена текущих и запланированных действий


<Hotkey ScrollLockOff Shift Esc, Tab, Enter, Divide, Backspace>
<SendFocusWin>
<KeyUp Shift> // отпускание клавиши Shift

<SendLabel w1, w2, w3, w4, w5>
<Key %TriggerMainKey%> // отправка нажатия без модификатора Shift


//----------------------------------------------------------------------
// Клавиша Pause быстро включает либо отключает передачу клавиш.
// Требуется в случаях, когда нужно напечатать что-то в чате или другом приложении.
//----------------------------------------------------------------------
<Hotkey Pause>
<If HotkeysAreOn> // если оправка нажатий в окна активна
<TurnHotkeysOff> // выключаем отправку нажатий
<SetActiveWindowTracking Off> // выключаем активное отслеживание окон
        <SetButtonColors ButtonH 0x151515>  // изменяем цвет кнопки H на чёрный

<Else> // если отправка нажатий в окна неактивна
<TurnHotkeysOn> // включаем отправку нажатий
<SetActiveWindowTracking On> // включаем активное отслеживание окон
<SetButtonColors ButtonH 0x33AA33> // изменяем цвет кнопки H на зелёный
<EndIf>

// принудительно закрепляем панели на переднем плане
<TargetWin SwitchPanel>
<AlwaysOnTop On>
<TargetWin ControlPanel>
<AlwaysOnTop On>


//----------------------------------------------------------------------
// Клавиша ScrollLock переключает режим отправки всех нажатий в окна.
// Требуется в случаях, когда нужно напечатать текст сразу во всех окнах, например, ввести пароль.
//----------------------------------------------------------------------
<Hotkey ScrollLockOff ScrollLock>
// отправка нажатия в активное окно
<PassThrough>
// измененяем цвет кнопки S на жёлтый
<SetButtonColors ButtonS 0xEEEE55 0x151515>
// изменяем команду на кнопке для правильной работы клика
<SetButtonHotkey ButtonS Hotkey ScrollLockOn ScrollLock>


<Hotkey ScrollLockOn ScrollLock>
// отправка нажатия в активное окно
<PassThrough>
// измененяем цвет кнопки S на чёрный
<SetButtonColors ButtonS 0x101010 0xFFFFFF>
// изменяем команду на кнопке для правильной работы клика
<SetButtonHotkey ButtonS Hotkey ScrollLockOff ScrollLock>


//----------------------------------------------------------------------
// Управление расстановкой пяти персонажей
//----------------------------------------------------------------------
<Template Move>
<MovementHotkey ScrollLockOff Ctrl Right>
<SendLabel w2, w3>
<Key %3%>
<SendLabel w4, w5>
<Key %4%>

<MovementHotkey ScrollLockOff Ctrl Left>
<SendLabel w2, w3>
<Key %4%>
<SendLabel w4, w5>
<Key %3%>

<MovementHotkey ScrollLockOff Right>
<SendLabel w2>
<Key %3%>
<SendLabel w5>
<Key %4%>

<MovementHotkey ScrollLockOff Left>
<SendLabel w2>
<Key %4%>
<SendLabel w5>
<Key %3%>

<MovementHotkey ScrollLockOff Ctrl Up>
<SendLabel w2, w3, w4, w5>
<Key %1%>

<MovementHotkey ScrollLockOff Ctrl Down>
<SendLabel w2, w3, w4, w5>
<Key %2%>

<MovementHotkey ScrollLockOff Up>
<SendLabel w2, w5>
<Key %1%>

<MovementHotkey ScrollLockOff Down>
<SendLabel w2, w5>
<Key %2%>
<EndTemplate>


<ApplyTemplate Move W S Q E>


//----------------------------------------------------------------------
// Переопределение действий для пробела - после прыжка побочные персонажи продолжат следовать за главным.
// Требуется во время полёта и плавания.
//----------------------------------------------------------------------
<Hotkey ScrollLockOff Space>
<SendLabel w1, w2, w3, w4, w5>
<KeyDown Space> // нажатие и удержание клавиши Пробел


<HotkeyUp ScrollLockOff Space>
<SendLabel w1, w2, w3, w4, w5>
<KeyUp Space> // отпускание клавиши Пробел

// следование за тем персонажем, от лица которого на данный момент осуществляется управление
<SendPC local>
<DoHotkey Hotkey Alt F>


//----------------------------------------------------------------------
// Переключение между окнами.
//
// Поочерёдное переключение между окнами осуществляется по Alt+Tab.

//----------------------------------------------------------------------
<Template Switch> // шаблон для создания кнопок переключения
<Hotkey ScrollLockOff Shift %1%>
<SwitchColors %1% %2% %3% %4% %5%>
<ResizeAndPosition %1% %2% %3% %4% %5%>

<TargetWin WoW%1%>
<SetActiveWin> // активация окна, на которое было произведено переключение

<ApplyTemplate TargetMain w%2% w%3% w%4% w%5% "%6%" "Alt F">
<Key End>
<Key End>
<EndTemplate>


<ApplyTemplate Switch 1 2 3 4 5 F11>
<ApplyTemplate Switch 2 1 3 4 5 "Ctrl F11">
<ApplyTemplate Switch 3 2 1 4 5 "Alt F11">
<ApplyTemplate Switch 4 2 3 1 5 "Shift F11">
<ApplyTemplate Switch 5 2 3 4 1 "Ctrl Alt F11">


<Hotkey Ctrl Enter>
// если навести курсор на одно из окон и нажать Ctrl+Enter, будет произведено переключение на это окно
<If ActiveWinIs WoW1>
<DoHotkey Hotkey ScrollLockOff Shift 1>
<Else If ActiveWinIs WoW2>
<DoHotkey Hotkey ScrollLockOff Shift 2>
<Else If ActiveWinIs WoW3>
<DoHotkey Hotkey ScrollLockOff Shift 3>
<Else If ActiveWinIs WoW4>
<DoHotkey Hotkey ScrollLockOff Shift 4>
<Else If ActiveWinIs WoW5>
<DoHotkey Hotkey ScrollLockOff Shift 5>


<Hotkey Alt Tab> // поочерёдное переключение между окнами
<Toggle>
<DoHotkey Hotkey ScrollLockOff Shift 2>
<Toggle>
<DoHotkey Hotkey ScrollLockOff Shift 3>
<Toggle>
<DoHotkey Hotkey ScrollLockOff Shift 4>
<Toggle>
<DoHotkey Hotkey ScrollLockOff Shift 5>
<Toggle>
<DoHotkey Hotkey ScrollLockOff Shift 1>


//----------------------------------------------------------------------
// Передача кликов мыши.
//----------------------------------------------------------------------
<Template Mouse>
<SendWinS WoW1>
<ClickMouse %1%>
<SendWinS WoW2>
<ClickMouse %1%>
<SendWinS WoW3>
<ClickMouse %1%>
<SendWinS WoW4>
<ClickMouse %1%>
<SendWinS WoW5>
<ClickMouse %1%>
<EndTemplate>


<Hotkey ScrollLockOff Insert>
<ApplyTemplate Mouse LButton> // клик левой кнопкой мыши


<Hotkey ScrollLockOff Delete>
<ApplyTemplate Mouse RButton> // клик правой кнопкой мыши


//----------------------------------------------------------------------
// Дополнительные кнопки мыши.
//
// В связи с тем, что дополнительные кнопки не совершают клик как таковой,
// нам не нужно передавать их нажатия так же, как обычные клики.
// Вместо этого мы передадим в окна нажатие другой клавиши,
// которую можно назначить в самой игре на любое действие.
//----------------------------------------------------------------------
<Template MouseButton>
<Hotkey ScrollLockOff %1%>
<SendLabel w1, w2, w3, w4, w5>
<Key %2%>

<Hotkey ScrollLockOff Shift %1%>
<SendLabel w1, w2, w3, w4, w5>
<Key Shift %2%>

<Hotkey Ctrl %1%>
<SendLabel w1, w2, w3, w4, w5>
<Key Ctrl %2%>

<Hotkey Alt %1%>
<SendLabel w1, w2, w3, w4, w5>
<Key Alt %2%>
<EndTemplate>


<ApplyTemplate MouseButton MButton 0> // средняя кнопка передаст в окна нажатие клавиши 0
<ApplyTemplate MouseButton Button4 Minus> // первая боковая кнопка передаст в окна нажатие клавиши Minus
<ApplyTemplate MouseButton Button5 Plus> // вторая боковая кнопка передаст в окна нажатие клавиши Plus