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

InFlames

Autohotkey + Warcraft III

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

Тут я писал как сделать свой скрипт для WC3 с помощью Autohotkey.

После падения форума, тему восстановили, но я от своего имени создавать не стал.

Кому-то интересно написать свой скрипт? Я могу помочь учесть все пожелания.

Зачем мне это? Мне просто нехрена делать.  :buba:

 

Как использовать?

Скачать Autohotkey Installer и установить.

Скопировать содержимое скрипта в текстовый файл, сохранить его с расширением .ahk

Запустить созданный скрипт двойным щелчком мыши.

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


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

напиши бинды для инвокера


javascript:void(0);

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


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

напиши бинды для инвокера

 

 

vk76::
	if (flagf7:=!flagf7)
			sendplay {enter} triple qwe mode {enter}
	else
			sendplay {enter} norm qwe mode {enter}
return

~vk51::
	if !flagf7
	return
sendplay {vk51}{vk51}
return

~vk45::
	if !flagf7
	return
sendplay {vk45}{vk45}
return

~vk57::
	if !flagf7
	return
sendplay {vk57}{vk57}
return



!vk4C::sendplay {enter}-il{enter}


^vk46::sendplay {vk45}{vk45}{vk51}{vk52}

^vk56::sendplay {vk51}{vk51}{vk57}{vk52}

^vk54::sendplay {vk45}{vk45}{vk45}{vk52}

^vk44::sendplay {vk45}{vk45}{vk57}{vk52}

^vk58::sendplay {vk57}{vk57}{vk51}{vk52}

^vk59::sendplay {vk51}{vk51}{vk51}{vk52}

^vk47::sendplay {vk51}{vk51}{vk45}{vk52}

^vk5A::sendplay {vk57}{vk57}{vk45}{vk52}

^vk43::sendplay {vk57}{vk57}{vk57}{vk52}

^vk42::sendplay {vk51}{vk57}{vk45}{vk52}

 

:buba:


0BdKg2e.png

Скрытый текст

 

Цитата

посоны

я джуса забанил

мне пиздос?

Цитата

xHjcvkA.gif

 

 

 

 

 

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


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

напиши бинды для инвокера

Если вышенаписанные не подойдут, напиши техзадание, какие хоткеи использовать.

Реализовать можно практически что угодно

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

Да и сам вывод на экран осуществляется с помощью внедрения в процесс war3.exe

Как бы само внедрение нужно только для того, что бы отображать информацию поверх окна War3.

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


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

напиши бинды для инвокера

Если вышенаписанные не подойдут, напиши техзадание, какие хоткеи использовать.

Реализовать можно практически что угодно

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

Да и сам вывод на экран осуществляется с помощью внедрения в процесс war3.exe

Как бы само внедрение нужно только для того, что бы отображать информацию поверх окна War3.

хоткеи настраиваимые как и для инвентаря

добавь в свою прогу вкладку для инвокера, туда список его магий, а напротив хоткей


javascript:void(0);

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


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

Не в WHK я точно такого делать не буду скорее всего. Есть комбинации в WHK2, где можно легко за 3 минуты создать свой конфиг и сохранить его.

 

Вот скрипт для инвокера. Редактируешь настройки под себя и пользуешься.

Автоотключение чата не добавлял, т.к. обычно эти комбинации биндят на ALT+KEY, что не мешает чату.

Если надо, то добавлю отключение скрипта при наборе в чат.

 

 

 

;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НЕ РЕДАКТИРОВАТЬ
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~

#NoEnv
#SingleInstance, force
#MaxHotkeysPerInterval 1000
Process, Priority, , High
SetBatchLines, -1
SetKeyDelay, -1
VK_LIST = VK41,VK42,VK43,VK44,VK45,VK46,VK47,VK48,VK49,VK4A,VK4B,VK4C,VK4D,VK4E,VK4F,VK50,VK51,VK52,VK53,VK54,VK55,VK56,VK57,VK58,VK59,VK5A,VKC0
HK_LIST = A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,``
Spell_List = SunStrike,ChaosMeteor,ForgeSpirit,ColdSnap,GhostWalk,IceWall,Alacrity,Tornado,EMP,DeafeningBlast

; Комбинации
SunStrike = eee
ChaosMeteor = eew
ForgeSpirit = eeq
ColdSnap = qqq
GhostWalk = qqw
IceWall = qqe
Alacrity = wwe
Tornado = wwq
EMP = www
DeafeningBlast = qwe
InvokeList = -il


;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НАСТРОЙКИ (МОЖНО РЕДАКТИРОВАТЬ)
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~

; Нажимать R в конце комбинации? 1=да, 0=нет
UseBook := 1 

