1 (изменено: GRiNGA, 2024-03-26 21:47:58)

Тема: AHK: как убыстрить PixelGetColor?

Есть задача: отслеживать движение декораций на экране. Если движение прекратилось (персонаж уперся в барьер), то нажать прыжок.
Не нашёл ничего лучшего, чем сделать через отслеживание изменения цвета пикселя через определенное время.
Но заметил, что скрипт выполняется медленно.
То есть команда counter := counter +1 за аналогичное время выполняется 2000 раз, а PixelGetColor только 70 раз.

Как-то можно убыстрить PixelGetColor или выбрать для решения задачи другой аналог этой команды?

2

Re: AHK: как убыстрить PixelGetColor?

GRiNGA, добро пожаловать на форум! Ознакомьтесь, пожалуйста, с Правилами, отредактируйте свой пост. Обратите внимание на заглавные буквы в начале и точки в конце предложений.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: как убыстрить PixelGetColor?

teadrinker
Отредактировал.
А по существу темы сможете помочь?

4

Re: AHK: как убыстрить PixelGetColor?

Покажите свой код.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: как убыстрить PixelGetColor?

teadrinker


^F::
{
WatchCursor1
}

WatchCursor1()
{
	lastColor1 :=0
	lastColor2 :=0
	counter := 0

	time_to_run := 15000
	start_time := A_TickCount

	while (A_TickCount - start_time) < time_to_run{
		color1 := PixelGetColor(60, 627)
		color2 := PixelGetColor(82, 627)

		counter := counter + 1
		 ToolTip
		(
			counter, 200, 400
		)

		if (color1 = lastColor1 and color2 = lastColor2)  {
			Click 200, 200
			Sleep 40
			lastColor1 :=0
			lastColor2 :=0
		} else {
			lastColor1 := color1
			lastColor2 := color2
		}
	} Pause
}

6

Re: AHK: как убыстрить PixelGetColor?

Если вам нужно каждый раз получать пиксели с изменённого экрана, простым способом вряд ли получится ускорить. Я бы попробовал GDIp.ahk. Там можно получать пиксельные данные с ограниченной области экрана, возможно будет быстрее. К сожалению, готового кода под v2 нет. Смотрите функции Gdip_BitmapFromScreen() и Gdip_GetPixel(). Потребуется библиотека GDIp.ahk для AHK v2.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: как убыстрить PixelGetColor?

teadrinker
Благодарю!
Тоже нашел в других источниках отсылку к GDIP, буду разбираться.