Что нового

Скрипт проверки цвета пикселя в перекрытом окне [разбираюсь что к чему]

Qwertyus

Новичок
Сообщения
1
Репутация
0
Привет всем, я новичек в Autoit, ранее использовал Uopilot и вполне удачно реализовывал свои задумки по автоматизации в игре (Lineage II), но невозможность анализа цвета пикселей в перекрытом окне (параметр workwindow в FindColor и FindImage не работает в окнах Lineage II) стала для меня препятствием и в поисках решения своей проблемы я столкнулся с autoit, узнав что он умеет то что мне нужно, так что теперь я пытаюсь познать премудрости скриптинга в autoit и это кажется мне сложнее чем в Uopilot :smile: Очень надеюсь на помощь форумчан.
С вашего позволения, в этой теме я приведу интересный мне скрипт и свои мытарства в скриптинге по изучению "что к чему" и "как работает":

Код:
Func _SearchPix($x1, $y1, $x2, $y2, $coll, $shvar=0, $step=1)
    $ARGB = _WinAPI_IntToDWord(BitOR($coll, 0xFF000000))
    $Size = WinGetClientSize($hWnd)
    $L1 = $Size[0]*($y1-1)+$x1
    $L2 = $Size[0]*($y2-1)+$x2
    $L = $Size[0] * $Size[1]
    $tBits = DllStructCreate('dword[' & $L & ']')
    _WinAPI_GetBitmapBits($hBMP, 4 * $L, DllStructGetPtr($tBits))
    $Offset = -1
    For $i = $L1 To $L2 Step $step
        If DllStructGetData($tBits, 1, $i) = $ARGB Then
            $Offset = $i
            ExitLoop
        EndIf
    Next
    If $Offset = -1 Then
        Return SetError(1)
    Else
        $x = Mod($Offset, $Size[0]) - 1
        $y = Ceiling($Offset / $Size[0]) - 1
        Local $coor[2] = [$x, $y]
        Return $coor
    EndIf
EndFunc


Эти переменные в функции ($x1, $y1, $x2, $y2, $coll, $shvar=0, $step=1) - "параметры"? Читал об этом здесь но четкого понимания, что делают переменные в скобках после имени функции, не пришло. Сначала я решил, что $x1, $y1, $x2, $y2 это 2 координаты, которые образуют прямоугольную область, в которой будет проходить поиск пикселя, но для чего $coll, $shvar=0, $step=1 - осталось загадкой.

Далее, _WinAPI_IntToDWord - "инструкцию" поиском на форуме найти не удалось. Что такое WinAPI мне известно отдаленно (набор системных функций ОС, самый низкий уровень для любой прикладной программы), никогда не пользовался, но подозреваю, что в данном скрипте это именно то, что позволяет выдирать цвет пикселя из перекрытой области, а в скобках указан, судя по всему, искомый цвет, но для чего там переменная $coll? Потом $L1 $L2 $L - операции с массивом?

А дальше еще сложнее - работа с переменными, которые предварительно не задавались. За что отвечает к примеру $hBMP, не могу понять. И еще много вопросов, которые я пока даже не знаю, как сформулировать, но попробую задавать их по мере изучения autoit.

Возможно, смысл есть спрашивать в той теме, из которой я и взял этот скрипт, но больше таких новичков, подобных мне, я там не видел, поэтому писать туда пока не рискнул.
 
Верх