; Хоткеи для комбинаций
; ! = ALT,   + = SHIFT,   ^ = CTRL,   # = WIN
Key_1 := "!t"  ; SunStrike (T)
Key_2 := "!d"  ; ChaosMeteor (D)
Key_3 := "!f"  ; ForgeSpirit (F)
Key_4 := "!y"  ; ColdSnap (Y)
Key_5 := "!v"  ; GhostWalk (V)
Key_6 := "!g"  ; IceWall (G)
Key_7 := "!z"  ; Alacrity (Z)
Key_8 := "!x"  ; Tornado (X)
Key_9 := "!c"  ; EMP (C)
Key_10:= "!b"  ; DeafeningBlast (B)
Key_IL:= "!``" ; -InvokeListr


;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НЕ РЕДАКТИРОВАТЬ
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~

; Создание хоткеев
Loop, parse, Spell_List, CSV
Hotkey, % VK(Key_%A_Index%), %A_LoopField%, On
Hotkey, % Key_IL, IL, On

return

; Выполнение комбинаций при нажатии хоткеев
SunStrike:
ChaosMeteor:
ForgeSpirit:
ColdSnap:
GhostWalk:
IceWall:
Alacrity:
Tornado:
EMP:
DeafeningBlast:
SendPlay, % %A_ThisLabel% . (UseBook ? "r" : "")
return

IL:
Send, {Enter}
SendRaw, -il
Send, {Enter}
return

VK(Param) ; заменяет нужные хоткеи на виртуальные коды
{
global
Hotkey:=RegExReplace(Param, "[\^\!\+\#]+(.*)", "$1")
If StrLen(Hotkey) > 1
	return Param
Loop, parse, HK_LIST, CSV
	If (Hotkey = A_LoopField)
	{
		Index := A_Index
		Loop, parse, VK_LIST, CSV
			If (A_Index = Index) 
				return % RegExReplace(Param, "(.*)" Hotkey, "$1" A_LoopField)
	}
}

 

 

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


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

А вот реализация с помощью жестов мыши. Хз может кому и удобно будет.

 

 

 

Sensitivity = 20
CoordMode, Mouse

Spell_List = SunStrike,ChaosMeteor,ForgeSpirit,ColdSnap,GhostWalk,IceWall,Alacrity,Tornado,EMP,DeafeningBlast

SunStrike = eee
ChaosMeteor = eew
ForgeSpirit = eeq
ColdSnap = qqq
GhostWalk = qqw
IceWall = qqe
Alacrity = wwe
Tornado = wwq
EMP = www
DeafeningBlast = qwe

; РЕДАКТИРОВАТЬ ТУТ
; U - жест вверх, D - жест вниз
; L - жест влево, R - жест вправо
; можно совмещать жесты: UL - жест вверх-влево
; жест делается с зажатой средней кнопкой мыши
; срабатывание происходит при отпускании СКМ
J_SunStrike = U    ; это значит жест вверх
J_ChaosMeteor = D   ; это значит жест вниз
J_ForgeSpirit = L
J_ColdSnap = R
J_GhostWalk = UD   ; это значит жест вверх-вниз
J_IceWall = DU
J_Alacrity = RL
J_Tornado = LR
J_EMP = UL
J_DeafeningBlast = UR    ; это значит жест вверх-вправо

; Нажимать R в конце комбинации? 1=да, 0=нет
UseBook := 1 


; Далее не редактировать
Gestures_list=%J_SunStrike%,%J_ChaosMeteor%,%J_ForgeSpirit%,%J_ColdSnap%,%J_GhostWalk%,%J_IceWall%,%J_Alacrity%,%J_Tornado%,%J_EMP%,%J_DeafeningBlast%
Return


MButton::
    NewGesture = 1
    While GetKeyState("MButton", "P")
    {
        if NewGesture
        {
            MouseGetPos, StartX, StartY
            NewGesture =
        }
        MouseGetPos, X, Y
        DX := X - StartX, DY := Y - StartY
        if (Abs(DX) >= Sensitivity)
            Gesture := (DX > 0 ? "R" : "L"), NewGesture := 1
        if (Abs(DY) >= Sensitivity)
            Gesture := (DY > 0 ? "D" : "U"), NewGesture := 1
        if (NewGesture && Gesture != PrevGesture)
            Gestures .= Gesture, PrevGesture := Gesture
        Sleep, 10
    }
    if Gestures
    {
        If Gestures in %Gestures_list%
        {
            Loop, parse, Gestures_list, CSV
                If (Gestures = A_LoopField)
                    Index := A_Index
            Loop, parse, Spell_list, CSV
                If (Index = A_Index)
                    SendPlay % %A_LoopField%  . (UseBook ? "r" : "")
        }
                
    }
    Gestures := Gesture := PrevGesture := ""
Return

MButton Up::Return

 

 

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


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

ты крут :)

и тебе рли нехрена делать :buba:


0BdKg2e.png

