1 (изменено: Anton_8237, 2020-04-27 18:37:35)

Тема: AHK: Считывание цветов пикселя на проекте GTARP

Приветствую.
На днях столкнулся с такой проблемой: у меня ноутбук (не новый) и нашёл скрипт на ловлю рыбы (автоматическое нажатие num4 num6), работает он по следующему принципу: когда в игре высвечивается строка num6 делается скриншот после чего данный скриншот открывается на весь экран, предварительно запускается скрипт, стрелка мыши наводиться на определённые пиксели изображения, после чего нажимается num2 и считывается цвет пикселя и его координаты (а точнее цвет пикселя должен быть 0х000000). Затем в игре при появлении num6 если пиксель по определённым координатом определённого цвета, то нажимается num6 если нет (высвечивается num4), то нажимается num4, после выполнения вышеперечисленных операций запускаю игру, но в игре постоянно нажимается num4 выхожу из игры запускаю блокнот и открываю изображение, в блокноте пишет шестёрки тоесть как должно быть, если изображение убираю пишет четвёрки. Понял одно, если например блокнот не в полноэкранном режиме, то координаты смещаются, а также не считываются цвета в самой игре, подскажите, можно ли исправить?

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

; Запуск: Numpad1. Определить вашу точку: Numpad2. Перезагрузка: Numpad3. ЧТОБЫ ОСТАНОВИТЬ СКРИПТ В ПРОЦЕССЕ НУЖНО НАЖАТЬ NUMPAD3.

x_min := xpos := 675
x_max := 1000
y_min := ypos := 350
y_max := 1000

Numpad1::
Loop, 15
{
    xpos+=10
    if (xpos >= x_max) {
        xpos := x_min
        ypos+=10
    }
    if (ypos >= y_max)
        break
 
    PixelGetColor, color, 794, 592 ; <------ Координаты нужно заменить на свои
    if (color == 0x000000)
    {
    SendInput, {vk66 down}
    Sleep, 10 ;
    SendInput, {vk66 up}
    Sleep, 400 ; <------ Интервал времени нажатия Num-ов. (Добавляйте если ошибается скрипт, а так можно уменьшить)
    }
    else
    SendInput, {vk64 down}
    Sleep, 10 ;
    SendInput, {vk64 up}
    Sleep, 400 ; <------ Интервал времени нажатия Num-ов. (Добавляйте если ошибается скрипт, а так можно уменьшить)
}
return

Numpad2::
{
MouseGetPos, MouseX, MouseY
PixelGetColor, color, %MouseX%, %MouseY%
MsgBox,, Определение позиции курсора, Цвет в позиции курсора: %color% and %MouseX% %MouseY%`nЧтобы скрипт работал нужно добиться результата 0x000000 и ваши координаты, которые вставляются в PixelGetColor, color, КОР1, КОР2.`nТ.е, к примеру у вас выпало: Цвет в позиции курсора: 0x000000 and 1244 533, вы эти 1244 и 533 вставляете в PixelGetColor, color, КОР1, КОР2`nПолучается у вас: PixelGetColor, color, 1244, 533 
}
return

Numpad3::
{
reload
}
return