Что нового

IMGsearch цикл действий с разными переменными

safrin

Новичок
Сообщения
5
Репутация
0
Версия AutoIt: 3.3.14

Описание:
Нужна помощь в написании скрипта, а точнее примера для его написания.
Тз:
Основная задача, поиск текста (картинки с текстом) если совпадает, действие, до получения результата (следующей картинки).
И так в цикле.
Т.е Поиск картинки среди 30, совпало - выполнение mouseclick.
Выполнение циклических заданий с разными переменными (около 30 штук)
Если не ясно указал простите, новичок в этом деле.


Примечания:
Хочу написать игрового бота, который выполняет задания по кругу, там всего около 30 возможных вариантов.
Понимаю уже некоторые основы в Autoit. Читаю справку. но без практики дается не легко ! :smile:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
есть библиотека ImageSearch.
Выглядеть будет как-то так
Код:
$img[31] = [30, "1.bmp", "2.bmp", ..., "30.bmp"]

For $i = 1 To $img[0] Step 1
	If _ImageSearch($img[$i], всякие параметры) Then
		MouseClick(всякие параметры)
	Else
		;тут может быть что-то еще
	EndIf
Next
 
Автор
S

safrin

Новичок
Сообщения
5
Репутация
0
Начал с простого, получилось. Работал без img.au3 просто внес в мой скрипт.
На рабочем столе все работает, картинку нашло, все действия после if result1 сделало. Меняю рабочую область на окно браузера, уже не работает ! Не ищет выбранную в нем картинку, что может быть !? Что посоветуете !?
Код:
Func _ImageSearch($findImage, $resultPosition, ByRef $x, ByRef $y, $tolerance)
	Return _ImageSearchArea($findImage, $resultPosition, 0, 0, @DesktopWidth, @DesktopHeight, $x, $y, $tolerance)
EndFunc   ;==>_ImageSearch

Func _ImageSearchArea($findImage, $resultPosition, $x1, $y1, $right, $bottom, ByRef $x, ByRef $y, $tolerance)
	;MsgBox(0,"asd","" & $x1 & " " & $y1 & " " & $right & " " & $bottom)
	If $tolerance > 0 Then $findImage = "*" & $tolerance & " " & $findImage
	$result = DllCall("ISDLL.dll", "str", "ImageSearch", "int", $x1, "int", $y1, "int", $right, "int", $bottom, "str", $findImage)

	; If error exit
	If $result[0] = "0" Then Return 0

	; Otherwise get the x,y location of the match and the size of the image to
	; compute the centre of search
	$array = StringSplit($result[0], "|")

	$x = Int(Number($array[2]))
	$y = Int(Number($array[3]))
	If $resultPosition = 1 Then
		$x = $x + Int(Number($array[4]) / 2)
		$y = $y + Int(Number($array[5]) / 2)
	EndIf


	Return 1
EndFunc   ;==>_ImageSearchArea


HotKeySet('{F8}', 'KRUGSTART')
ToolTip("KRUG START", 0, 0)
 Global $x, $y
While 1
Sleep(100)
Wend

Func KRUGSTART()
 $result1 = _ImageSearch("1.bmp", 1, $x, $y, 20)
 If $result1 = 1 Then
  ToolTip("Нашел", 0, 0)
  MouseMove($x,$y,1000)
  ToolTip("Несу мышку", 0, 0)
  MouseClick("left",$x,$y,2,100)
  ToolTip("Делаю Клик", 0, 0)
 EndIf
EndFunc
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Пробовал искать не по координатам окна, а на всём экране? Вытащить окно браузера вперед остальных окон, и запустить поиск без привязки к координатам. Найдет что-то?
 
Автор
S

safrin

Новичок
Сообщения
5
Репутация
0
(с) Belfigor

Справку читал, книжку прошерстил :smile: Но честно говоря не очень понял что и как делать, можно какие-то примеры. По ним попробую.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Там прям в архиве в котором распространяется imagesearch есть примеры
 
Автор
S

safrin

Новичок
Сообщения
5
Репутация
0
Код:
#include 

Global $istopped

HotKeySet('{F9}', 'exits')
HotKeySet('{F8}', 'KRUGSTART')
ToolTip("Добро пожаловать", 0, 0)

While 1
Sleep(100)
Wend

Func KRUGSTART()
local $x, $y
While 1
 $result = _ImageSearch("imgMouse.bmp", 1, $x, $y, 20)
 WEnd
 If $result = 1 Then
  ToolTip("Нашел", 0, 0)
  MouseMove($x,$y,1000)
  ToolTip("Несу мышку", 0, 0)
  MouseClick("left",$x,$y,1,100)
  ToolTip("Делаю Клик", 0, 0)
  EndIf
EndFunc



Func exits()
	Global $istopped = 1
	Exit
EndFunc

Вообщем столкнулся с проблемой, если не задавать цикл поиска изображения, все работает. Если пытаюсь поставить его в цикл, отпадает все и не реагирует на запущенную функцию.
 

icanfly

Новичок
Сообщения
1
Репутация
0
safrin сказал(а):
Код:
Func KRUGSTART()
local $x, $y
While 1
 $result = _ImageSearch("imgMouse.bmp", 1, $x, $y, 20)
 WEnd
 If $result = 1 Then
  ToolTip("Нашел", 0, 0)
  MouseMove($x,$y,1000)
  ToolTip("Несу мышку", 0, 0)
  MouseClick("left",$x,$y,1,100)
  ToolTip("Делаю Клик", 0, 0)
  EndIf
EndFunc

Вообщем столкнулся с проблемой, если не задавать цикл поиска изображения, все работает. Если пытаюсь поставить его в цикл, отпадает все и не реагирует на запущенную функцию.
Конец цикла WEnd стоит до действий с мышкой, поэтому скрипт просто бесконечно ищет соответствия изображению и дальше WEnd инструкции не выполняются.
 
Верх