Скрытый текст

 

Цитата

посоны

я джуса забанил

мне пиздос?

Цитата

xHjcvkA.gif

 

 

 

 

 

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


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

Функция удерживания курсора в окне варкрафта.

F12 вкл\выкл удерживание

 

#NoEnv
SetBatchLines, -1
NumPut(WI, VarSetCapacity(WI, 60))
OnExit, exit
SetTimer, HoldCursor, 10

F12::
SetTimer, HoldCursor, % (IsPaused:=!IsPaused) ? "Off" : "10"
DllCall("ClipCursor", UInt, 0)
return

HoldCursor:
If !WinExist("ahk_class Warcraft III")
	Return
WinGet, hTargetWin, ID, ahk_class Warcraft III
IfWinNotActive, ahk_id %hTargetWin%
{
	If !NotActiveTarget
	{
		DllCall("ClipCursor", UInt, 0)
		NotActiveTarget := 1
	}
	Return
}
NotActiveTarget =
DllCall("GetWindowInfo", UInt, hTargetWin, UInt, &WI)
DllCall("ClipCursor", UInt, &WI + 20)   
Return   

exit:
DllCall("ClipCursor", UInt, 0)
ExitApp

 

 

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


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

GarenaAutojoiner как в Warhotkeys, немного изменен.

1. Добавить нужную комнату в избранное

2. Запустить скрипт

Скрипт работает с комнатой в избранном, которая находится ниже всех в списке избранных комнат.

Работает даже когда окно Garena свернуто или неактивно.

 

 

;~   Garena autojoiner
;~   Garena autojoiner
;~   1. Добавить нужную комнату в избранное
;~   2. Запустить скрипт
;~   Скрипт работает с комнатой в избранном,
;~   которая находится ниже всех в списке избранных комнат

#NoEnv
SetTitleMatchMode, regex
SetBatchLines, -1
SetControlDelay 200
CoordMode, mouse

If !WinExist("Garena") ; если нет окна гарены
{
MsgBox Окно Garena не найдено
ExitApp
}

SetTimer, tooltip, 10 ; закомментировать эту строку если не надо показывать сообщения

Start:
Error:=0
msg = Заходим в комнату
IfWinExist, ahk_class SkinDialog, Sorry ; 5 секунд не прошло
ControlClick, Button1, ahk_class SkinDialog, Sorry,,, NA
ControlClick, Button10, Garena ahk_class SkinWindow,,,, NA ; кнопка "избранное"
WinGetPos,,,, Fav_Height, ahk_class ATL:0062* ; высота окна "избранное"
ControlClick, x0 y%Fav_Height%, ahk_class ATL:0062*,,,, NA ; кликаем в нижнюю часть окна "избранное"
Wait1:
sleep 1000
IfWinExist, ahk_class SkinDialog, Sorry ; 5 секунд не прошло
{
ControlClick, Button1, ahk_class SkinDialog, Sorry,,, NA ; закрыть окно
Goto, Wait1 ; подождем еще секунду
}
else IfWinExist, ahk_class SkinDialog, Купить голд ; Предложение купить голд
{
ControlClick, Button1, ahk_class SkinDialog, Купить голд,,, NA ; закрыть окно
Goto, Wait5 ; ждем 5 секунд
}

else IfWinExist, ahk_class SkinDialog, Отмена ; Всё еще заходит в комнату
{
ControlClick, Button1, ahk_class SkinDialog, Отмена,,, NA ; закрыть окно
Goto, Wait1 ; подождем еще секунду
}

else IfWinExist,, Вы в той же самой комнате ; уже в комнате
{
Winclose ; закрыть окно
ExitApp
}	
return

Wait5:
Loop
{
	msg := "Ожидание " . 6 - a_index . " секунд"
	If a_index > 5
		break
	sleep 1000
}
Goto, Start
return


Tooltip:
ToolTip, %msg%
return

 

 

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


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

загрузал..


Ливер я найду тебя и убью, а потом убью твоих детей!Нет убью тебя и съем твоих детей, съем всех детей!

_________________________________________

 

наконец то мне снимут модера в таверне  :vau: :vau: :vau:

 

 

http://playerbar.ru/pbars/20.4.2010/3073714315

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


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

да я просто посоветовал, что в вхк добавить, чтоб прога была сверхпиздатой

сам инвокером не играю, т.к. не нравится мне он :3


javascript:void(0);

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


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

мне тоже не нравился пока скрипт не написал :buba:


0BdKg2e.png

Скрытый текст

 

Цитата

посоны

я джуса забанил

мне пиздос?

Цитата

xHjcvkA.gif

 

 

 

 

 

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


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

Инвокер.

Магии посылаются сразу на дефолтных хоткеях. Т.е. нажимая B сразу нажимается qwer, затем небольшая задержка и нажимается B.

