Тема: AHK v2: Скрипт не эмулирует клавиши
Всем привет, дорогие пользователи форума! Я написал скрипт для Майнкрафта, и он работает, как ему вздумается, то есть не хочет эмулировать клавиши n, e, j, при этом Esc работает корректно. Я пытался сносить ахк, перезагружать скрипт и комп, но все бестолку. Вчера комп простоял буквально пол часа и все опять заработало, а сегодня - та же песня.
coords := [
[1768, 1240],
[1821, 1240],
[1876, 1240],
[1932, 1240],
[1987, 1240],
[2038, 1240],
[2093, 1240],
[2147, 1240]
]
global Toggle := false
global Stack := true
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Sleep(100)
G::ToggleScript()
ToggleScript() {
global Toggle
Toggle := !Toggle
if (Toggle) {
SetTimer(MainLoop, 100) ; Запускаем основной цикл с интервалом 100 мс
} else {
SetTimer(MainLoop, 0) ; Останавливаем основной цикл
}
}
AutoSell(){
; Активировать окно по его названию
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Sleep(500) ; Увеличенная задержка для надежности
global Stack
; Первая продажа инвиза
Loop 8
{
index := A_Index + 1
SendInput(index)
Sleep(50) ; Увеличенная задержка
SendInput("n")
Sleep(50) ; Увеличенная задержка
}
if !Toggle
return
; Инвиз в хотбар
SendInput("e")
Sleep(100) ; Увеличенная задержка
Send("+{Shift down}")
Click("left", "down")
MouseMove(1714, 1240)
Loop 8
{
coord := coords[A_Index]
MouseMove(coord[1], coord[2])
Sleep(100) ; Увеличенная задержка
}
Send("+{Shift up}")
Click("left", "up")
MouseMove(1718, 1050)
Sleep(100) ; Увеличенная задержка
Click("left")
Sleep(100) ; Увеличенная задержка
MouseMove(1714, 1240)
Sleep(100) ; Увеличенная задержка
; Зажать ПКМ
Click("right", "down")
Sleep(100) ; Увеличенная задержка
Loop 8
{
coord := coords[A_Index]
MouseMove(coord[1], coord[2])
Sleep(100) ; Увеличенная задержка
}
Click("right", "up")
Sleep(100) ; Увеличенная задержка
MouseMove(1718, 1050)
Sleep(100) ; Увеличенная задержка
Click("left")
SendInput("{Esc}")
; Повторная продажа
Loop 8
{
index := A_Index + 1
SendInput(index)
Sleep(50) ; Увеличенная задержка
SendInput("n")
Sleep(50) ; Увеличенная задержка
}
if !Toggle
return
; Предметы из хотбара обратно в инвентарь
SendInput("e")
Sleep(100) ; Увеличенная задержка
Send("+{Shift down}")
Click("left", "down")
MouseMove(1714, 1240)
Loop 8
{
coord := coords[A_Index]
MouseMove(coord[1], coord[2])
Sleep(100) ; Увеличенная задержка
}
Send("+{Shift up}")
Click("left", "up")
SendInput("{Esc}")
if !Toggle
return
; Инвиз в хотбар
SendInput("e")
Sleep(100) ; Увеличенная задержка
Send("+{Shift down}")
Click("left", "down")
MouseMove(1714, 1240)
Loop 8
{
index := A_Index + 1
SendInput(index)
Sleep(50) ; Увеличенная задержка
SendInput("n")
Sleep(50) ; Увеличенная задержка
}
Send("+{Shift up}")
Click("left", "up")
MouseMove(1718, 1050)
Sleep(100) ; Увеличенная задержка
Click("left")
Sleep(100) ; Увеличенная задержка
MouseMove(1714, 1240)
Sleep(100) ; Увеличенная задержка
; Зажать ПКМ
Click("right", "down")
Sleep(100) ; Увеличенная задержка
Loop 8
{
coord := coords[A_Index]
MouseMove(coord[1], coord[2])
Sleep(100) ; Увеличенная задержка
}
Click("right", "up")
Sleep(100) ; Увеличенная задержка
MouseMove(1718, 1050)
Sleep(100) ; Увеличенная задержка
Click("left")
SendInput("{Esc}")
if !Toggle
return
; Повторная продажа
Loop 8
{
index := A_Index + 1
SendInput(index)
Sleep(50) ; Увеличенная задержка
SendInput("n")
Sleep(50) ; Увеличенная задержка
}
if !Toggle
return
; Открытие AH и снятие предметов
Sleep(10000)
SendInput("j")
Sleep(500)
MouseMove(1704, 1072)
Sleep(100) ; Увеличенная задержка
Click("left")
MouseMove(1700, 797)
Sleep(500)
Send("+{Shift down}")
Sleep(50)
Click("left", "down")
MouseMove(1700, 796)
Sleep(10000)
Send("+{Shift up}")
Click("left", "up")
SendInput("{Esc}")
if !Toggle
return
; Инвиз в хотбар
SendInput("e")
Sleep(100) ; Увеличенная задержка
Send("+{Shift down}")
Click("left", "down")
MouseMove(1714, 1240)
Loop 8
{
coord := coords[A_Index]
MouseMove(coord[1], coord[2])
Sleep(100) ; Увеличенная задержка
}
Send("+{Shift up}")
Click("left", "up")
MouseMove(1718, 1050)
Sleep(100) ; Увеличенная задержка
Click("left")
Sleep(100) ; Увеличенная задержка
MouseMove(1714, 1240)
Sleep(100) ; Увеличенная задержка
; Зажать ПКМ
Click("right", "down")
Sleep(100) ; Увеличенная задержка
Loop 8
{
coord := coords[A_Index]
MouseMove(coord[1], coord[2])
Sleep(100) ; Увеличенная задержка
}
Click("right", "up")
Sleep(100) ; Увеличенная задержка
MouseMove(1718, 1050)
Sleep(100) ; Увеличенная задержка
Click("left")
SendInput("{Esc}")
Sleep(1000)
SendInput("e")
; Заданный цвет (в формате RGB)
Sleep(1000)
x := 1702
y := 1043
targetColorHex := "0xD16C48"
targetColor := targetColorHex + 0
GetPixelColor(x, y) {
return PixelGetColor(x, y)
}
pixelColor := GetPixelColor(x, y) + 0
Sleep(500)
if (pixelColor == targetColor) {
SendInput("{Esc}")
Sleep(500)
} else {
SendInput("{Esc}")
Sleep(500)
Stack := !Stack
}
}
MainLoop(){ ;ОСНОВНОЙ КОД СКРИПТА
global Stack
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(1980, 1050) ; Первый слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(2022, 1050) ; Второй слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(2070, 1050) ; Третий слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(2130, 1050) ; Четвертый слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(1980, 1100) ; Пятый слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(2022, 1100) ; Шестой слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(2070, 1100) ; Седьмой слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(2130, 1100) ; Восьмой слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(1980, 1160) ; Девятый слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(2022, 1160) ; Десятый слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(2070, 1160) ; Одиннадцатый слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Loop {
if (Stack) {
AutoSell()
} else {
break ; Выйти из цикла, если Stack равно false
}
if (!Toggle) {
break ; Выйти из цикла, если Toggle выключен
}
}
if !Toggle
return
Stack := !Stack
WinActivate("Minecraft* 1.16.5 - Сетевая игра (сторонний сервер)")
Send("e")
Sleep(200)
MouseMove(2130, 1160) ; Двенадцатый слот для замены
Click("left")
Sleep(100)
MouseMove(1718, 1050)
Click("left")
Sleep(100)
Send("{Esc}")
Pause
}
Код я писал с помошью ChatGPT, который в этих вопросах, мягко говоря, немного туповат. Кстати, при запуске скрипта, он в логах пишет, что он ОТРАВЛЯЕТ n, e и j. Что делать?