Что нового

[Автоматизация] Распознавание картинок с помощью ImageSearch

Vandam

Новичок
Сообщения
12
Репутация
0
Всем доброго времени суток. Хочу написать бот для рыбалки. Суть в том что в определенных координатах(фиксированных)
появляется значок умения, которое нужно использовать в течении 5 сек(чем быстрее, тем лучше), после этого он обновляется в случайном порядке на следующий. Таких значков всего 5 шт, но они мигают, поэтому оттенок постоянно меняется. То есть нужно распознать картинку из 5 шт и нажать кнопку. Вот нашел на форуме и немного переделал
Код:
#include "ImageSearch.au3"

Global Const $find_img1 = "Right.jpg"
Global $X = 411
Global $Y = 83
Global $Paused

HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{End}", "Terminate")
HotKeySet("+!d", "ShowMessage") ; Shift-Alt-d для вызова сообщения
MsgBox(4096, 'Сообщение', 'Нажмите Pause/Break,' & @CRLF & 'чтобы продолжить.')
HotKeySet("{F4}", "_Start")
Opt("MouseCoordMode", 2)
Opt("PixelCoordMode", 2)

While 1
    _Start()
    Sleep(100)
WEnd



Func _Start()
    For $i = 1 To 3  ; 3 раза ищем одну и ту же картинку
        $timer = TimerInit()
        While 1
            If(TimerDiff($timer)>3000) Then Return ; не нашли за 2 с - выходим из функции, чтоб не попасть в вечный цикл
            If _ImageSearch($find_img1 , 0, $X, $Y, 50) == 1 Then
                Send("{U}") ;жмем U, когда нашли картинку
                ConsoleWrite("Send space number: " & $i & @CR) ;пишем в консоль просто для контроля

                If $i == 1 Then
                     Sleep(5000)
                ElseIf $i == 2 Then
                    Sleep(500)
                Else
                    Sleep(100)
                EndIf

                ExitLoop ;идем искать следующую картинку
            Else
                Sleep(100) ;если не нашли- ждем и разгружаем процессор
            EndIf
        WEnd
    Next
EndFunc






Func TogglePause()
    $Paused = Not $Paused
    While $Paused
        Sleep(100)
        ToolTip('1')
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc

Func ShowMessage()
    MsgBox(4096, "", "Это сообщение.")
EndFunc


Проверка выдает:
"C:\Program Files (x86)\AutoIt3\Include\ImageSearch.au3"(30,46) : error: missing separator character before keyword.
Func _ImageSearch($findImage,$resultPosition,ByRef
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Program Files (x86)\AutoIt3\Include\ImageSearch.au3"(34,73) : error: missing separator character before keyword.
Func _ImageSearchArea($findImage,$resultPosition,$x1,$y1,$right,$bottom,ByRef
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Program Files (x86)\AutoIt3\Include\ImageSearch.au3"(74,63) : error: missing separator character before keyword.
Func _WaitForImageSearch($findImage,$waitSecs,$resultPosition,ByRef
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Program Files (x86)\AutoIt3\Include\ImageSearch.au3"(109,64) : error: missing separator character before keyword.
Func _WaitForImagesSearch($findImage,$waitSecs,$resultPosition,ByRef
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Users\Vetal\Desktop\Test Fishing1.au3 - 4 error(s), 0 warning(s)
 

Вложения

  • ScreenShot0048.jpg
    ScreenShot0048.jpg
    191.2 КБ · Просмотры: 96

modnik

Знающий
Сообщения
138
Репутация
13
В своё время реализовал рыбалку в АА через PixelSearch(), гораздо эффективнее.

Надо просто настроить проверку пикселей в определённом месте и всё
 
Автор
V

Vandam

Новичок
Сообщения
12
Репутация
0
Я перед тем, как создавать тему, первым делом попробовал Pixelsearch, так как к этой же игре был написан бот для арены с помощью Pixelsearch, но после обновления он стал бесполезен. Вся проблема в том, что картинка постоянно мигает и меняет цвет (становится зеленой), поэтому и ищу другие варианты.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,602
Репутация
941
ImageSearch.DLL была писана во времена win7, возможно проблема в совместимости с текущей осью.
 
Верх