Добавлена функция автоотключения чата.

F12 - пауза скрипта

 

 

;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НЕ РЕДАКТИРОВАТЬ
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~

#NoEnv
#SingleInstance, force
#MaxHotkeysPerInterval 1000
#IfWinActive ahk_class Warcraft III
Process, Priority, , High
SetBatchLines, -1
SetKeyDelay, -1
VK_LIST = VK41,VK42,VK43,VK44,VK45,VK46,VK47,VK48,VK49,VK4A,VK4B,VK4C,VK4D,VK4E,VK4F,VK50,VK51,VK52,VK53,VK54,VK55,VK56,VK57,VK58,VK59,VK5A,VKC0
HK_LIST = A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,``
Spell_List = SunStrike,ChaosMeteor,ForgeSpirit,ColdSnap,GhostWalk,IceWall,Alacrity,Tornado,EMP,DeafeningBlast

; Комбинации
SunStrike = eee
ChaosMeteor = eew
ForgeSpirit = eeq
ColdSnap = qqq
GhostWalk = qqw
IceWall = qqe
Alacrity = wwe
Tornado = wwq
EMP = www
DeafeningBlast = qwe
InvokeList = -il


;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НАСТРОЙКИ (МОЖНО РЕДАКТИРОВАТЬ)
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~


;Задержка между комбо и нажатием хоткея магии
delay:=170

; Хоткеи для комбинаций
; ! = ALT,   + = SHIFT,   ^ = CTRL,   # = WIN
Key_1 := "t"  ; SunStrike (T)
Key_2 := "d"  ; ChaosMeteor (D)
Key_3 := "f"  ; ForgeSpirit (F)
Key_4 := "y"  ; ColdSnap (Y)
Key_5 := "v"  ; GhostWalk (V)
Key_6 := "g"  ; IceWall (G)
Key_7 := "z"  ; Alacrity (Z)
Key_8 := "x"  ; Tornado (X)
Key_9 := "c"  ; EMP (C)
Key_10:= "b"  ; DeafeningBlast (B)
Key_IL:= "!``" ; -InvokeListr


;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НЕ РЕДАКТИРОВАТЬ
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~

; Создание хоткеев
Loop, parse, Spell_List, CSV
   Hotkey, % VK(Key_%A_Index%), %A_LoopField%, On
Hotkey, % Key_IL, IL, On

return

; Выполнение комбинаций при нажатии хоткеев
SunStrike:
ChaosMeteor:
ForgeSpirit:
ColdSnap:
GhostWalk:
IceWall:
Alacrity:
Tornado:
EMP:
DeafeningBlast:
   Loop, parse, VK_LIST, CSV
      If (A_ThisHotkey = A_LoopField)
         Index:=A_Index
   Loop, parse, HK_LIST, CSV
      If (Index=A_Index)
         ThisHotkey:=A_LoopField
   Send, % %A_ThisLabel% . "r"
   sleep %delay%
   Send % ThisHotkey
return

IL:
   Send, {Enter}
   SendRaw, -il
   Send, {Enter}
return

VK(Param) ; заменяет нужные хоткеи на виртуальные коды
{
   global
   Hotkey:=RegExReplace(Param, "[\^\!\+\#]+(.*)", "$1")
   If StrLen(Hotkey) > 1
      return Param
   Loop, parse, HK_LIST, CSV
      If (Hotkey = A_LoopField)
      {
         Index := A_Index
         Loop, parse, VK_LIST, CSV
            If (A_Index = Index)
               return % RegExReplace(Param, "(.*)" Hotkey, "$1" A_LoopField)
      }
}




; клавиши активации чата
~*Enter::
~*Numpadenter::
   suspend
   suspend
   If GlobalPaused ; если стоит пауза
      Return
   If !paused ; если не открыт чат
         suspend, on
   Else ; если чат открыт
      suspend, off
   paused:=!paused
Return

; клавиши отмены чата
~*$esc::
~*lbutton::
suspend
suspend
If GlobalPaused or !paused ; если стоит пауза или не открыт чат
	Return
suspend, off
paused=0
return

F12::
   Suspend
   GlobalPaused:=!GlobalPaused
return

 

 

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


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

Быстрая покупка предметов в магазинах.

Описание работы в самом скрипте.

 

 

/*
Скрипт для быстрой покупки предметов.
10 магазинов через шифт должны быть забиндены на клавишу Shopkey (устанавливается в настройках скрипта, см. ниже)

!!!ВНИМАНИЕ!!! Язык ввода по-умолчанию в системе должен быть английским

Как пользоваться:
1. Создать хоткеи для покупки предметов (примеры ниже)
2. Запустить скрипт
3. Для активации покупки нажать F5
4. Купить нужные предметы
5. Второй раз нажать F5 или Escape (Не забывайте деактивировать функцию!)

Функция имеет формат Buy("Item")
где Item - название предмета
Исопльзовать именно Item, но не Item1 или Item2 (см. в конце скрипта)
Название предмета обязательно заключать в кавычки
*/



