; Тема на форуме http://forum.script-coding.com/viewtopic.php?pid=11988
; Обсуждение http://forum.script-coding.com/viewtopic.php?id=435
#SingleInstance force ;force a single instance
;запретить запуск нескольких копий программы
#HotkeyInterval 0 ;disable the warning dialog if a key is held down
;устанавливает частоту активации горячих клавиш
#InstallKeybdHook ;Forces the unconditional installation of the keyboard hook
;Безусловно устанавливает обработчик клавиатурных прерываний
#InstallMouseHook ;
;Безусловно устанавливает обработчик прерываний для мыши
#UseHook On ;might increase responsiveness of hotkeys
;заставляет обработчик прерываний использовать все горячие клавиши
#MaxThreads 20 ;use 20 (the max) instead of 10 threads
;Задает максимальное количество одновременно исполняемых потоков
SetBatchLines, -1 ;makes the script run at max speed
;Определяет, как быстро будет выполняться скрипт (влияет на коэффициент загрузки центрального процессора)
SetKeyDelay , -1, -1 ;faster response (might be better with -1, 0)
;Задает задержку после каждого нажатия клавиши, посланного командой Send или ControlSend.
;======== Изменяет иконку в трее на иконку варкрафта ========
regread, war, HKEY_CURRENT_USER, Software\Blizzard Entertainment\Warcraft III, Program ; читаем из реестра путь до варкрафта
regread, war3path, HKEY_CURRENT_USER, Software\Blizzard Entertainment\Warcraft III, InstallPathX ; эта переменная будет использоваться дальше
;menu, tray, Icon, %War%, 1, 1 ; меняем иконку
GoSub, GenerateGui1RUS
;GoSub, HideGui1
GoSub, ReadConfig
GoSub, CheckErrorsAndLoadDefaults
GoSub, RefreshGui1
GoSub, SetHotkeys
GoSub, TrayInit
GoSub, autorunlabel
GoSub, CheckCorrectly
GuiControl, 1: Choose, TabGHP, |1
GoSub, CheckParameters
wasalttabed := 1 ; 0 - нужные клавиши ("[" и "]") зажаты, 1 - в альттабе
SetTimer, timer_Warcraft, 500 ; 500 мс = 0.5 секунды
; ===================== global Hotkeys ============================
^!o:: ; ctrl+alt+o - OFF
; определяем параметры запуска
GuiControlGet, WINDOWED
GuiControlGet, OPENGL
GuiControlGet, SWTNL
param = ""
If (WINDOWED = 1)
param := "-window"
If (OPENGL = 1)
param := "" param " -opengl"
If (SWTNL = 1)
param := "" param " -swtnl"
; прописываем оф гейтвеи
Run, %windir%\regedit.exe /s "%war3path%\off.reg"
GoSub, load_banlist
; проверить существование процесса
Process, Exist, war3.exe
; если Warcraft не запущен, то...
If ErrorLevel = 0
{
; запускаем официальный варкрафт
Run, %war3path%\Frozen Throne.exe %param%
}
Return
^!p:: ; ctrl+alt+p - PVPGN
; определяем параметры запуска
GuiControlGet, WINDOWED
GuiControlGet, OPENGL
GuiControlGet, SWTNL
param = ""
If (WINDOWED = 1)
param := "-window"
If (OPENGL = 1)
param := "" param " -opengl"
If (SWTNL = 1)
param := "" param " -swtnl"
; прописываем пвпгн гейтвеи
Run, %windir%\regedit.exe /s "%war3path%\pvpgn.reg"
GoSub, load_banlist
; проверить существование процесса
Process, Exist, war3.exe
If ErrorLevel = 0 ; если Warcraft не запущен, то...
{
; запускаем пвпгн варкрафт лаунчер
Run, %war3path%\w3l.exe %param%, %war3path%\
}
Return
load_banlist:
GuiControlGet, runbanlist
If (runbanlist = 1)
{
Process, Exist, WC3Banlist.exe ; проверить существование процесса banlist'a
If ErrorLevel = 0 ; если Banlist не запущен, то...
{
IfExist, %war3path%\WC3Banlist\WC3Banlist.exe
{
; запускаем banlist, его папка находится в папке варкрафта и называется WC3Banlist
Run, %war3path%\WC3Banlist\WC3Banlist.exe
; ждем пока он прогрузится (максимум 10 сек) Если банлист не используем, надо улучшить проверку чтобы не ждать 10 сек
WinWait, ahk_class TWC3Banlist_Main, ,10
; повторная проверка на то что банлист прогрузился
WinActivate, ahk_class TWC3Banlist_Main
; (10 сек)
WinWaitActive, ahk_class TWC3Banlist_Main, ,10
}
}
}
Return
TrayInit:
Menu, TRAY, Add,
Menu, TRAY, Add, Настройки, ShowGui1
Menu, TRAY, Default, Настройки
Return
timer_Warcraft:
; если варик активен
ifWinActive, ahk_class Warcraft III
{
; Дополнительная и очень эффективная проверка в чате или играем
if (wasalttabed = 1)
{
wasalttabed := 0
; Определяем раскладку
WinGet, WID, ID, A
WT := DllCall("GetWindowThreadProcessId", "UInt", WID, "UInt", 0)
LID := DllCall("GetKeyboardLayout", "UInt", WT)
Russian := LID = 68748313 ? 1 : 0
; Если раскладка - Русская
if Russian
{
if (showhp1 = 1)
Send, {х Down}
if (showhp2 = 1)
Send, {ъ Down}
}
else
{
if (showhp1 = 1)
Send, {[ Down}
if (showhp2 = 1)
Send, {] Down}
}
}
}
else
{
wasalttabed := 1
}
Return ; end of timer_Warcraft
; =============================================================
; ======================== ini SECTION ========================
; =============================================================
ReadConfig:
Gui, 1:Submit, NoHide
;showhp1 = 1
;showhp2 = 1
IniRead, showhp1, %A_ScriptDir%\kahk.ini, General, showhp1
IniRead, showhp2, %A_ScriptDir%\kahk.ini, General, showhp2
IniRead, autorun, %A_ScriptDir%\kahk.ini, General, autorun
IniRead, runbanlist, %A_ScriptDir%\kahk.ini, General, runbanlist
IniRead, WINDOWED, %A_ScriptDir%\kahk.ini, General, WINDOWED
IniRead, OPENGL, %A_ScriptDir%\kahk.ini, General, OPENGL
IniRead, SWTNL, %A_ScriptDir%\kahk.ini, General, SWTNL
IniRead, usexmouse1, %A_ScriptDir%\kahk.ini, Binds, usexmouse1
IniRead, usexmouse1A, %A_ScriptDir%\kahk.ini, Binds, usexmouse1A
IniRead, usexmouse1C, %A_ScriptDir%\kahk.ini, Binds, usexmouse1C
IniRead, usexmouse1S, %A_ScriptDir%\kahk.ini, Binds, usexmouse1S
IniRead, usexmouse2, %A_ScriptDir%\kahk.ini, Binds, usexmouse2
IniRead, usexmouse2A, %A_ScriptDir%\kahk.ini, Binds, usexmouse2A
IniRead, usexmouse2C, %A_ScriptDir%\kahk.ini, Binds, usexmouse2C
IniRead, usexmouse2S, %A_ScriptDir%\kahk.ini, Binds, usexmouse2S
IniRead, usescrollup, %A_ScriptDir%\kahk.ini, Binds, usescrollup
IniRead, usescrollupS, %A_ScriptDir%\kahk.ini, Binds, usescrollupS
IniRead, usescrollupA, %A_ScriptDir%\kahk.ini, Binds, usescrollupA
IniRead, usescrollupC, %A_ScriptDir%\kahk.ini, Binds, usescrollupC
IniRead, usescrolldown, %A_ScriptDir%\kahk.ini, Binds, usescrolldown
IniRead, usescrolldownS, %A_ScriptDir%\kahk.ini, Binds, usescrolldownS
IniRead, usescrolldownA, %A_ScriptDir%\kahk.ini, Binds, usescrolldownA
IniRead, usescrolldownC, %A_ScriptDir%\kahk.ini, Binds, usescrolldownC
IniRead, usemouse3, %A_ScriptDir%\kahk.ini, Binds, usemouse3
IniRead, usemouse3S, %A_ScriptDir%\kahk.ini, Binds, usemouse3S
IniRead, usemouse3A, %A_ScriptDir%\kahk.ini, Binds, usemouse3A
IniRead, usemouse3C, %A_ScriptDir%\kahk.ini, Binds, usemouse3C
IniRead, keyxmouse1, %A_ScriptDir%\kahk.ini, Binds, keyxmouse1
IniRead, keyxmouse2, %A_ScriptDir%\kahk.ini, Binds, keyxmouse2
IniRead, keyscrollup, %A_ScriptDir%\kahk.ini, Binds, keyscrollup
IniRead, keyscrolldown, %A_ScriptDir%\kahk.ini, Binds, keyscrolldown
IniRead, keymouse3, %A_ScriptDir%\kahk.ini, Binds, keymouse3
IniRead, hkoff, %A_ScriptDir%\kahk.ini, Options, hkoff
IniRead, hkpvpgn, %A_ScriptDir%\kahk.ini, Options, hkpvpgn
Return
CheckErrorsAndLoadDefaults:
if showhp1 = ERROR
showhp1 := 1
if showhp2 = ERROR
showhp2 := 1
if hkoff = ERROR
hkoff := "^!S"
if hkpvpgn = ERROR
hkpvpgn := "^!W"
if usexmouse1 = ERROR
usexmouse1 := 1
if usexmouse1A = ERROR
usexmouse1A := 0
if usexmouse1C = ERROR
usexmouse1C := 0
if usexmouse1S = ERROR
usexmouse1S := 0
if usexmouse2 = ERROR
usexmouse2 := 1
if usexmouse2A = ERROR
usexmouse2A := 0
if usexmouse2C = ERROR
usexmouse2C := 0
if usexmouse2S = ERROR
usexmouse2S := 0
if usescrollup = ERROR
usescrollup := 1
if usescrollupS = ERROR
usescrollupS := 0
if usescrollupA = ERROR
usescrollupA := 0
if usescrollupC = ERROR
usescrollupC := 0
if usescrolldown = ERROR
usescrolldown := 1
if usescrolldownS = ERROR
usescrolldownS := 0
if usescrolldownA = ERROR
usescrolldownA := 0
if usescrolldownC = ERROR
usescrolldownC := 0
if usemouse3 = ERROR
usemouse3 := 1
if usemouse3S = ERROR
usemouse3S := 0
if usemouse3A = ERROR
usemouse3A := 0
if usemouse3C = ERROR
usemouse3C := 0
if keyxmouse1 = ERROR
keyxmouse1 := "Numpad4"
if keyxmouse2 = ERROR
keyxmouse2 := "Numpad7"
if keyscrollup = ERROR
keyscrollup := "Numpad5"
if keyscrolldown = ERROR
keyscrolldown := "Numpad2"
if keymouse3 = ERROR
keymouse3 := "Numpad8"
if autorun = ERROR
autorun := 1
if runbanlist = ERROR
runbanlist := 1
if WINDOWED = ERROR
WINDOWED := 0
if OPENGL = ERROR
OPENGL := 0
if SWTNL = ERROR
SWTNL := 0
Return
SaveConfig:
Gui, 1:Submit, NoHide
IniWrite, %showhp1%, %A_ScriptDir%\kahk.ini, General, showhp1
IniWrite, %showhp2%, %A_ScriptDir%\kahk.ini, General, showhp2
IniWrite, %autorun%, %A_ScriptDir%\kahk.ini, General, autorun
IniWrite, %runbanlist%, %A_ScriptDir%\kahk.ini, General, runbanlist
IniWrite, %WINDOWED%, %A_ScriptDir%\kahk.ini, General, WINDOWED
IniWrite, %OPENGL%, %A_ScriptDir%\kahk.ini, General, OPENGL
IniWrite, %SWTNL%, %A_ScriptDir%\kahk.ini, General, SWTNL
IniWrite, %usexmouse1%, %A_ScriptDir%\kahk.ini, Binds, usexmouse1
IniWrite, %usexmouse1A%, %A_ScriptDir%\kahk.ini, Binds, usexmouse1A
IniWrite, %usexmouse1C%, %A_ScriptDir%\kahk.ini, Binds, usexmouse1C
IniWrite, %usexmouse1S%, %A_ScriptDir%\kahk.ini, Binds, usexmouse1S
IniWrite, %usexmouse2%, %A_ScriptDir%\kahk.ini, Binds, usexmouse2
IniWrite, %usexmouse2A%, %A_ScriptDir%\kahk.ini, Binds, usexmouse2A
IniWrite, %usexmouse2C%, %A_ScriptDir%\kahk.ini, Binds, usexmouse2C
IniWrite, %usexmouse2S%, %A_ScriptDir%\kahk.ini, Binds, usexmouse2S
IniWrite, %usescrollup%, %A_ScriptDir%\kahk.ini, Binds, usescrollup
IniWrite, %usescrollupS%, %A_ScriptDir%\kahk.ini, Binds, usescrollupS
IniWrite, %usescrollupA%, %A_ScriptDir%\kahk.ini, Binds, usescrollupA
IniWrite, %usescrollupC%, %A_ScriptDir%\kahk.ini, Binds, usescrollupC
IniWrite, %usescrolldown%, %A_ScriptDir%\kahk.ini, Binds, usescrolldown
IniWrite, %usescrolldownS%, %A_ScriptDir%\kahk.ini, Binds, usescrolldownS
IniWrite, %usescrolldownA%, %A_ScriptDir%\kahk.ini, Binds, usescrolldownA
IniWrite, %usescrolldownC%, %A_ScriptDir%\kahk.ini, Binds, usescrolldownC
IniWrite, %usemouse3%, %A_ScriptDir%\kahk.ini, Binds, usemouse3
IniWrite, %usemouse3S%, %A_ScriptDir%\kahk.ini, Binds, usemouse3S
IniWrite, %usemouse3A%, %A_ScriptDir%\kahk.ini, Binds, usemouse3A
IniWrite, %usemouse3C%, %A_ScriptDir%\kahk.ini, Binds, usemouse3C
IniWrite, %keyxmouse1%, %A_ScriptDir%\kahk.ini, Binds, keyxmouse1
IniWrite, %keyxmouse2%, %A_ScriptDir%\kahk.ini, Binds, keyxmouse2
IniWrite, %keyscrollup%, %A_ScriptDir%\kahk.ini, Binds, keyscrollup
IniWrite, %keyscrolldown%, %A_ScriptDir%\kahk.ini, Binds, keyscrolldown
IniWrite, %keymouse3%, %A_ScriptDir%\kahk.ini, Binds, keymouse3
IniWrite, %hkoff%, %A_ScriptDir%\kahk.ini, Options, hkoff
IniWrite, %hkpvpgn%, %A_ScriptDir%\kahk.ini, Options, hkpvpgn
GoSub, SetHotkeys
GoSub, autorunlabel
Return
; =============================================================
; ======================== Gui SECTION ========================
; =============================================================
GenerateGui1RUS:
Gui, 1:Add, Button, x6 y347 w80 h30 gSaveConfig, Сохранить
Gui, 1:Add, Button, x96 y347 w150 h30 gHideGui1, Свернуть
Gui, 1:Add, Button, x256 y347 w60 h30 gExitSub, Закрыть
Gui, 1:Add, Tab, x0 y0 w330 h390 vTabGHP, Основные|Бинды|Пути
Gui, 1:Tab, Основные
Gui, 1:Add, GroupBox, x6 y27 w310 h50 , Показывать здоровье
Gui, 1:Add, CheckBox, x16 y47 w140 h20 vshowhp1 gshowhp1label, союзников
Gui, 1:Add, CheckBox, x166 y47 w140 h20 vshowhp2 gshowhp2label, врагов
Gui, 1:Add, CheckBox, x6 y87 w310 h20 vautorun gautorunlabel, Автозапуск программы
Gui, 1:Add, CheckBox, x6 y117 w310 h20 vrunbanlist, Запускать банлист
Gui, 1:Add, GroupBox, x6 y147 w310 h120 , Ключи запуска:
Gui, 1:Add, CheckBox, x16 y167 w260 h20 vWINDOWED, Windowed Mode
Gui, 1:Add, CheckBox, x16 y197 w260 h20 vOPENGL, OpenGL Video Mode
Gui, 1:Add, CheckBox, x16 y227 w260 h20 vSWTNL, Software Transform and Lighting Video Mode
Gui, 1:Add, Button, x6 y277 w310 h20 gCheckCorrectly, Проверить пути
Gui, 1:Add, Button, x6 y297 w310 h20 gGenerateRegTFT, Сгенерировать файл реестра под официалку
Gui, 1:Add, Button, x6 y317 w310 h20 gGenerateRegPVPGN, Сгенерировать файл реестра под ПВПГН
Gui, 1:Tab, Бинды
Gui, 1:Add, GroupBox, x117 y27 w30 h167 +Center, alt
Gui, 1:Add, GroupBox, x147 y27 w30 h167 +Center, shift
Gui, 1:Add, GroupBox, x177 y27 w30 h167 +Center, ctrl
Gui, 1:Add, CheckBox, x6 y47 w110 h20 vusexmouse1 gSetHotkeys, X mouse button 1
Gui, 1:Add, CheckBox, x156 y47 w15 h20 vusexmouse1S gSetHotkeys,
Gui, 1:Add, CheckBox, x186 y47 w15 h20 vusexmouse1C gSetHotkeys,
Gui, 1:Add, CheckBox, x126 y47 w15 h20 vusexmouse1A gSetHotkeys,
Gui, 1:Add, Text, x216 y47 w60 h20 vkeyxmouse1 gSetHotkeys,
Gui, 1:Add, Button, x286 y47 w40 h20 gSetXMouse1, опр.
Gui, 1:Add, CheckBox, x6 y77 w110 h20 vusexmouse2 gSetHotkeys, X mouse button 2
Gui, 1:Add, CheckBox, x156 y77 w15 h20 vusexmouse2S gSetHotkeys,
Gui, 1:Add, CheckBox, x186 y77 w15 h20 vusexmouse2C gSetHotkeys,
Gui, 1:Add, CheckBox, x126 y77 w15 h20 vusexmouse2A gSetHotkeys,
Gui, 1:Add, Text, x216 y77 w60 h20 vkeyxmouse2 gSetHotkeys,
Gui, 1:Add, Button, x286 y77 w40 h20 gSetXMouse2, опр.
Gui, 1:Add, CheckBox, x6 y107 w110 h20 vusescrollup gSetHotkeys, Колесо вверх
Gui, 1:Add, CheckBox, x156 y107 w15 h20 vusescrollupS gSetHotkeys,
Gui, 1:Add, CheckBox, x186 y107 w15 h20 vusescrollupC gSetHotkeys,
Gui, 1:Add, CheckBox, x126 y107 w15 h20 vusescrollupA gSetHotkeys,
Gui, 1:Add, Text, x216 y107 w60 h20 vkeyscrollup gSetHotkeys,
Gui, 1:Add, Button, x286 y107 w40 h20 gSetScrollUp, опр.
Gui, 1:Add, CheckBox, x6 y137 w110 h20 vusescrolldown gSetHotkeys, Колесо вниз
Gui, 1:Add, CheckBox, x156 y137 w15 h20 vusescrolldownS gSetHotkeys,
Gui, 1:Add, CheckBox, x186 y137 w15 h20 vusescrolldownC gSetHotkeys,
Gui, 1:Add, CheckBox, x126 y137 w15 h20 vusescrolldownA gSetHotkeys,
Gui, 1:Add, Text, x216 y137 w60 h20 vkeyscrolldown gSetHotkeys,
Gui, 1:Add, Button, x286 y137 w40 h20 gSetScrollDown, опр.
Gui, 1:Add, CheckBox, x6 y167 w110 h20 vusemouse3 gSetHotkeys, Mid mouse button
Gui, 1:Add, CheckBox, x156 y167 w15 h20 vusemouse3S gSetHotkeys,
Gui, 1:Add, CheckBox, x186 y167 w15 h20 vusemouse3C gSetHotkeys,
Gui, 1:Add, CheckBox, x126 y167 w15 h20 vusemouse3A gSetHotkeys,
Gui, 1:Add, Text, x216 y167 w60 h20 vkeymouse3 gSetHotkeys,
Gui, 1:Add, Button, x286 y167 w40 h20 gSetMouse3, опр.
Gui, 1:Add, Text, x6 y207 w310 h20 , Клавиша запуска оф. варкрафта: Ctrl+Alt+O
Gui, 1:Add, Text, x6 y227 w310 h20 , Клавиша запуска не-оф. варкрафта: Ctrl+Alt+P
Gui, 1:Tab, Пути
Gui, 1:Add, Button, x46 y27 w230 h20 gCheckCorrectly, Обновить
Gui, 1:Add, Text, x6 y57 w310 h30 vTextBanlistCheck,
Gui, 1:Add, Text, x6 y97 w310 h30 vTextTFTCheck,
Gui, 1:Add, Text, x6 y137 w310 h30 vTextPVPGNCheck,
Gui, 1:Add, Text, x6 y177 w310 h30 vTextRegTFTCheck,
Gui, 1:Add, Text, x6 y217 w310 h30 vTextRegPVPGNCheck,
Gui, 1:Show, x181 y111 h390 w330, Kiber's autohotkey script for Warcraft 3
Return
; refreshes Gui. Kiber is a noob, and he does not know other methods
RefreshGui1:
GuiControl, 1: , showhp1, %showhp1%
GuiControl, 1: , showhp2, %showhp2%
GuiControl, 1: , hkoff, %hkoff%
GuiControl, 1: , hkpvpgn, %hkpvpgn%
GuiControl, 1: , autorun, %autorun%
GuiControl, 1: , runbanlist, %runbanlist%
GuiControl, 1: , WINDOWED, %WINDOWED%
GuiControl, 1: , OPENGL, %OPENGL%
GuiControl, 1: , SWTNL, %SWTNL%
GuiControl, 1: , TextBanlistCheck, %TextBanlistCheck%
GuiControl, 1: , TextTFTCheck, %TextTFTCheck%
GuiControl, 1: , TextPVPGNCheck, %TextPVPGNCheck%
GuiControl, 1: , TextRegTFTCheck, %TextRegTFTCheck%
GuiControl, 1: , TextRegPVPGNCheck, %TextRegPVPGNCheck%
GoSub, RefreshGui1XMouse1
GoSub, RefreshGui1XMouse2
GoSub, RefreshGui1ScrollUP
GoSub, RefreshGui1ScrollDown
GoSub, RefreshGui1Mouse3
Gui, 1:Submit, NoHide
Return
RefreshGui1XMouse1:
GuiControl, 1: , usexmouse1, %usexmouse1%
GuiControl, 1: , usexmouse1A, %usexmouse1A%
GuiControl, 1: , usexmouse1C, %usexmouse1C%
GuiControl, 1: , usexmouse1S, %usexmouse1S%
GuiControl, 1: , keyxmouse1, %keyxmouse1%
Return
RefreshGui1XMouse2:
GuiControl, 1: , usexmouse2, %usexmouse2%
GuiControl, 1: , usexmouse2A, %usexmouse2A%
GuiControl, 1: , usexmouse2C, %usexmouse2C%
GuiControl, 1: , usexmouse2S, %usexmouse2S%
GuiControl, 1: , keyxmouse2, %keyxmouse2%
Return
RefreshGui1ScrollUP:
GuiControl, 1: , usescrollup, %usescrollup%
GuiControl, 1: , usescrollupS, %usescrollupS%
GuiControl, 1: , usescrollupA, %usescrollupA%
GuiControl, 1: , usescrollupC, %usescrollupC%
GuiControl, 1: , keyscrollup, %keyscrollup%
Return
RefreshGui1ScrollDown:
GuiControl, 1: , usescrolldown, %usescrolldown%
GuiControl, 1: , usescrolldownS, %usescrolldownS%
GuiControl, 1: , usescrolldownA, %usescrolldownA%
GuiControl, 1: , usescrolldownC, %usescrolldownC%
GuiControl, 1: , keyscrolldown, %keyscrolldown%
Return
RefreshGui1Mouse3:
GuiControl, 1: , usemouse3, %usemouse3%
GuiControl, 1: , usemouse3S, %usemouse3S%
GuiControl, 1: , usemouse3A, %usemouse3A%
GuiControl, 1: , usemouse3C, %usemouse3C%
GuiControl, 1: , keymouse3, %keymouse3%
Return
ShowGui1:
Gui, 1:Show
Return
GuiClose:
Gui, 1:Hide
Return
GuiEscape:
Gui, 1:Hide
Return
HideGui1:
Gui, 1:Hide
Return
SetXMouse1:
tmpHotkey = keyxmouse1
tmpHotkeyS = usexmouse1S
tmpHotkeyC = usexmouse1C
tmpHotkeyA = usexmouse1A
GoSub, ChangeHotKey
Return
SetXMouse2:
tmpHotkey = keyxmouse2
tmpHotkeyS = usexmouse2S
tmpHotkeyC = usexmouse2C
tmpHotkeyA = usexmouse2A
GoSub, ChangeHotKey
Return
SetScrollUp:
tmpHotkey = keyscrollup
tmpHotkeyS = usescrollupS
tmpHotkeyC = usescrollupC
tmpHotkeyA = usescrollupA
GoSub, ChangeHotKey
Return
SetScrollDown:
tmpHotkey = keyscrolldown
tmpHotkeyS = usescrolldownS
tmpHotkeyC = usescrolldownC
tmpHotkeyA = usescrolldownA
GoSub, ChangeHotKey
Return
SetMouse3:
tmpHotkey = keymouse3
tmpHotkeyS = usemouse3S
tmpHotkeyC = usemouse3C
tmpHotkeyA = usemouse3A
GoSub, ChangeHotKey
Return
ChangeHotKey:
Gui, 1:Hide
Gui, 2:Add, Hotkey, x6 y7 w130 h20 vtmpNeedToBeParsed,
Gui, 2:Add, Button, x6 y27 w130 h30 gChangeHotkeyClose, Готово
Gui, 2:Show, h63 w142, Enter hotkey
Return
ChangeHotkeyClose:
; ^ = ctrl + = shift ! = alt
; очередность: shift, ctrl, alt
GuiControlGet, tmpNeedToBeParsed
IfInString, tmpNeedToBeParsed, +
{
%tmpHotkeyS% = 1
GuiControl, 1: , %tmpHotkeyS%, 1
}
else
{
%tmpHotkeyS% = 0
GuiControl, 1: , %tmpHotkeyS%, 0
}
IfInString, tmpNeedToBeParsed, ^
{
%tmpHotkeyC% = 1
GuiControl, 1: , %tmpHotkeyC%, 1
}
else
{
%tmpHotkeyC% = 0
GuiControl, 1: , %tmpHotkeyC%, 0
}
IfInString, tmpNeedToBeParsed, !
{
%tmpHotkeyA% = 1
GuiControl, 1: , %tmpHotkeyA%, 1
}
else
{
%tmpHotkeyA% = 0
GuiControl, 1: , %tmpHotkeyA%, 0
}
num := 1+%tmpHotkeyS%+%tmpHotkeyC%+%tmpHotkeyA%
%tmpHotkey% := SubStr(tmpNeedToBeParsed, num)
TMP := SubStr(tmpNeedToBeParsed, num)
GuiControl, 1: , %tmpHotkey%, %TMP%
Gui, 1:Submit, NoHide
Gui, 1:Show
GuiControl, 1: Choose, TabGHP, |2
GoSub, SetHotkeys
Gui, 2:Destroy
Return
; =============================================================
; ======================== Main SECTION ======================
; =============================================================
SetHotkeys:
Gui, 1:Submit, NoHide
StringLower, keyxmouse1, keyxmouse1
StringLower, keyxmouse2, keyxmouse2
StringLower, keyscrollup, keyscrollup
StringLower, keyscrolldown, keyscrolldown
StringLower, keymouse3, keymouse3
keyxmouse1ToPush := "{" keyxmouse1 "}"
if (usexmouse1A = 1)
keyxmouse1ToPush := "{Alt Down}" keyxmouse1ToPush "{Alt Up}"
if (usexmouse1C = 1)
keyxmouse1ToPush := "{Control Down}" keyxmouse1ToPush "{Control Up}"
if (usexmouse1S = 1)
keyxmouse1ToPush := "{Shift Down}" keyxmouse1ToPush "{Shift Up}"
keyxmouse2ToPush := "{" keyxmouse2 "}"
if (usexmouse2A = 1)
keyxmouse2ToPush := "{Alt Down}" keyxmouse2ToPush "{Alt Up}"
if (usexmouse2C = 1)
keyxmouse2ToPush := "{Control Down}" keyxmouse2ToPush "{Control Up}"
if (usexmouse2S = 1)
keyxmouse2ToPush := "{Shift Down}" keyxmouse2ToPush "{Shift Up}"
keyscrollupToPush := "{" keyscrollup "}"
if (usescrollupA = 1)
keyscrollupToPush := "{Alt Down}" keyscrollupToPush "{Alt Up}"
if (usescrollupC = 1)
keyscrollupToPush := "{Control Down}" keyscrollupToPush "{Control Up}"
if (usescrollupS = 1)
keyscrollupToPush := "{Shift Down}" keyscrollupToPush "{Shift Up}"
keyscrolldownToPush := "{" keyscrolldown "}"
if (usescrolldownA = 1)
keyscrolldownToPush := "{Alt Down}" keyscrolldownToPush "{Alt Up}"
if (usescrolldownC = 1)
keyscrolldownToPush := "{Control Down}" keyscrolldownToPush "{Control Up}"
if (usescrolldownS = 1)
keyscrolldownToPush := "{Shift Down}" keyscrolldownToPush "{Shift Up}"
keymouse3ToPush := "{" keymouse3 "}"
if (usemouse3A = 1)
keymouse3ToPush := "{Alt Down}" keymouse3ToPush "{Alt Up}"
if (usemouse3C = 1)
keymouse3ToPush := "{Control Down}" keymouse3ToPush "{Control Up}"
if (usemouse3S = 1)
keymouse3ToPush := "{Shift Down}" keymouse3ToPush "{Shift Up}"
; MsgBox, %keyxmouse1ToPush%
; MsgBox, %keyxmouse2ToPush%
; MsgBox, %keyscrollupToPush%
; MsgBox, %keyscrolldownToPush%
; MsgBox, %keymouse3ToPush%
#IfWinActive, ahk_class Warcraft III
{
XButton1::
if (usexmouse1 = 1)
{
SendPlay {Blind}%keyxmouse1ToPush%
}
else
{
Send {XButton1}
}
Return
XButton2::
if (usexmouse2 = 1)
{
SendPlay {Blind}%keyxmouse2ToPush%
}
else
{
Send {XButton2}
}
Return
MButton::
if (usemouse3 = 1)
{
SendPlay {Blind}%keymouse3ToPush%
}
else
{
Send {MButton}
}
Return
WheelUp::
if (usescrollup = 1)
{
SendPlay {Blind}%keyscrollupToPush%
}
else
{
Send {WheelUp}
}
Return
WheelDown::
if (usescrolldown = 1)
{
SendPlay {Blind}%keyscrolldownToPush%
}
else
{
Send {WheelDown}
}
Return
if (showhp1 = 1)
{
*[::
; Определяем раскладку
WinGet, WID, ID, A
WT := DllCall("GetWindowThreadProcessId", "UInt", WID, "UInt", 0)
LID := DllCall("GetKeyboardLayout", "UInt", WT)
Russian := LID = 68748313 ? 1 : 0
; Если раскладка - Русская
if Russian
{
Send, {х Up}
GetKeyState, state, Shift
if state = D
Send, +{х Down}
else
Send, {х Down}
}
else
{
Send, {[ Up}
GetKeyState, state, Shift
if state = D
Send, +{[ Down}
else
Send, {[ Down}
}
Return
}
if (showhp2 = 1)
{
*]::
WinGet, WID, ID, A
WT := DllCall("GetWindowThreadProcessId", "UInt", WID, "UInt", 0)
LID := DllCall("GetKeyboardLayout", "UInt", WT)
Russian := LID = 68748313 ? 1 : 0
if Russian
{
Send, {ъ Up}
GetKeyState, state, Shift
if state = D
Send, +{ъ Down}
else
Send, {ъ Down}
}
else
{
Send, {] Up}
GetKeyState, state, Shift
if state = D
Send, +{] Down}
else
Send, {] Down}
}
Return
}
}
Return
CheckCorrectly:
TextBanlistCheck := "Путь к банлисту найден"
TextTFTCheck := "Путь к Frozen Throne.exe найден"
TextPVPGNCheck := "Путь к w3l.exe найден"
TextRegTFTCheck := "Файл реестра off.reg найден"
TextRegPVPGNCheck := "Файл реестра pvpgn.reg найден"
GuiControl, 1: -c +cGreen, TextBanlistCheck,
GuiControl, 1: -c +cGreen, TextTFTCheck,
GuiControl, 1: -c +cGreen, TextPVPGNCheck,
GuiControl, 1: -c +cGreen, TextRegTFTCheck,
GuiControl, 1: -c +cGreen, TextRegPVPGNCheck,
IfNotExist, %war3path%\WC3Banlist\WC3Banlist.exe
{
TextBanlistCheck := "Не обнаружен Банлист. Папка банлиста должна находиться в папке варкрафта (" war3path ") и называться WC3Banlist"
GuiControl, 1: +cRed, TextBanlistCheck,
}
IfNotExist, %war3path%+\Frozen Throne.exe
{
TextTFTCheck := "Не обнаружен Frozen Throne.exe по адресу (" war3path "). Возможно, требуется переустановить игру"
GuiControl, 1: +cRed, TextTFTCheck,
}
IfNotExist, %war3path%\w3l.exe
{
TextPVPGNCheck := "Не обнаружен PVPGN-лаунчер w3l.exe по адресу (" war3path "). Вероятно, он вам не нужен."
GuiControl, 1: +cRed, TextPVPGNCheck,
}
IfNotExist, %war3path%\off.reg
{
TextRegTFTCheck := "Не обнаружен файл реестра off.reg по адресу (" war3path "). Вероятно, он вам не нужен."
GuiControl, 1: +cRed, TextRegTFTCheck,
}
IfNotExist, %war3path%\pvpgn.reg
{
TextRegPVPGNCheck := "Не обнаружен файл реестра pvpgn.reg по адресу (" war3path "). Вероятно, он вам не нужен."
GuiControl, 1: +cRed, TextRegPVPGNCheck,
}
GoSub, RefreshGui1
GoSub, ShowGui1
GuiControl, 1: Choose, TabGHP, |3
Return
GenerateRegTFT:
Run, reg export "HKCU\Software\Blizzard Entertainment\Warcraft III" %war3path%\off.reg
MsgBox, 0,, Файл сгенерирован
GoSub, CheckCorrectly
Return
GenerateRegPVPGN:
Run, reg export "HKCU\Software\Blizzard Entertainment\Warcraft III" %war3path%\pvpgn.reg
MsgBox, 0,, Файл сгенерирован
GoSub, CheckCorrectly
Return
showhp1label:
Gosub, SetHotkeys
Return
showhp2label:
Gosub, SetHotkeys
Return
autorunlabel:
GuiControlGet, autorun
if (autorun = 1)
{
RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Run, KAHK, %A_ScriptFullPath% /hide
}
else
{
RegDelete, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Run, KAHK
}
Return
CheckParameters:
Loop %0%
{
; For each parameter (or file dropped onto a script):
Param := %A_Index%
if Param = /hide
{
GoSub, HideGui1
}
}
Return
ExitSub:
; MsgBox, 4,, Сохранить настройки?
; IfMsgBox Yes
GoSub, SaveConfig
ExitApp ; Единственная возможность убийства для скрипта OnExit - использовать ExitApp