Func ScanMob($PosZone=0)
FFSetDebugMode(0) ; режим отладки
FFsetWnd($hwnd) ; какое окно будем считывать (дескриптор)
FFResetColors() ; очистить список цветов (удаляет массив из FFAddColor)
FFResetExcludedAreas() ; удалить зоны исключения (удаляет зоны из FFAddExcludedArea)
Local $aColorArray[3] = [0x7e1616, 0xbe1914, 0xb7120d] ; массив цветов, которые будем искать
FFAddColor($aColorArray) ; Добавляем указанные в массиве цвета в список тех, что будут отфильтрованы
FFSnapShot(2,47,890,490) ; Захватываем участок экрана заданных параметров (координаты относительно окна)
FFKeepColor(-1, 20, False) ; Оставляем только нужные цвета
;FFSaveBMP( "Minimap_" & @HOUR & @MIN & @SEC, False )
;-------------- ИЩЕМ ОБЪЕКТ --------------
FFAddExcludedArea(352, 69, 540, 85) ; исключаем полоску жизни из поиска (координаты относительно окна)
FFAddExcludedArea(435, 203, 462, 250) ; исключаем самого персонажа
FFAddExcludedArea(618, 464, 654, 505) ; исключаем значек огня (появляется, когда перс горит)
;Parameters ( FFNearestSpot должна вернуть координаты участка относительно окна, содержащего группу пикселей )
$SizeSearch = 30 ; Ширина и высота области для поиска. Это размер сторон "квадрата". Функция будет искать область $SizeSearch на $SizeSearch пикселей, которые отвечают критериям цвета.
$NbPixel = 200 ; Минимальное количество пикселей в области. Функция ищет места, содержащие $NbPixel с подходящими цветами.
$PosX = 442 ; X координата ближайшей позиции. (поиск вернет координаты, расположенные наиболее близко к этой точке) задал координаты перса относительно рабочей области
$PosY = 240 ; Y координата ближайшей позиции. (поиск вернет координаты, расположенные наиболее близко к этой точке)
$Color = -1 ; Цвет, который я хочу найти (или -1 для использования списка цветов FastFind вместо одного цвета)
$ShadeVariation = 20 ; Значение вариаций (от 0 до 255) каждого компонента цвета, который я ищу, если основной цвет не найден
$ForceNewSnap = False ; Если это True, будет сделан новый снимок, и поиск будет сделан на нем. По умолчанию True. Если я поставлю False, то снимок должен быть сделан заранее.
If IsArray($PosZone) Then
; переданы координаты сканируемой области (относительно окна).
$Left = $PosZone[0] ; Координата X (область поиска).
$Top = $PosZone[1] ; Координата Y (область поиска).
$Right = $PosZone[2] ; Правая координата (область поиска).
$Bottom = $PosZone[3] ; Нижняя координата (область поиска).
Else
$Left = 0 ; Координата X (область поиска). По умолчанию 0.
$Top = 0 ; Координата Y (область поиска). По умолчанию 0.
$Right = 0 ; Правая координата (область поиска). По умолчанию 0.
$Bottom = 0 ; Нижняя координата (область поиска). По умолчанию 0.
EndIf
$NoSnapShot = 0 ; Это номер слота для снимка, который я делаю. Я могу хранить до 1024 различных снимков в памяти. Оставить значение по умолчанию, если не нужно держать более одного снимка в памяти.
$WindowHandle = $hwnd ; Дескриптор окна, с которым будем работать
Local $aCoords = FFNearestSpot( $SizeSearch, $NbPixel, $PosX, $PosY, $Color, $ShadeVariation, $ForceNewSnap, $Left, $Top, $Right, $Bottom, $NoSnapShot, $WindowHandle )
If Not @error Then
Return $aCoords ; возвращаются координаты относительно рабочей области окна
EndIf
Return 0 ; ничего не нашел
EndFunc