;~;~;~;~;~;~;~;~;~;~;~;~
;~;~;~ НАСТРОЙКИ ;~;~;~
;~;~;~;~;~;~;~;~;~;~;~;~

;~ Клавиша на которой будут висеть магазины
;~ 10 магазинов через шифт должны быть забиндены на клавишу Shopkey (в данном случае ноль)
;~ -- зажать Shift
;~ -- Выделить поочередно каждый магазин, что бы в наборе появились все 10 магазинов
;~ -- Нажать Ctrl+0
Shopkey:="0"

;~ Выбирать магазин при активации функции покупки (F5) / Выбирать героя при деактивации функции покупки (F5, Escape)
;~ 1 = да, выбирать
;~ 0 = нет, не выбирать
SelectShop:=0

;~ При деактивации функции покупки
;~ 1 = возвращать фокус на героя и центрировать его (камера будет "прыгать", если на один хоткей повесить покупку более одного предмета)
;~ 0 = ничего не делать
ReturnHeroSelect:=1

;~ Отключать функцию покупки после покупки одного предмета
;~ 1 = отключать (не устанавливайте 1, если на одну клавишу вешаете больше одного предмета)
;~ 0 = не отключать, продолжить покупку
AutoBuyOff:=0

;~ Посылать сообщения в чат об активации/деактивации функции
;~ 1 = да, посылать
;~ 0 = нет, не посылать
Message:=1

;~ Задержка перед покупкой предмета
;~ Увеличить, если происходят сбои
d:=30 

SetKeyDelay, -1 ; не менять и не удалять
SetBatchLines, -1 ; не менять и не удалять
Gosub, Items ; не менять и не удалять
#IfWinExist EnableHotkeys ahk_class AutoHotkeyGUI ; не менять и не удалять


;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~
;~ Список хоткеев для покупки предметов при активированной функции покупки
;~ ! = ALT,   + = SHIFT,   ^ = CTRL,   # = WIN
;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~

;~ ПРИМЕРЫ ХОТКЕЕВ ДЛЯ ПОКУПКИ
;~ НЕ ДУБЛИРУЙТЕ ХОТКЕИ
;~ СПИСОК ПРЕДМЕТОВ НАХОДЯТСЯ В КОНЦЕ СКРИПТА

;~ Покупка свитка летающего курьера
f::Buy("FlyingCourier")

;~ Покупка телепорта
t::Buy("TP")

;~ Покупка бутылки
b::Buy("Bottle")

;~ Закуска к бутылке
v::Buy("Tango")

;~ Купить бутылку, выбрать курицу (если забиндена на 2), нажать t, что бы курица принесла предмет, выбрать героя
!b:: 
Buy("Bottle")
Send, 2
sleep, 20 ; разделяйте паузой команды, что бы скрипт работал надежнее
Send, t
sleep, 20 ; разделяйте паузой команды, что бы скрипт работал надежнее
Send, {F1 2}
return

;~ Покупка курицы + свитка летающего курьера
;~ Функции Buy() можно не разделять паузами
!f::
Buy("Courier")
Buy("FlyingCourier")
return

;~ Покупка сапога + свиток BootsOfTravel
!t:: 
Buy("boots")
Buy("BOT")
return




;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~
;~;~;~ НЕ РЕДАКТИРОВАТЬ ;~;~;~
;~;~;~;~;~;~;~;~;~;~;~;~;~;~;~

#IfWinActive ahk_class Warcraft III
F5::

If (Buy:=!Buy) and (SelectShop)
	Send {%ShopKey%}
If (!Buy and SelectShop and ReturnHeroSelect)
	Send {F1 2}
If Message
{
	Send {enter}
	SendRaw % "Shop is " . (Buy ? "activated" : "deactivated")
	Send {enter}
}
If Buy ; если функция активирована, то создаем скрытое gui
{
	Gui, +ToolWindow
	Gui, show, x9999 y9999 NA, EnableHotkeys
}
else
	Gui, destroy
return

~Esc::
If !Buy ; если функция неактивна
	return
Buy:=0
If Message ; если надо послать сообщение
{
	Send {enter}
	SendRaw Shop is deactivated
	Send {enter}
}
Gui, destroy
return




Buy(Item)
{
global
If !Buy ; ничего не делать, если функция отключена
	return
SetKeyDelay, 5
Send {%ShopKey%} ; выделить магазины
Sleep %d%
Send, % %Item%1
Sleep, %d%
Send, % %Item%2

If AutoBuyOff ; если после покупки одного предмета надо деактивировать функцию
{
	Buy:=0
	If Message
	{
		SetKeyDelay, -1
		Send {enter}
		SendRaw Shop is deactivated
		Send {enter}
	}
	Gui, destroy
}
If ReturnHeroSelect ; если надо вернуть фокус на героя
	Send, {F1 2}
}


