Что нового

TriangleCheck Функция

Belfigor

Модератор
Локальный модератор
Сообщения
3 551
Репутация
930
Код:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; Модуль TriangleCheck v0.1 Функция "привязки" к белому треугольнику для работы с игровым меню
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; Применение:
;; Само тело функции расместить в любой удобной части скрипта. 
;; Использовать ссылку на функцию из любой части скрипта, для работы с меню или же овервью.
;; Зависимость: НЕТ
;; Описание:
;; Модуль Trianglecheck - это модуль предназначенный для включения в модуль OpenMenu.
;; Принцип работы:
;; Выполняет поиск первого близкого к белому цвету пикселя в области поиска, после чего, проверяет наличие треугольника по его вершинам. Сработал без сбоев более 
;; 10 000 раз подряд, недоверять ему у меня просто нет причин. 
;; Примечание:
;; Код оптимизирован, работает настолько быстро, насколько это вообще возможно для винАПИшного GetPixel()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
 
Dim $TriangeCentreX, $TriangeCentreY, $SearchAreaLTX, $SearchAreaLTY, $SearchAreaRBX, $SearchAreaRBY
Global $x = [i]0, $y = 0
Func TriangleCheck($SearchAreaLTX, $SearchAreaLTY, $SearchAreaRBX, $SearchAreaRBY) ; ищем x, y центра треугольника путём проверки по вершинам.
Opt("PixelCoordMode", 0)
Opt("MouseCoordMode", 0)
Local $ix, $iy, $a, $aa, $aaa, $aab, $aac, $aad, $b, $bb, $bbb, $bbc, $c, $cc, $aaaH, $aabH, $aacH, $aadH, $bbbH, $bbcH, $bbc
For $iy = $SearchAreaLTY To $SearchAreaRBY step 1
For $ix = $SearchAreaLTX To $SearchAreaRBX step 1
$aa = TrimColor("0x"&Hex(PixelGetColor($ix, $iy), 6))
If $aa > 230 Then
If $aa > 230 And 255 = $aa < 255 Then
$aaa = TrimColor("0x"&Hex(PixelGetColor($ix, $iy + 1), 6))
If $aaa > 230 And 255 = $aaa < 255 Then
$aab = TrimColor("0x"&Hex(PixelGetColor($ix, $iy + 2), 6))
If $aab > 230 And 255 = $aab < 255 Then
$aac = TrimColor("0x"&Hex(PixelGetColor($ix, $iy + 3), 6))
If $aac > 230 And 255 = $aac < 255 Then
$aad = TrimColor("0x"&Hex(PixelGetColor($ix, $iy + 4), 6))
If $aad > 230 And 255 = $aad < 255 Then
$bb = TrimColor("0x"&Hex(PixelGetColor($ix + 1, $iy + 1), 6))
If $bb > 230 And 255 = $bb < 255 Then
$bbb = TrimColor("0x"&Hex(PixelGetColor($ix + 1, $iy + 2), 6))
If $bbb > 230 And 255 = $bbb < 255 Then
$bbc = TrimColor("0x"&Hex(PixelGetColor($ix + 1, $iy + 3), 6))
If $bbc > 230 And 255 = $bbc < 255 Then
$cc = TrimColor("0x"&Hex(PixelGetColor($ix + 2, $iy + 2), 6))
If $cc > 230 And 255 = $cc < 255 Then
$x = $ix + 1
$y = $iy + 2
ExitLoop
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
Next
If Not $x = 0 Then ExitLoop
Next
EndFunc
 
Func TrimColor($TargetTrim)
#cs TrimarkColor - Comment Start
Исползуется для получения из цвета в формате RGB значение яркости пикселя. Возвращает значение от 0 до 255.
Скорость:
Функция выполняется за ~0.06-0.10 мс.
#ce TrimColor - Comment End
Dim $a, $as, $as1, $as2, $a_fin
$a = Hex($TargetTrim, 6)
$a_fin = (Dec(StringTrimRight($a, 4)) + Dec(StringTrimLeft(StringTrimRight($a, 2), 2)) + Dec(StringTrimLeft($a, 4)))/3
$TargetTrim = Round($a_fin, 0)
Return $TargetTrim
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
 
Верх