Что нового

Слежение за цветом в области.

shift72

Новичок
Сообщения
86
Репутация
2
Здравствуйте. Начнем с того что я правда искал на форуме но ничего не нашел.
Суть такова: в игре слева горизонтальная шкала красного цвета. При нанесении урона персонажу полоса начинает убывать в низ. Заполненная шкала не прозрачная. Пустая прозрачная.
Задача как только шкала станет на половину пустой нужно чтоб бот жмакал клавишу на клавиатуре. Например "1"

Я так понимаю реализовываться это будет через пиксел серч. Программу будет следить за красным пикселем. И как только заметит его отсутствие начнет судорожно спамить клавишей 1.

Как это реализовать?

Пытался пользоваться библиотекой PixelChecksum, ничего не получилось. Разозлился и плюнул.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Примерно так:
Код:
While 1
   $color = PixelGetColor(X, Y)
   If '0x' & Hex($color, 6) = Color Then Send('1')
Wend


PS Посмотри справку по PixelGetColor()
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Вот пример, по его аналогии сделай себе проверку
Код:
Case $ToCheck = "Cargo Hold" ;ConCheck("Cargo Hold")
			;Returns: "Full", "Empty", "Not Empty"
;~ 			Global $CargoHold
			If Not IsArray($CargoHold) Then
				Dim $Cargo[2] = [36, 569] ;Левый верхний угол окна трюма
				Dim $CargoHold[7]=[$Cargo[0]+147,$Cargo[1]+63,$Cargo[0]+246,$Cargo[1]+63,0x020F13,10,"Cargo Bar"] ;Настройки области поиска и цвета для определения статуса карго бара
			EndIf
			If $Location[0][0] = "Идет загрузка..." Or $Location[0][0] = "Нахожусь в варпе" Then Return "#"
			#cs - Обратиться сюда командой ConCheck("Cargo Hold") - если мы хотим различить заполненность трюма по одному из трех состояний Full, Empty, Not Empty
			#ce - Обратиться сюда командой ConCheck("Cargo Hold", "%") - если мы хотим узнать процентное значение заполненности трюма 0-100%
			Local $CargoBarStatus = PixelSearch($CargoHold[0], $CargoHold[1], $CargoHold[2], $CargoHold[3], $CargoHold[4], $CargoHold[5]) ;Проверяем есть ли чо в трюме
			If @error Then ;Цвет не нашли - значит трюм заполнен на 100% (Верно лишь тогда когда окно трюма находится на правильной позиции) (При необходимости надо прикрутить проверку наличия окна, и возврат его текущих координат или же возврат окна на эталонные координаты)
				If $AdvCheck = "%" Then Return 100 ;Если $AdvCheck = "%" (Запрос был сформирован как ConCheck("Cargo Hold", "%") вернуть 100%
				Return "Full" ;Вернуть Full
			Else ;Если трюм не полный
				If $CargoBarStatus[0] = $CargoHold[0]+1 Then ;Если трюм пустой
					If $AdvCheck = "%" Then Return 0 ;Вернуть 0%
					Return "Empty" ;Если $AdvCheck <> "%" - Вернуть Empty
				Else ;Финальная проверка если трюм не пустой и не полный. Вернуть текущее процентное значение состояния заполненности трюма. Расчет идет по формуле: Округлить результат((([Координата места где заканчивается индикатор заполненности] - [Координата правого края области поиска] * 100 / 99), 0) P.S. 99 - Ширина области поиска
					If $AdvCheck = "%" Then Return Round((($CargoBarStatus[0] - $CargoHold[0]) * 100 / 99), 0) ;Если $AdvCheck = "%" (Запрос был сформирован как ConCheck("Cargo Hold", "%") - расчитать текущее % значение заполненности трюма и вернуть его в формате [Число]%
					Return "Not Empty" ;Вернуть что трюм НЕ пустой
				EndIf
			EndIf
 
Верх