Items:

;~ Список предметов.
;~ Предмет1 - количество нажатий TAB или SHIFT+TAB, что бы выделить нужный магазин
;~ Предмет2 - хоткей для покупки нужного предмета

;~ Ancient Of Wonders
Clarity1:=HealingSalve1:=Tango1:=Bottle1:=ObserverWards1:=SentryWards1:=Dust1Courier1:=TP1:=SmokeOfDeceit1:=""
Clarity1:="c"
HealingSalve2:="v"
Tango2:="s"
Bottle2:="b"
ObserverWards2:="o"
SentryWards2:="w"
Dust2:="d"
Courier2:="r"
TP2:="t"
SmokeOfDeceit2:="k"

;~ Arcane Sanctum
Eul1:=ForceStuff1:=Dagon1:=Necronomicon1:=Refresher1:="{Tab}"
Eul2:="t"
ForceStuff2:="f"
Dagon2:="d"
Necronomicon2:="n"
Refresher1:="r"

;~ Ancient Weaponry
Radiance1:=Buriza1:=Basher1:=Manta1:=Crystalys1:=Armlet1:=Lothar1:="{Tab 2}"
Radiance2:="r"
Buriza2:="b"
Basher2:="s"
Manta2:="m"
Crystalys2:="c"
Armlet2:="a"
Lothar2:="e"

;~ Supportive Vestments
Mekansm1:=Vladimir1:=FlyingCourier1:=Buckler1:=Pipe1:=Urn1:=Headdress1:=Medallion1:=Janggo1:="{Tab 3}"
Mekansm2:="m"
Vladimir2:="v"
FlyingCourier2:="f"
Buckler2:="b"
Pipe2:="p"
Urn2:="s"
Headdress2:="e"
Medallion2:="d"
Janggo2:="a"

;~ Enchanted Artifacts
Satanic1:=Mjollnir1:=Sange1:=Maelstorm1:=Desolator1:=Yasha1:=MOM1:=Diffusal1:="{Tab 4}"
Satanic2:="n"
Mjollnir2:="j"
Sange2:="s"
Maelstorm2:="m"
Desolator2:="r"
Yasha2:="y"
MOM2:="a"
Diffusal2:="d"

;~ Protectorate
Cuirass1:=Tarrasque1:=BKB1:=Shiva1:=Linken1:="{Tab 5}"
Cuirass2:="c"
Tarrasque2:="a"
BKB2:="b"
Shiva2:="s"
Linken2:="r"

;~ Cache of the Quel'thelan
GlovesOfHaste1:=MaskOfDeath1:=ROR1:=Dagger1:=Sobi1:=Boots1:=Gem1:=Cloak1:=Stick1:=TalismanOfEvasion1:=GhostScepter1:="+{Tab}"
GlovesOfHaste2:="g"
MaskOfDeath2:="m"
ROR2:="r"
Dagger2:="d"
Sobi2:="b"
Boots2:="s"
Gem2:="i"
Cloak2:="w"
Stick2:="c"
TalismanOfEvasion2:="e"
GhostScepter2:="p"

;~ Sena The Accessorizer
Gauntlets1:=Slippers1:=Mantle1:=Branch1:=Belt1:=Elvenskin1:=Robe1:=Circlet1:=OgreAxe1:=Alacrity1:=Staff1:=Orb1:="+{Tab 2}"
Gauntlets2:="s"
Slippers2:="a"
Mantle2:="i"
Branch2:="n"
Belt2:="b"
Elvenskin2:="e"
Robe2:="r"
Circlet2:="c"
OgreAxe2:="x"
Alacrity2:="y"
Staff2:="w"
Orb2:="o"


;~ Weapons Dealer
BladesOfAttack1:=BroadSword1:=QuarterStaff1:=Claymore1:=RingOfProtection1:=StoutShield1:=Javelin1:=Mithril1:=Chainmail1:=Helm1:=Platemail1:=Quelling1:="+{Tab 3}"
BladesOfAttack2:="a"
BroadSword2:="b"
QuarterStaff2:="q"
Claymore2:="c"
RingOfProtection2:="r"
StoutShield2:="s"
Javelin2:="j"
Mithril2:="m"
Chainmail2:="l"
Helm2:="h"
Platemail2:="p"
Quelling2:="u"

;~ Gateway Relics
BOT1:=SoulRing1:=Midas1:=Bracer1:=Wraith1:=Null1:=Wand1:="+{Tab 4}"
BOT2:="t"
SoulRing2:="s"
Midas2:="d"
Bracer2:="b"
Wraith2:="w"
Null2:="n"
Wand2:="m"

