romaACE #1 Опубликовано: 16 ноября 2010 Об AutoHotkey Пример написания скрипта для Warcraft III Первое, что нам понадобится, это AutoHotkey . Скачиваем, устанавливаем. Создаем любой текстовый файл, задаем ему название любое, пусть будет script и расширение .ahk и открываем с помощью блокнота. Сначала научимся заменять горячие клавиши. Например, Вы задрот SF'a, но, считаете, что ZXC хоткеи не очень удобны, и хотите, что бы вместо них использовались QWE. Для этого в нашем файле script.ahk записываем следующие 3 строки q::z w::x e::c ЗамечаниеЕсли у Вас язык ввода в системе по-умолчанию русский, то следует задать аналогичные русские клавиши, например й::я Но я рекомендую поставить язык ввода по-умолчанию английский, весь этот туториал будет для английского языка ввода Теперь разбираем что есть что. Любой хоткей должен быть записан в виде самой горячей клавиши и двоеточия после него, после двоеточия записывается хоткей, который нужно нажать вместо исходного. Что бы запустить скрипт: сохраняем наш файл и кликаем на него 2 раза. Всё вроде замечательно, играем - ебашим, делаем ремпеджи, но тут нам по скайпу кто-то пишет, вы отвечаете, например, "йцу" (мы же дотеры, у нас по русскому 2 поэтому пишем всякую хуйню), и вместо этого печатается zxc. Да, точно, хуйня какая-то. Что бы такого не было, нам надо указать скрипту, что бы он работал только в окне Варкрафта. Для этого существует директива #IfWinActive Запишем это так: #IfWinActive ahk_class Warcraft III q::z w::x e::c Каждое окно имеет свой ahk_Class, Варкрафт имеет вот такой. Можно особо не вникать, а просто это запомнить. Далее вроде все хорошо, но нам надо, что бы скрипт отключался в лобби в Варкрафте. Это необходимо делать вручную, иначе наши символы йцу или qwe будут заменяться на zxc. Для этого существует команда suspend. Назначим эту команду на клавишу Pause #IfWinActive ahk_class Warcraft III q::z w::x e::c pause::suspend Теперь, нажав на Pause, мы отключаем наши хоткеи. Что бы их включить, вновь нажмите на Pause Список всех хоткеев можно найти в справке Добавим хоткеи для инвентаря. Забиндим дополнительные кнопки мыши. #IfWinActive ahk_class Warcraft III q::z w::x e::c pause::suspend xbutton1::numpad1 xbutton2::numpad2 Теперь при нажатии дополнительных кнопок мыши, мы будем юзать слоты 1 и 2 инвентаря (у кого нет боковых кнопок мыши, можно забиндить любые) У нас получился отличный скрипт. Но есть одна неудобная вещь: нам приходится каждый раз его отключать, когда печатаем в чат в игре (не в лобби, а в самой игре). Нам надо научить скрипт отключаться когда мы пишем в чат. Дополним скрипт: #IfWinActive ahk_class Warcraft III q::z w::x e::c pause::suspend xbutton1::numpad1 xbutton2::numpad2 ; клавиши активации чата ~*Enter:: ~*Numpadenter:: suspend ; suspend в первой строке необходим, что бы вновь включать скрипт, иначе хоткей отключится насовсем If !paused suspend, on Else suspend, off paused:=!paused Return ; клавиши отмены чата ~*esc:: ~*lbutton:: suspend, off paused=0 return Во-первых: комментарии записываются после знака ; Во-вторых: нам надо знать каким образом активируется чат, и каким образом он отключается Что бы активировать чат, мы должны нажать любой enter в комбинации с любой из клавиш-модификаторов (alt,ctrl,shift) Так строки ~*Enter:: и ~*Numpadenter:: означают нажатие enter (основной) или нажатие enter на дополнительной клавиатуре. Знак ~ означает, что основная функция этой кнопки не блокируется, т.е. нажатие Ентера по-прежнему будет происходить. Знак * означает, что эта клавиша (Enter или NumpadEnter) нажимается с любой из кнопок (для нас важны alt,ctrl,shift). Если убрать *, то нажатие ctrl+enter не приведет к активации этого хоткея. Работу этих хоткеев разберем позже. Пока проанализируем, как чат отключается. Делается это двумя способами: кликаньем ескейпа (строка ~*esc::) и кликаньем левой кнопки мыши (строка ~*lbutton::) или же повторным нажатием Ентера. Как видите, если хоткей имеет не одну команду, то эти команды записываются с новой строки и заканчиваются командой return. Теперь разберем как работают эти хоткеи: при включении чата, нам необходимо отключать скрипт, а при отключении чата, включать скрипт вновь. Нам нужна переменная, где будет храниться состояние скрипта. Это будет переменная paused. Строки If !paused suspend, on означают Если переменная paused не равна true (т.е. скрипт сейчас не на паузе, и чат не активирован) то поставить скрипт на паузу Строки Else suspend, off означают Иначе если переменная paused равна true(т.е. скрипт на паузе, и чат активирован) снять скрипт с паузы (т.е. в этот момент мы посылаем Ентер и закрываем чат, скрипт надо включить) Т.к. чат поменял свое состояние, то и переменную paused надо изменить на противоположное состояние. Строки paused:=!paused Return означают изменить состояние переменной на обратное завершить выполнение хоткея Т.к. Ентером как включается чат, так и выключается, то нам надо менять состояние переменной на обратное. А вот в случае нажатия ESC или левой кнопки мыши, у нас по-любому чат отключается, и в этот момент переменную надо установить в 0 (false) и включить скрипт Это строки suspend, off paused=0 И самое последнее. Мы уже приличные дотеры, нам надо говорить miss. Для этого можно добавить такие хоткеи !1::send {enter}miss top{enter} !2::send {enter}miss mid{enter} !3::send {enter}miss bot{enter} Знак ! означает alt (^ ctrl, + shift), т.е. хоткей будет alt+1 и т.п. Команда send означает "послать" (используем ее в том случае, если у нас хоткей после :: не один, а несколько, у нас фраза miss top). Отдельные "многобуквенные" хоткеи как ентер записываются в фигурных скобках. Добавим быстродействия скрипту командами #noenv setbatchlines -1 setkeydelay -1 Кому надо, сами описания найдете. И еще, т.к. состояние скрипта меняется не только по нажатию enter и esc (и т.п.) а еще и при нажатии вновь созданного хотке pause::, то в этот хоткей надо засунуть изменение нашей переменной paused, содержащей состояние скрипта. Итоговый скрипт будет выглядеть так spoiler#noenv #IfWinActive ahk_class Warcraft III setbatchlines -1 setkeydelay -1 q::z w::x e::c pause:: suspend paused:=!paused Return xbutton1::numpad1 xbutton2::numpad2 ; клавиши активации чата ~*Enter:: ~*Numpadenter:: suspend If !paused suspend, on Else suspend, off paused:=!paused Return ; клавиши отмены чата ~*esc:: ~*lbutton:: suspend, off paused=0 return !1::send {enter}miss top{enter} !2::send {enter}miss mid{enter} !3::send {enter}miss bot{enter} И не забываем, что если нам надо, что бы, например, клавиша q работала и когда мы нажимаем alt+q и когда нажимаем ctrl+q, то перед ней надо ставить *. Это будет выглядеть так *q::send z Тогда при нажатии q в комбинации с любой из кнопок, наш хоткей активируется. Если * не ставить, то нажатие alt+q не будет заменяться на z, а будет иметь стандартное значение. НО при этом нельзя записывать хоткеи в стандартном виде, надо обязательно использовать send пример*q::send z *w::send x *e::send c Надеюсь все не слишком заумно. Пробуйте, все получится Поделиться сообщением Ссылка на сообщение
Гость #2 16 ноября 2010 жесткий гайд, молодец, найду время-буду вникать Поделиться сообщением Ссылка на сообщение
wardec #5 16 ноября 2010 изипак клавиши W E S D X C + alt всё заебато минус: ск с дагером. Нужно после ульта мышкой наводить на инвентарь. Поделиться сообщением Ссылка на сообщение
InFlames #6 16 ноября 2010 изипак клавиши W E S D X C + alt всё заебато минус: ск с дагером. Нужно после ульта мышкой наводить на инвентарь. не буду комментировать изипак, т.к. считаю, что это минимум что должен иметь дотер, автохоткей это для тех кому мало изипак-подобных прог про ск не понял, нажал хоткей, зажал шифт, тыкнул в землю зачем в инвентарь еще тыкать? Поделиться сообщением Ссылка на сообщение
romaACE #7 16 ноября 2010 тему закрою, чтобы её истинный автор создал от собсвтенного имени. Поделиться сообщением Ссылка на сообщение