Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (0 пользователей, 1 гость)

Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

romaACE

Пишем скрипт на autohotkey для Warcraft III от InFlames

Рекомендованные сообщения

Об  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

 

Надеюсь все не слишком заумно. Пробуйте, все получится

Поделиться сообщением


Ссылка на сообщение
Гость

жесткий гайд, молодец, найду время-буду вникать

Поделиться сообщением


Ссылка на сообщение

прочитал, не так уж всё сложно.

Поделиться сообщением


Ссылка на сообщение

и не играть сфом?


740b41d55ea3.jpg

Поделиться сообщением


Ссылка на сообщение

изипак

 

клавиши W E S D X C + alt

всё заебато

минус: ск с дагером. Нужно после ульта мышкой наводить на инвентарь.

Поделиться сообщением


Ссылка на сообщение

изипак

 

клавиши W E S D X C + alt

всё заебато

минус: ск с дагером. Нужно после ульта мышкой наводить на инвентарь.

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

про ск не понял, нажал хоткей, зажал шифт, тыкнул в землю

зачем в инвентарь еще тыкать?

Поделиться сообщением


Ссылка на сообщение

тему закрою, чтобы её истинный автор создал от собсвтенного имени.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...