return

 

 

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


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

Поиграл инвокером и понял, что вместо ALT+KEY лучше всего использовать MBUTTON+KEY. Т.е. не надо левую руку выворачивать, что бы нажать хоткей. Зажимаем Mouse3 на мышке, нажимаем хоткей скила.

Добавил опцию UseEEE - нажимает EEE после комбинации, работает только если UseBook=1

В конце скрипта есть дополнительные хоткеи, которые можете создать сами. Я написал несколько для примера.

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

Добавил автоматическое отключение хоткеев при открытии чата в игре

 

;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НЕ РЕДАКТИРОВАТЬ
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~

#NoEnv
#SingleInstance, force
#MaxHotkeysPerInterval 1000
Process, Priority, , High
SetBatchLines, -1
SetKeyDelay, -1
VK_LIST = VK41,VK42,VK43,VK44,VK45,VK46,VK47,VK48,VK49,VK4A,VK4B,VK4C,VK4D,VK4E,VK4F,VK50,VK51,VK52,VK53,VK54,VK55,VK56,VK57,VK58,VK59,VK5A,VKC0
HK_LIST = A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,``


;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НАСТРОЙКИ (МОЖНО РЕДАКТИРОВАТЬ)
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~

; Этот хоткей зажимается вместе с магией, что бы активировать ее (Mbutton+T = SunStrike)
Modif:="Mbutton"

; Нажимать R в конце комбинации? 1=да, 0=нет
UseBook := 1

; Нажимать eee после книги, что бы получить больше урона? 1=да, 0=нет
UseEEE := 1


; ! = ALT,   + = SHIFT,   ^ = CTRL,   # = WIN

