10 аккаунтов на одном компьютере

//======================================================================
// Базовый скрипт для управления десятью окнами World of Warcraft
// с помощью программы HotkeyNet на одном компьютере.
//
// Автор скрипта: Pashted
// Источник: www.slashfocus.ru
//======================================================================



//----------------------------------------------------------------------
// Команда, автоматически запускаемая при загрузке скрипта.
//
// Перейдите в настройки HotkeyNet и убедитесь, что название команды в разделе
// "Execute command automatically" совпадает с указанным здесь.
//----------------------------------------------------------------------
<Command AutoExec>
// объявление переменной, отвечающей за то, какая группа активна на данный момент
<SetVar ActiveParty 1>

// создание панелей на экране
<CreatePanel SwitchPanel 468 0 600 24>
<CreatePanel ControlPanel 0 937 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 Button6 0 0 60 24 0x0B0B0B 0xED1C24 6>
<CreateColoredButton Button7 0 0 60 24 0x0B0B0B 0xED1C24 7>
<CreateColoredButton Button8 0 0 60 24 0x0B0B0B 0xED1C24 8>
<CreateColoredButton Button9 0 0 60 24 0x0B0B0B 0xED1C24 9>
<CreateColoredButton Button0 0 0 60 24 0x0B0B0B 0xED1C24 10>
<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> // закрытие окон

// назначение команд кнопкам
<SetButtonCommand Button1 ForceSwitch 1 1>
<SetButtonCommand Button2 ForceSwitch 1 2>
<SetButtonCommand Button3 ForceSwitch 1 3>
<SetButtonCommand Button4 ForceSwitch 1 4>
<SetButtonCommand Button5 ForceSwitch 1 5>
<SetButtonCommand Button6 ForceSwitch 2 1>
<SetButtonCommand Button7 ForceSwitch 2 2>
<SetButtonCommand Button8 ForceSwitch 2 3>
<SetButtonCommand Button9 ForceSwitch 2 4>
<SetButtonCommand Button0 ForceSwitch 2 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 Button6 SwitchPanel 300 0>
<AddButtonToPanel Button7 SwitchPanel 360 0>
<AddButtonToPanel Button8 SwitchPanel 420 0>
<AddButtonToPanel Button9 SwitchPanel 480 0>
<AddButtonToPanel Button0 SwitchPanel 540 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>
<SetButtonColors Button%6% 0x0B0B0B 0xED1C24>
<SetButtonColors Button%7% 0x0B0B0B 0xED1C24>
<SetButtonColors Button%8% 0x0B0B0B 0xED1C24>
<SetButtonColors Button%9% 0x0B0B0B 0xED1C24>
<SetButtonColors Button%10% 0x0B0B0B 0xED1C24>


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

<Command ResizeAndPosition>
<SendWinM WoW%1%>
<SetWinRect 0 0 1536 864>
<SendWinM WoW%2%>
<SetWinRect 0 864 384 216>
<SendWinM WoW%3%>
<SetWinRect 384 864 384 216>
<SendWinM WoW%4%>
<SetWinRect 768 864 384 216>
<SendWinM WoW%5%>
<SetWinRect 1152 864 384 216>
<SendWinM WoW%6%>
<SetWinRect 1536 0 384 216>
<SendWinM WoW%7%>
<SetWinRect 1536 216 384 216>
<SendWinM WoW%8%>
<SetWinRect 1536 432 384 216>
<SendWinM WoW%9%>
<SetWinRect 1536 648 384 216>
<SendWinM WoW%10%>
<SetWinRect 1536 864 384 216>


//----------------------------------------------------------------------
// Шаблон для запуска и переименования окон.
//
// В начале программа проверяет, существует ли окно, которое она собирается запустить.
// Благодаря этому повторное открытие окон добавит лишь те, которых не хватает.
//----------------------------------------------------------------------
<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 6 7 8 9 0>

// создание эффекта полосы загрузки
<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>
<ApplyTemplate LaunchAndRename 6 Login6 0 1>
<ApplyTemplate LaunchAndRename 7 Login7 0 1>
<ApplyTemplate LaunchAndRename 8 Login8 2 3>
<ApplyTemplate LaunchAndRename 9 Login9 2 3>
<ApplyTemplate LaunchAndRename 0 Login10 2 3>

<SwitchColors 1 2 3 4 5 6 7 8 9 0>

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


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


<Hotkey Alt F4>
<Exit WoW1>
<Exit WoW2>
<Exit WoW3>
<Exit WoW4>
<Exit WoW5>
<Exit WoW6>
<Exit WoW7>
<Exit WoW8>
<Exit WoW9>
<Exit WoW0>
<Exit "World of Warcraft">

    <SetVar ActiveParty 1> // сброс номера активной группы

<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>
<Label w6 local SendWinM WoW6>
<Label w7 local SendWinM WoW7>
<Label w8 local SendWinM WoW8>
<Label w9 local SendWinM WoW9>
<Label w0 local SendWinM WoW0>


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


<Template Assign>
<Hotkey %1%>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key %Trigger%>
<EndTemplate>