; Комбинации			Хоткеи комбинаций			Хоткеи
;						(используйте `` вместо `)	магий
SunStrike:= 	"eee"	,	Key_1 := "t"			; T
ChaosMeteor:= 	"eew"	,	Key_2 := "d"			; D
ForgeSpirit:= 	"eeq"	,	Key_3 := "f"			; F
ColdSnap:= 		"qqq"	,	Key_4 := "y"			; Y
GhostWalk:= 	"qqw"	,	Key_5 := "v"			; V
IceWall:= 		"qqe"	,	Key_6 := "g"			; G
Alacrity:= 		"wwe"	,	Key_7 := "z"			; Z
Tornado:= 		"wwq"	,	Key_8 := "x"			; X
EMP:= 			"www"	,	Key_9 := "c"			; C
DeafeningBlast:= "qwe"	,	Key_10:= "b"			; B
InvokeList:= 	"-il"	,	Key_IL:= "F9"			; -InvokeListr

;~ Свои хоткеи можно добавить в конце скрипта
;~ Они не должны дублировать существующие

;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НЕ РЕДАКТИРОВАТЬ
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~


Spell_List = SunStrike,ChaosMeteor,ForgeSpirit,ColdSnap,GhostWalk,IceWall,Alacrity,Tornado,EMP,DeafeningBlast

; Создание хоткеев
Hotkey, IfWinactive, ahk_class Warcraft III

Loop, parse, Spell_List, CSV
Hotkey, % Modif . " & " . VK(Key_%A_Index%), %A_LoopField%, On

Hotkey, % Key_IL, IL, On

return


; Выполнение комбинаций при нажатии хоткеев
SunStrike:
ChaosMeteor:
ForgeSpirit:
ColdSnap:
GhostWalk:
IceWall:
Alacrity:
Tornado:
EMP:
DeafeningBlast:
SendInput, % %A_ThisLabel% . (UseBook ? "r" : "") . ((UseBook & UseEEE) ? "eee" : "")
return

IL:
Send, {Enter}
SendRaw, -il
Send, {Enter}
return

VK(Param)
{
global
Hotkey:=RegExReplace(Param, "[\^\!\+\#]+(.*)", "$1")
If StrLen(Hotkey) > 1
	return Param
Loop, parse, HK_LIST, CSV
	If (Hotkey = A_LoopField)
	{
		Index := A_Index
		Loop, parse, VK_LIST, CSV
			If (A_Index = Index) 
				return % RegExReplace(Param, "(.*)" Hotkey, "$1" A_LoopField)
	}
}


#IfWinActive ahk_class Warcraft III

; клавиши активации чата
~*Enter::
~*Numpadenter::
suspend
suspend
If globalpause ; если стоит пауза
	Return
Suspend, % (paused:=!paused) ? "on" : "off"
Return

; клавиши отмены чата
~*$esc::
~*lbutton::
suspend
suspend
If globalpause or !paused ; если стоит пауза или не открыт чат
	Return
suspend, off
paused=0
return





;~;~;~;~;~;~;~;~;~;~
;~ Кастомные хоткеи
;~;~;~;~;~;~;~;~;~;~

;~ Инвентарь
VKC0::SendInput {Numpad7} ; ~
4::SendInput {Numpad1} ; 4
Space::SendInput {Numpad2} ; Пробел

;~ Выбор героя на TAB
TAB::SendInput {F1}

;~ -clear
F5::
SendInput {Enter}
SendRaw -clear
SendInput {Enter}
return

;~ Случайное нажатие ALT+Q будет заменяться на Q
!VK51::SendInput {VK51}

;~ F12 = ALT+Q, т.к. отключили ALT+Q, выходим на F12
F12::SendInput {!VK51}

;~ Прокачка скилов Левй WIN = O
LWIN::SendInput {VK4F}

;~ Пауза скрипта
F10::
Suspend
globalpause:=!globalpause
SoundPlay, *48
return

 

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


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

если не сложно, вставь опцию UseEEE в бинды для инвокера с альтом

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


Ссылка на сообщение
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НЕ РЕДАКТИРОВАТЬ
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~

#NoEnv
#SingleInstance, force
#MaxHotkeysPerInterval 1000
Process, Priority, , High
SetBatchLines, -1
SetKeyDelay, -1
VK_LIST = VK41,VK42,VK43,VK44,VK45,VK46,VK47,VK48,VK49,VK4A,VK4B,VK4C,VK4D,VK4E,VK4F,VK50,VK51,VK52,VK53,VK54,VK55,VK56,VK57,VK58,VK59,VK5A,VKC0
HK_LIST = A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,``
Spell_List = SunStrike,ChaosMeteor,ForgeSpirit,ColdSnap,GhostWalk,IceWall,Alacrity,Tornado,EMP,DeafeningBlast

; Комбинации
SunStrike = eee
ChaosMeteor = eew
ForgeSpirit = eeq
ColdSnap = qqq
GhostWalk = qqw
IceWall = qqe
Alacrity = wwe
Tornado = wwq
EMP = www
DeafeningBlast = qwe
InvokeList = -il


;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НАСТРОЙКИ (МОЖНО РЕДАКТИРОВАТЬ)
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~

; Нажимать R в конце комбинации? 1=да, 0=нет
UseBook := 1

; Нажимать EEE после комбо? 1=да, 0=нет (работает только, если UseBook=1)
UseEEE:=1

; Хоткеи для комбинаций
; ! = ALT,   + = SHIFT,   ^ = CTRL,   # = WIN
Key_1 := "!t"  ; SunStrike (T)
Key_2 := "!d"  ; ChaosMeteor (D)
Key_3 := "!f"  ; ForgeSpirit (F)
Key_4 := "!y"  ; ColdSnap (Y)
Key_5 := "!v"  ; GhostWalk (V)
Key_6 := "!g"  ; IceWall (G)
Key_7 := "!z"  ; Alacrity (Z)
Key_8 := "!x"  ; Tornado (X)
Key_9 := "!c"  ; EMP (C)
Key_10:= "!b"  ; DeafeningBlast (B)
Key_IL:= "!``" ; -InvokeListr


;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~
;~ ;~ ;~ НЕ РЕДАКТИРОВАТЬ
;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~ ;~

; Создание хоткеев
Loop, parse, Spell_List, CSV
   Hotkey, % VK(Key_%A_Index%), %A_LoopField%, On
Hotkey, % Key_IL, IL, On

return

; Выполнение комбинаций при нажатии хоткеев
SunStrike:
ChaosMeteor:
ForgeSpirit:
ColdSnap:
GhostWalk:
IceWall:
Alacrity:
Tornado:
EMP:
DeafeningBlast:
   SendPlay, % %A_ThisLabel% . (UseBook ? "r" : "") . ((UseBook & UseEEE) ? "eee" : "")
return

IL:
   Send, {Enter}
   SendRaw, -il
   Send, {Enter}
return

VK(Param) ; заменяет нужные хоткеи на виртуальные коды
{
   global
   Hotkey:=RegExReplace(Param, "[\^\!\+\#]+(.*)", "$1")
   If StrLen(Hotkey) > 1
      return Param
   Loop, parse, HK_LIST, CSV
      If (Hotkey = A_LoopField)
      {
         Index := A_Index
         Loop, parse, VK_LIST, CSV
            If (A_Index = Index)
               return % RegExReplace(Param, "(.*)" Hotkey, "$1" A_LoopField)
      }
}

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


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

Pomogi sdelat vse toje samoe na mouse4)

Что значит "тоже самое"? Конкретно пост указывай.

И что значит на mouse4? Mouse4 вместо альта?

 

В посте #25 есть код с Mbutton. Меняешь ее (переменная Modif) на Xbutton1 (или Xbutton2 смотря какая у тебя из них mouse4) и получаешь например торнадо на Xbutton1+X

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


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

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

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