<ApplyTemplate Assign "ScrollLockOn AllMainKeys except ScrollLock, Pause">
<ApplyTemplate Assign "Shift ScrollLockOn AllMainKeys except ScrollLock, Pause">

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


//---------------------------------------------------------------------- // Назначение дополнительных горячих клавиш.
//
// При обычном нажатии произойдёт отправка в активное окно.
// Нажатие вместе с клавишей 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, w6, w7, w8, w9, w0>
<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>


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


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

// следование за тем персонажем, от лица которого на данный момент осуществляется управление
<If ActiveWinIs WoW1>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift 1>
<Else If ActiveWinIs WoW2>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift 2>
<Else If ActiveWinIs WoW3>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift 3>
<Else If ActiveWinIs WoW4>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift 4>
<Else If ActiveWinIs WoW5>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift 5>
<Else If ActiveWinIs WoW6>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift 6>
<Else If ActiveWinIs WoW7>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift 7>
<Else If ActiveWinIs WoW8>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift 8>
<Else If ActiveWinIs WoW9>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift 9>
<Else If ActiveWinIs WoW0>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift 0>


//----------------------------------------------------------------------
// Переключение между окнами.
//
// В игре на сочетания клавиш от Shift+1 до Shift+5 необходимо назначить макросы на следование,
// содержащие ники персонажей из первой группы. На клавиши от Shift+6 до Shift+0 нужно назначить
// такие же макросы с никами персонажей из второй группы.
//

// Подробнее об этом в разделе "Следование" на странице
// www.slashfocus.ru/multibox/item/multiboxing-v-world-of-warcraft
//
// Переключение между группами осуществляется по Alt+Tab.

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

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

<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift %1%> // следование за главным из первой группы

<Else>
<SwitchColors %6% 2 3 4 5 1 %7% %8% %9% %10%>
<ResizeAndPosition %6% 2 3 4 5 1 %7% %8% %9% %10%>

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

<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift %6%> // следование за главным из второй группы
<EndTemplate>


<ApplyTemplate Switch 1 2 3 4 5 6 7 8 9 0>
<ApplyTemplate Switch 2 1 3 4 5 7 6 8 9 0>
<ApplyTemplate Switch 3 2 1 4 5 8 7 6 9 0>
<ApplyTemplate Switch 4 2 3 1 5 9 7 8 6 0>
<ApplyTemplate Switch 5 2 3 4 1 0 7 8 9 6>


<Command ForceSwitch> // подпрограмма, позволяющая переключаться между группами
<SetVar ActiveParty %1%>
<DoHotkey Hotkey ScrollLockOff Shift %2%>


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


<Hotkey Alt Tab> // переключение между группами на 6-е окно или на 1-е
<If ActiveParty Is 1>
<ForceSwitch 2 1>
<Else>
<ForceSwitch 1 1>


//----------------------------------------------------------------------
// Передача кликов мыши.
//
// Клик произойдет только в той группе, над которой находится курсор.
//----------------------------------------------------------------------
<Template Mouse>
<SendWinS WoW%1%>
<ClickMouse %6%>
<SendWinS WoW%2%>
<ClickMouse %6%>
<SendWinS WoW%3%>
<ClickMouse %6%>
<SendWinS WoW%4%>
<ClickMouse %6%>
<SendWinS WoW%5%>
<ClickMouse %6%>
<EndTemplate>


<Hotkey ScrollLockOff Insert> // клик левой кнопкой мыши
<If ActiveWinIs WoW1>
<ApplyTemplate Mouse 1 2 3 4 5 LButton>
<Else If ActiveWinIs WoW2>
<ApplyTemplate Mouse 1 2 3 4 5 LButton>
<Else If ActiveWinIs WoW3>
<ApplyTemplate Mouse 1 2 3 4 5 LButton>
<Else If ActiveWinIs WoW4>
<ApplyTemplate Mouse 1 2 3 4 5 LButton>
<Else If ActiveWinIs WoW5>
<ApplyTemplate Mouse 1 2 3 4 5 LButton>
<Else>
<ApplyTemplate Mouse 6 7 8 9 0 LButton>


<Hotkey ScrollLockOff Delete> // клик правой кнопкой мыши
<If ActiveWinIs WoW1>
<ApplyTemplate Mouse 1 2 3 4 5 RButton>
<Else If ActiveWinIs WoW2>
<ApplyTemplate Mouse 1 2 3 4 5 RButton>
<Else If ActiveWinIs WoW3>
<ApplyTemplate Mouse 1 2 3 4 5 RButton>
<Else If ActiveWinIs WoW4>
<ApplyTemplate Mouse 1 2 3 4 5 RButton>
<Else If ActiveWinIs WoW5>
<ApplyTemplate Mouse 1 2 3 4 5 RButton>
<Else>
<ApplyTemplate Mouse 6 7 8 9 0 RButton>


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

<Hotkey ScrollLockOff Shift %1%>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Shift %2%>

<Hotkey Ctrl %1%>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Ctrl %2%>

<Hotkey Alt %1%>
<SendLabel w1, w2, w3, w4, w5, w6, w7, w8, w9, w0>
<Key Alt %2%>
<EndTemplate>


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