Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Findimage?

Автор: asalko 17.1.2013, 11:42

sad.gif Пользуюсь пилотом уже года два, но хочется научиться использовать Findimage или findcolor
каждая новая попытка это сделать не увенчалась успехом, то есть находя подобные темы нет ничего для новичка так сказать.
можно ли:
1. показать пример скрипта очень простого,
2. описать очередность действии, т.е. необходимо чтоб пилот находил вот такую вот картинку, делаем скрин сохраняем в пейнте в формате бмп ( там их очень много) запускаем игру, привязываем её к пилоту,
пишем в скрипт путь к картинке и если можно самый простой пример скрипта, который просто находит картинку .
3 если можно про диапазон поиска, какие команды для этого используются.
4. мне очень хочется написать скрипт для игры eve online для простой копки руды. есть кое какие наброски но без findimage это просто не реально.

Автор: EL-GReeN 17.1.2013, 14:52

http://uopilot.tati.pro/index.php?title=Findimage
Читали?

Автор: asalko 17.1.2013, 16:40

Цитата(EL-GReeN @ 17.1.2013, 14:52) *

http://uopilot.tati.pro/index.php?title=Findimage
Читали?

Да но для меня это как клинопись.
особенно знаки больше меньше простите.
я понимаю это похоже на троллинг , но я не троль, скорее пилот-нуб. rolleyes.gif

Автор: EL-GReeN 17.1.2013, 17:17

if $a > 0
Если число в переменой $a больше чем 0

Автор: asalko 17.1.2013, 17:28

Цитата(EL-GReeN @ 17.1.2013, 17:17) *

if $a > 0
Если число в переменой $a больше чем 0

так ну команду if я знаю
if $a > 0 ? а $a по началу равно нулю?
если а больше нуля,
то
а дальше плз продолжи

Автор: asalko 17.1.2013, 17:59

у меня даже в школе на бейсике были проблемы с массивами.

Автор: DarkMaster 17.1.2013, 18:04

а у меня в школе даже бэйсик не проходили... в универе тоже(..

Автор: xolost 17.1.2013, 18:08

Цитата(DarkMaster @ 17.1.2013, 19:04) *

а у меня в школе даже бэйсик не проходили... в универе тоже(..


А я лишь помню что писал в школе какой-то мультик в текстовом документе. Но совершенно не помню ни одной команды и совершенно ничего. И на олимпиаде он провалился)), т.к. с параллельного класса пацаненок сделал игру "машинка" там можно было ездить и управлять ею. Это круче мультика)) Для 7-го класса...

Автор: asalko 17.1.2013, 18:20

вообще у меня диплом по "автоматизации и управлению" но знаю я не больше школьника.
стыдно и работу не найти, зато приятно быть частью этого изучая пилот)
в общем
// перед запуском скрипта не забываем привязать скрипт к рабочему окну (Ctrl+A)
set #startX 345
set #startY 345
set #endX 345
set #endY 345
set $path C:\Program Files\UOPilot\images\
set %cash[1] картинка
// будем искать картинку из файла C:\Program Files\UOPilot\images\картинка.bmp
set $a findimage (#startX #startY #endX #endY ($path%cash[1].bmp) %crds 2)
if $a > 0
msg Изображение найдено в координатах X= %crds[1 1] Y= %crds[1 2]. Кликнем на нём...
left %crds[1 1] %crds[1 2] // кликнули
else
msg Изображение не найдено
end_if
если честно то даже не верится что пилот это может. удивительно.
у меня вопрос, могу я вырезать картинку из того что заскринил, и использовать её в координатах поиска
я никогда не писал один скрипт на действия, скорее это было по 15-20 , но очень простых.
чем проще скрипт тем лучше он работает.
респект вам ребята. удивительно, что люди так мало знают о пилоте, даже те кто играет можно сказать каждый день и по многу. хотя пилот можно использовать и в работе.

Автор: xolost 17.1.2013, 18:27

Цитата(asalko @ 17.1.2013, 19:20) *

вообще у меня диплом по "автоматизации и управлению" но знаю я не больше школьника.
стыдно и работу не найти, зато приятно быть частью этого изучая пилот)
в общем
// перед запуском скрипта не забываем привязать скрипт к рабочему окну (Ctrl+A)
set #startX 345
set #startY 345
set #endX 345
set #endY 345
set $path C:\Program Files\UOPilot\images\
set %cash[1] картинка
// будем искать картинку из файла C:\Program Files\UOPilot\images\картинка.bmp
set $a findimage (#startX #startY #endX #endY ($path%cash[1].bmp) %crds 2)
if $a > 0
msg Изображение найдено в координатах X= %crds[1 1] Y= %crds[1 2]. Кликнем на нём...
left %crds[1 1] %crds[1 2] // кликнули
else
msg Изображение не найдено
end_if
если честно то даже не верится что пилот это может. удивительно.
у меня вопрос, могу я вырезать картинку из того что заскринил, и использовать её в координатах поиска
я никогда не писал один скрипт на действия, скорее это было по 15-20 , но очень простых.
чем проще скрипт тем лучше он работает.
респект вам ребята. удивительно, что люди так мало знают о пилоте, даже те кто играет можно сказать каждый день и по многу. хотя пилот можно использовать и в работе.



Ну вы же пример только что написали на поиск картинки.
Хотя он жестковат очень, для новичка.

Что бы проще понять было, то вот самый легкий вариант:

Код
set $a findimage (0 0 1280 1024 (c:\uopilot\картинка.bmp) %crds 2 100 1)


Т.е. ищем картинку, которая лежит в пути c:\uopilot\ и имеет расширение "bmp"
$a - вероятность нахождения картинки в процентах.
Например, если совпадение на 100%, то $a = 100

Соответственно, далее мы имеем переменную с фактом либо найденной, либо нет картинки.

Т.е.
Код
if $a > 0
   msg картинка найдена
else
   msg картинка не найдена
end_if

Автор: asalko 17.1.2013, 18:38

Код
set $a findimage (0 0 1280 1024 (c:\uopilot\картинка.bmp) %crds 2 100 1)


что значит %crds 2 100 1

Автор: xolost 17.1.2013, 18:44

Цитата(asalko @ 17.1.2013, 19:38) *

Код
set $a findimage (0 0 1280 1024 (c:\uopilot\картинка.bmp) %crds 2 100 1)


что значит %crds 2 100 1

%crds массив, в который запишится координаты найденной картинки
2 - тип поиска(быстрый)
100 - точность поиска
1 - кол-во найденных картинок.

Автор: asalko 17.1.2013, 19:16

Цитата(xolost @ 17.1.2013, 18:44) *

%crds массив, в который запишится координаты найденной картинки
2 - тип поиска(быстрый)
100 - точность поиска
1 - кол-во найденных картинок.

а как например указать курсором мышки на эту область?
что то типа
move %crds

Цитата(xolost @ 17.1.2013, 18:44) *

%crds массив, в который запишится координаты найденной картинки
2 - тип поиска(быстрый)
100 - точность поиска
1 - кол-во найденных картинок.

и еще как прописать в строке, чтобы пилот искал только в заданной области?
то есть в квадрате 100х100

Автор: DarkMaster 17.1.2013, 19:21

Цитата
что то типа
move %crds

move %crds [ 1 1 ] %crds [ 1 2 ]
Цитата
и еще как прописать в строке, чтобы пилот искал только в заданной области?

Вы описание оператора вообще читали? Из вашего же примера область поиска:
Цитата
0 0 1280 1024

Автор: asalko 17.1.2013, 19:27

Цитата(DarkMaster @ 17.1.2013, 19:21) *

move %crds [ 1 1 ] %crds [ 1 2 ]

Вы описание оператора вообще читали? Из вашего же примера область поиска:

Боже, все гениальное просто smile.gif

Цитата(DarkMaster @ 17.1.2013, 19:21) *

move %crds [ 1 1 ] %crds [ 1 2 ]

Вы описание оператора вообще читали? Из вашего же примера область поиска:

находя область с нужным рисунком, можно чтоб он двигал курсор в центр рисунка, а не в левую верхнюю область его

Автор: DarkMaster 17.1.2013, 19:48

в %crds [ 1 3 ] %crds [ 1 4 ] содержатся конечные координаты.Вроде именно там, почитайте последние 1-2 версию ченжлога, если сразу не получится.

Автор: asalko 17.1.2013, 20:17

фон картинки постоянно меняется, так как она прозрачна % на 10
можно ли найти картинку, повысив погрешность или еще как нибудь?

на панели тексты с названиями станций, но так как фон меняется из-за небольшой прозрачности найти и выбрать нужную не получается

Автор: DarkMaster 17.1.2013, 20:33

[#deviation] - Погрешность оттенка. Пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7, соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.

Автор: asalko 17.1.2013, 20:45

Цитата(DarkMaster @ 17.1.2013, 20:33) *

[#deviation] - Погрешность оттенка. Пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7, соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.

можно на примере показать, вставить погрешность в скрипт

set $a findimage (0, 0 1280, 1024 (d:\uopilot\ваттуолен.bmp) %crds 2 100 1)
if $a > 0
move %crds [ 1 1 ] %crds [ 1 2 ]
wait 5s
end_if

Автор: Zeleax 17.1.2013, 20:52

Цитата
можно на примере показать, вставить погрешность в скрипт

Цитата
Вы описание оператора вообще читали?

http://uopilot.tati.pro/index.php?title=Findimage
Цитата
set $b FindImage (10 100 30 150 (d:\myImages\wolf.bmp) %arr 2 80 20 5)

Автор: asalko 17.1.2013, 21:00

Цитата(Zeleax @ 17.1.2013, 20:52) *

http://uopilot.tati.pro/index.php?title=Findimage

да, но там очень сложно все, не для простых смертных так сказать.
спасибо, куда эту строчку воткнуть?
set $b FindImage (10 100 30 150 (d:\myImages\wolf.bmp) %arr 2 80 20 5)

Цитата(DarkMaster @ 17.1.2013, 20:33) *

[#deviation] - Погрешность оттенка. Пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7, соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.

покажите на примере плз как объеденить эти 3 скрипта,
set $a findimage (0, 0 1280, 1024 (d:\uopilot\станции.bmp) %crds 2 100 1)
if $a > 0
move %crds [ 1 1 ] %crds [ 1 2 ]
wait 5s
end_if

set $a findimage (0, 0 1280, 1024 (d:\uopilot\ваттуолен.bmp) %crds 2 100 1)
if $a > 0
move %crds [ 1 1 ] %crds [ 1 2 ]
wait 5s
end_if

set $a findimage (0, 0 1280, 1024 (d:\uopilot\войтивдок.bmp) %crds 2 100 1)
if $a > 0
move %crds [ 1 1 ] %crds [ 1 2 ]
left %crds [ 1 1 ] %crds [ 1 2 ]
wait 5s
end_if

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


эта игра такая сложная, если получится с погрешностью, будет просто прекрасно)

Автор: DarkMaster 17.1.2013, 21:01

Цитата
его можно прямо в таком виде использовать уже.

Автор: asalko 17.1.2013, 21:16

Цитата(Zeleax @ 17.1.2013, 20:52) *

http://uopilot.tati.pro/index.php?title=Findimage


set $b FindImage (0, 0 1366 719 (d:\uopilot\астероид.bmp) %arr 2 80 20 5)
if $a > 0
move %crds [ 1 1 ] %crds [ 1 2 ]
left %crds [ 1 1 ] %crds [ 1 2 ]
wait 5s
end_if

выдает ошибку


set $a findimage (0, 0 1280, 1024 (d:\uopilot\астероид.bmp) %crds 2 100 1)
set $b FindImage (0, 0 1280 1024 (d:\uopilot\астероид.bmp) %arr 2 80 20 5)
if $a > 0
move %crds [ 1 1 ] %crds [ 1 2 ]
left %crds [ 1 1 ] %crds [ 1 2 ]
wait 5s
end_if

может вот так?

Автор: DarkMaster 17.1.2013, 21:27

Какую ошибку то?

Цитата
set $b FindImage (0, 0 1280 1024 (d:\uopilot\астероид.bmp) %arr 2 80 20 5)

результаты нигде не используются

Автор: asalko 17.1.2013, 21:38

Цитата(DarkMaster @ 17.1.2013, 21:27) *

Какую ошибку то?

результаты нигде не используются


ошибку на строчке move

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

Автор: DarkMaster 17.1.2013, 21:39

Цитата
когда он прозвучит выполнить команду.

нет
Цитата
set $b FindImage (0, 0 1366 719 (d:\uopilot\астероид.bmp) %arr 2 80 20 5)
if $a > 0

записываете в $b, проверяете $a

Автор: asalko 18.1.2013, 10:45

Цитата(DarkMaster @ 17.1.2013, 21:39) *

нет

записываете в $b, проверяете $a


я могу использовать клик при свернутом окне?

set $a findimage (0, 0 1366, 719 (d:\uopilot\астероид.bmp) %crds 2 100 1)
if $a > 0
move %crds [ 1 1 ] %crds [ 1 2 ]
left %crds [ 1 1 ] %crds [ 1 2 ]
wait 2s
if 1263, 77 255
wait 30s
else
move 1266, 78
left 1266, 78
wait 5s
end_if
end_if

при свернутом окне пилот не находит и не кликает.

Автор: asalko 19.1.2013, 17:32

sad.gif
set $a findimage (0, 0 1366, 719 (d:\uopilot\астероид.bmp) %crds 2 100 4)
if $a > 0
move %crds [ 1 1 ] %crds [ 1 2 ]
left %crds [ 1 1 ] %crds [ 1 2 ]
wait 1s
if 1263, 77 255
else
move 1266, 78
left 1266, 78
wait 10s
end_if
move %crds [ 2 1 ] %crds [ 2 2 ]
left %crds [ 2 1 ] %crds [ 2 2 ]
wait 1s
if 1263, 77 255
else
move 1266, 78
left 1266, 78
wait 10s
end_if
move %crds [ 3 1 ] %crds [ 3 2 ]
left %crds [ 3 1 ] %crds [ 3 2 ]
if 1263, 77 255
else
move 1266, 78
left 1266, 78
wait 10s
end_if
move %crds [ 4 1 ] %crds [ 4 2 ]
left %crds [ 4 1 ] %crds [ 4 2 ]
if 1263, 77 255
else
move 1266, 78
left 1266, 78
wait 10s
end_if
end_if

можно ли упростить этот скрипт?

Автор: DarkMaster 19.1.2013, 18:06

for используйте, а в обращениях к массиву задавайте переменной индекс массива.

Автор: asalko 22.1.2013, 21:34

Цитата(DarkMaster @ 19.1.2013, 18:06) *

for используйте, а в обращениях к массиву задавайте переменной индекс массива.


можете вставить for? и индекс массива

Автор: Zeleax 22.1.2013, 21:40

Код
set $a findimage (0, 0 1366, 719 (d:\uopilot\астероид.bmp) %crds 2 100 4)
if $a > 0
for #i 1 4
  move %crds [ #i 1 ] %crds [ #i 2 ]
  left %crds [ #i 1 ] %crds [ #i 2 ]
  wait 1s
  if_not 1263, 77 255
    move 1266, 78
    left 1266, 78
    wait 10s
  end_if
end_for
end_if

Автор: asalko 23.1.2013, 7:19

Цитата(Zeleax @ 22.1.2013, 21:40) *

Код
set $a findimage (0, 0 1366, 719 (d:\uopilot\астероид.bmp) %crds 2 100 4)
if $a > 0
for #i 1 4
  move %crds [ #i 1 ] %crds [ #i 2 ]
  left %crds [ #i 1 ] %crds [ #i 2 ]
  wait 1s
  if_not 1263, 77 255
    move 1266, 78
    left 1266, 78
    wait 10s
  end_if
end_for
end_if


huh.gif я как зулус , не понимаю как работает for для меня это чистая магия.

Автор: Zeleax 23.1.2013, 8:09

а так?

Код
msg Начинаем...
for #i 2 4
   msg Значение i равняется #i
end_for
msg Закончили!

Автор: asalko 24.1.2013, 10:31

Цитата(Zeleax @ 23.1.2013, 8:09) *

а так?
Код
msg Начинаем...
for #i 2 4
   msg Значение i равняется #i
end_for
msg Закончили!


то есть for меняется, от 1 до 4 ?

Автор: BydloScripter 24.1.2013, 11:59

Цитата(asalko @ 24.1.2013, 11:31) *

то есть for меняется, от 1 до 4 ?

for это оператор цикла, циклы придуманы для многократного повторения какой-либо операции стоящей между for и end_for. Чтобы цикл выполнялся нужное кол-во раз существует переменная-счётчик #i изначально равная единице (но можно задать самому), счётчик (#i) при каждом выполнении цикла увеличивается на шаг цикла (по умолчанию тоже единица, но можно и задать свой шаг) Также придуманы числа, которые определяют когда цикл начнет работать и когда закончит. Например
Код
for #i 5 100 5
for #<имя> <начало> <конец> [шаг]

цикл будет выполняться при условии что #i будет больше или равно 5, и закончит выполняться при #i >= 100, при каждом выполнении цикла к #i будет прибавляться 5 (шаг), как можно посчитать цикл выполнится 19 раз. Все параметры цикла (вродебы) можно задавать переменными и использовать их внутри цикла.

Автор: DarkMaster 24.1.2013, 12:46

Цитата
Все параметры цикла (вродебы)

все

Автор: asalko 24.1.2013, 13:35

Цитата(BydloScripter @ 24.1.2013, 11:59) *

for это оператор цикла, циклы придуманы для многократного повторения какой-либо операции стоящей между for и end_for. Чтобы цикл выполнялся нужное кол-во раз существует переменная-счётчик #i изначально равная единице (но можно задать самому), счётчик (#i) при каждом выполнении цикла увеличивается на шаг цикла (по умолчанию тоже единица, но можно и задать свой шаг) Также придуманы числа, которые определяют когда цикл начнет работать и когда закончит. Например
Код
for #i 5 100 5
for #<имя> <начало> <конец> [шаг]

цикл будет выполняться при условии что #i будет больше или равно 5, и закончит выполняться при #i >= 100, при каждом выполнении цикла к #i будет прибавляться 5 (шаг), как можно посчитать цикл выполнится 19 раз. Все параметры цикла (вродебы) можно задавать переменными и использовать их внутри цикла.

спасибо, тебе преподавать надо.

Автор: dron4938 25.3.2017, 16:51

// Пример 5
// поиск нескольких картинок
// перед запуском скрипта не забываем привязать скрипт к рабочему окну (Ctrl+A)
set #startX 0
set #startY 0
set #endX 1920
set #endY 1080
set $path "C:\Program Files\UOPilot\images\" // путь к картинкам
set %image [1] картинка1 // имя изображения
set %image [2] картинка2 // имя второго изображения
set %image [3] картинка3 // третьего
set %image [4] карти // имена могут быть любыми

set #size size(%image) // всего картинок
hint Всего картинок #size

:metka
for #i 1 #size 1 // цикл для поиска картинок
set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2)
if #a > 0
move %arr[1 1] %arr[1 2] // переместить курсор на найденную картинку
wait 500 // ждать 0,5 секунды
end_if
end_for
wait 3000 // ждать 3 секунды
goto metka


Нужно условие- если найдена картинка3, то:
Как прописать?

Автор: DarkMaster 25.3.2017, 17:02

Цитата
if #a > 0
move %arr[1 1] %arr[1 2] // переместить курсор на найденную картинку
wait 500 // ждать 0,5 секунды
end_if

Код
if #a > 0
    if #i = 3
        специфические действия для 3 изображения
    else
        move %arr[1 1] %arr[1 2] // переместить курсор на найденную картинку
        wait 500 // ждать 0,5 секунды
    end_if
end_if


Автор: dron4938 25.3.2017, 18:07

Цитата(DarkMaster @ 25.3.2017, 17:02) *

Код
if #a > 0
    if #i = 3
        специфические действия для 3 изображения
    else
        move %arr[1 1] %arr[1 2] // переместить курсор на найденную картинку
        wait 500 // ждать 0,5 секунды
    end_if
end_if



Спасибо, но немного не правильно объяснил)
Нужно узнать какую картинку пилот нашел из 4ёх

например

log Картинка3 совпала

Автор: cirus 25.3.2017, 18:14

Код
if #a > 0
    log %image [#i] совпала
end_if

Автор: dron4938 25.3.2017, 18:51

Цитата(cirus @ 25.3.2017, 18:14) *

Код
if #a > 0
    log %image [#i] совпала
end_if



Спасибо, то что надо.
Еще можно ли найденной картинке переменную присвоить?

типа так, только не присваивается почему-то

if #i = 3
set $a 00
end_if
log $a
end_script

Автор: cirus 25.3.2017, 19:13

Код
for #i 1 #size 1 // цикл для поиска картинок
    set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2)
    if  #a > 0
        log %image [#i] совпала
        if #i = 3        // если найдена 3-я картинка
            set $aa 00
        end_if
    end_if
end_for

log $aa
end_script

Автор: dron4938 25.3.2017, 21:09

if %image [#i] = 0
set $a 00
end_if

вот так получилось нормально.

Еще вопросик:

set #startX 0
set #startY 0
set #endX 1920
set #endY 1080
set $path "C:\Program Files\UOPilot\images\" // путь к картинкам
set %image [1] картинка1 // имя изображения
set %image [2] картинка2 // имя второго изображения
set %image [3] картинка3 // третьего
set %image [4] карти // имена могут быть любыми

set #size size(%image) // всего картинок
hint Всего картинок #size

:metka
for #i 1 #size 1 // цикл для поиска картинок
set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2)
if #a > 0
истина
else
log Картинка не найдена a #i
end_if
end_for
wait 300 // ждать 3 секунды
goto metka

Этот цикл METKA выполняется бесконечно если картинка не найдена.
Если я впишу в else чтото то этот цикл только 1 картинку просканирует.
Как сделать чтобы цикл метка сканировал максимум 4 раза (4 картинки) и потом останавливался

Автор: cirus 25.3.2017, 21:28

Код
if %image [#i] = 0
set $a 00
end_if

Зачем сравнивать имя картинки с 0?
Цитата
Этот цикл METKA выполняется бесконечно если картинка не найдена.

Он выполняется независимо от того что внутри, нашлась картинка, не нашлась или поиска нет вовсе. Метку вообще можно убрать.
Цитата
Если я впишу в else чтото то этот цикл только 1 картинку просканирует.

Смотря что написать.
Цитата
Как сделать чтобы цикл метка сканировал максимум 4 раза (4 картинки) и потом останавливался

Код
repeat 4     // повторить 4 раза
    for #i 1 #size 1 // цикл для поиска картинок
        set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2)
        if  #a > 0
            log истина
        else
            log Картинка не найдена a #i
        end_if
    end_for
    wait 300 // ждать 3 секунды
end_repeat
end_script

Автор: dron4938 25.3.2017, 21:39

Он выполняется независимо от того что внутри, нашлась картинка, не нашлась или поиска нет вовсе. Метку вообще можно убрать.

Во спасиб, а я его зацикливаю, чтоб он все картинки прогнал)

Автор: dron4938 26.3.2017, 0:04

Код

wait 1125 + random (157)
// поиск нескольких картинок
// перед запуском скрипта не забываем привязать скрипт к рабочему окну (Ctrl+A)
// #a $a Валюта a
// #b $b Валюта b
// #c $c Валюта c

set #startXa 1162
set #startYa 396
set #endXa 1183
set #endYa 404

set #startXb 1116
set #startYb 396
set #endXb 1146
set #endYb 404

set #startXc 1081
set #startYc 393
set #endXc 1107
set #endYc 409

set $path "\img\" // путь к картинкам
set %image [1] 0 // имя изображения
set %image [2] 1 // имя изображения
set %image [3] 2 // имя изображения
set %image [4] 3 // имя изображения
set %image [5] 4 // имя изображения
set %image [6] 5 // имя изображения
set %image [7] 6 // имя изображения
set %image [8] 7 // имя изображения
set %image [9] 8 // имя изображения
set %image [10] 9 // имя изображения

//------------------------------------------------------------------------------
for #AA 1 #size 1 // цикл для поиска картинок
    set #a findimage (#startXa #startYa #endXa #endYa ($path%image[#AA].bmp) %arra 2 80)
    if  #a > 0
        log Картинка a %image [#AA] совпала
        goto peremenkia
    else
        log Картинка не найдена a  #AA
    end_if
end_for
wait 10
:peremenkia
if  %image [#AA] = 0
    set %image [#AA] 00
end_if
if  %image [#AA] = 1
    set %image [#AA] 01
end_if
if  %image [#AA] = 2
    set %image [#AA] 02
end_if
if  %image [#AA] = 3
    set %image [#AA] 03
end_if
if  %image [#AA] = 4
    set %image [#AA] 04
end_if
if  %image [#AA] = 5
    set %image [#AA] 05
end_if
if  %image [#AA] = 6
    set %image [#AA] 06
end_if
if  %image [#AA] = 7
    set %image [#AA] 07
end_if
if  %image [#AA] = 8
    set %image [#AA] 08
end_if
if  %image [#AA] = 9
    set %image [#AA] 09
end_if
wait 300
//------------------------------------------------------------------------------
for #BB 1 #size 1 // цикл для поиска картинок
    set #b findimage (#startXb #startYb #endXb #endYb ($path%image[#BB].bmp) %arrb 2 80)
    if  #b > 0
        log Картинка b %image [#BB] совпала
        goto peremenkib
    else
        log Картинка не найдена b  #BB
    end_if
end_for
wait 10
:peremenkib
if  %image [#BB] = 0
    set %image [#BB] 00
end_if
if  %image [#BB] = 1
    set %image [#BB] 01
end_if
if  %image [#BB] = 2
    set %image [#BB] 02
end_if
if  %image [#BB] = 3
    set %image [#BB] 03
end_if
if  %image [#BB] = 4
    set %image [#BB] 04
end_if
if  %image [#BB] = 5
    set %image [#BB] 05
end_if
if  %image [#BB] = 6
    set %image [#BB] 06
end_if
if  %image [#BB] = 7
    set %image [#BB] 07
end_if
if  %image [#BB] = 8
    set %image [#BB] 08
end_if
if  %image [#BB] = 9
    set %image [#BB] 09
end_if
wait 300
//------------------------------------------------------------------------------
:ccc
for #CC 1 #size 1 // цикл для поиска картинок
    set #c findimage (#startXc #startYc #endXc #endYc ($path%image[#CC].bmp) %arrc 2 80)
    if  #c > 0
        log Картинка c %image [#CC] совпала
        goto peremenkic
    else
        log Картинка не найдена c  #CC
    end_if
end_for
wait 10
:peremenkic
if  %image [#CC] = 0
    set %image [#CC] 00
end_if
if  %image [#CC] = 1
    set %image [#CC] 01
end_if
if  %image [#CC] = 2
    set %image [#CC] 02
end_if
if  %image [#CC] = 3
    set %image [#CC] 03
end_if
if  %image [#CC] = 4
    set %image [#CC] 04
end_if
if  %image [#CC] = 5
    set %image [#CC] 05
end_if
if  %image [#CC] = 6
    set %image [#CC] 06
end_if
if  %image [#CC] = 7
    set %image [#CC] 07
end_if
if  %image [#CC] = 8
    set %image [#CC] 08
end_if
if  %image [#CC] = 9
    set %image [#CC] 09
end_if

set clipboard %image [#AA]%image [#BB]%image [#CC]    //  Копируем в буфер 3 переменных ABC

if  %image [#CC] = not or %image [#BB] = not or %image [#AA] = not
    log Пропуск
end_if

get clipboard $d                  //  Получаем число из буфера в переменную  D
log Переменная %image [#AA] / %image [#BB] / %image [#CC] / $d

end_script


Помогите ошибку найти. Скрипт находит первую картинку а остальные нет.
Если эмулирую и делаю первые 4 картинки неверными, то находит только 5 картинку и снова дальше не находит 6,7,8, и 9

После каждого нахождения картинки еще чтото надо прописывать?

Автор: cirus 26.3.2017, 0:24

Цитата
for #AA 1 #size 1 // цикл для поиска картинок

Перед этим добавить:
Код
set #size size(%image)

Или сразу использовать:
Код
for #AA 1 size(%image) 1


Можно сделать проще и короче.
Код
for #AA 1 size(%image) 1 // цикл для поиска картинок
    set #a findimage (#startXa #startYa #endXa #endYa ($path%image[#AA].bmp) %arra 2 80)
    if  #a > 0
        log Картинка a %image [#AA] совпала
        set %resultA [1] 0#i
        break
    else
        log Картинка не найдена a  #AA
    end_if
end_for
   // Также для остальных поисков.

set clipboard %resultA [1]%resultB [1]%resultC [1]

Автор: cirus 26.3.2017, 0:48

Зачем использовать буфер. Можно сразу переменной присвоить значения.

Код
set $d %image [#AA]%image [#BB]%image [#CC]

Автор: dron4938 26.3.2017, 0:58

Код
set #size size(%image) 

стояло в коде, я просто сюда кусками копировал и его не захватил)
и по прежнему не работает, после нахождения первой картинки, другие сканирует но не находит

Автор: cirus 26.3.2017, 1:04

Цитата
set #startXa 1162
set #startYa 396
set #endXa 1183
set #endYa 404

Область поиска не слишком маленькая указана? 21*8 пикселей.

Автор: dron4938 26.3.2017, 1:11

Цитата(cirus @ 26.3.2017, 1:04) *

Область поиска не слишком маленькая указана? 21*8 пикселей.

Картинки чуть меньшего размера

http://i.yapx.ru/HKQL.bmp


Автор: cirus 26.3.2017, 1:46

Ну эта картинка больше чем область поиска.
Самое простое, проверить находятся ли вообще картинки по отдельности.

Код
set #a findimage (0 0 1920 1080 (картинка.bmp) %arra 2 80)
log #a
end_script

Также можно добавить параметр погрешность оттенка.
Код
set #a findimage (0 0 1920 1080 (картинка.bmp) %arra 2 80 -1 3)   // 3 -  это % отклонения в цвете
log #a
end_script


Автор: dron4938 26.3.2017, 2:07

Код
set #a findimage (1162 396 1183 404 (\img\0.bmp) %arra 2 80)
log #a
set #b findimage (1081 396 1110 404 (\img\0.bmp) %arra 2 80)
log #b
end_script


простой проверкой картинки находятся
100
100

Автор: cirus 26.3.2017, 2:18

А в скрипте что выдаёт?

Код
set #a findimage (#startXa #startYa #endXa #endYa ($path%image[#AA].bmp) %arra 2 80)
log #a

Автор: dron4938 26.3.2017, 2:20

Цитата(cirus @ 26.3.2017, 2:18) *

А в скрипте что выдаёт?
Код
set #a findimage (#startXa #startYa #endXa #endYa ($path%image[#AA].bmp) %arra 2 80)
log #a


-4

Автор: dron4938 26.3.2017, 2:34

Цитата(dron4938 @ 26.3.2017, 2:20) *

-4


проблема решена- нельзя файлы картинок называть только числами

Код
set $path "\img\" // путь к картинкам
set %image [1] 0 // имя изображения
set %image [2] 1 // имя изображения
set %image [3] 2 // имя изображения
set %image [4] 3 // имя изображения
set %image [5] 4 // имя изображения
set %image [6] 5 // имя изображения
set %image [7] 6 // имя изображения
set %image [8] 7 // имя изображения
set %image [9] 8 // имя изображения
set %image [10] 9 // имя изображения


Код
set $path "\img\" // путь к картинкам
set %image [1] name0 // имя изображения
set %image [2] name1 // имя изображения
set %image [3] name2 // имя изображения
set %image [4] name3 // имя изображения
set %image [5] name4 // имя изображения
set %image [6] name5 // имя изображения
set %image [7] name6 // имя изображения
set %image [8] name7 // имя изображения
set %image [9] name8 // имя изображения
set %image [10] name9 // имя изображения


вот так нужно

Автор: cirus 26.3.2017, 2:45

Цитата
нельзя файлы картинок называть только числами

Можно. Никогда не было проблем.

Автор: dron4938 26.3.2017, 2:53

Цитата(cirus @ 26.3.2017, 2:45) *

Можно. Никогда не было проблем.

Да правильно можно, но только не нулём)))
У меня 1 из файлов назывался нулём и из-за этого трабл

Автор: dron4938 26.3.2017, 3:04

Цитата(dron4938 @ 26.3.2017, 2:53) *

Да правильно можно, но только не нулём)))
У меня 1 из файлов назывался нулём и из-за этого трабл


Нет, сейчас перепроверил и вроде бы трабл в следующем:

set $path "\img\" // путь к картинкам
set %image [1] 10 // имя изображения
set %image [2] 20 // имя изображения
set %image [3] 30 // имя изображения
set %image [4] 40 // имя изображения
set %image [5] 50 // имя изображения
set %image [6] 60 // имя изображения
set %image [7] 70 // имя изображения
set %image [8] 80 // имя изображения
set %image [9] 90 // имя изображения
set %image [10] 0 // имя изображения
set %image [11] 0 // имя изображения
set %image [12] 0 // имя изображения

set #size size(%image) // всего картинок

т.к. 3 разных поиска то нужно сюда 3 раза 1 и тот же файл писать
Походу если картинка ноль найдена то она блочится, и второй поиск ее уже не найдет.
как то так

Как это исправить можно, а то список файлов существенно вырастает и соответственно время поиска

Автор: cirus 26.3.2017, 3:18

Да хоть 3000 поисков. Это вообще не имеет значения, также как имена файлов.
Закиньте папку с картинками на диск C. Назовите картинки 0.bmp, 1.bmp и т.д. Запустите код.

Код
set $path "C:\img\"   // путь к картинкам
init_arr %image 0 1 2 3 4 5 6 7 8 9       // имена картинок
for #i 1 size(%image)
    set #a findimage(0 0 1920 1080 ($path%image[#i].bmp) %arr)
    log #a
        if #a > 0
            log Нашлась картинка %image [#i]
        end_if
end_for
end_script

Находятся картинки или нет?


Автор: dron4938 26.3.2017, 3:25

Цитата(cirus @ 26.3.2017, 3:18) *

Да хоть 3000 поисков. Это вообще не имеет значения, также как имена файлов.
Закиньте папку с картинками на диск C. Назовите картинки 0.bmp, 1.bmp и т.д. Запустите код.
Код
set $path "C:\img\"   // путь к картинкам
init_arr %image 0 1 2 3 4 5 6 7 8 9       // имена картинок
for #i 1 size(%image)
    set #a findimage(0 0 1920 1080 ($path%image[#i].bmp) %arr)
    log #a
        if #a > 0
            log Нашлась картинка %image [#i]
        end_if
end_for
end_script

Находятся картинки или нет?


4:24:10 8 (sav_8.txt, 1): 0
4:24:10 8 (sav_8.txt, 4): 0
4:24:10 8 (sav_8.txt, 12): 100
4:24:10 8 (sav_8.txt, 14): Нашлась картинка 0
4:24:10 8 (sav_8.txt, 12): 100
4:24:10 8 (sav_8.txt, 14): Нашлась картинка 1
4:24:10 8 (sav_8.txt, 12): 100
4:24:10 8 (sav_8.txt, 14): Нашлась картинка 2
4:24:11 8 (sav_8.txt, 12): 100
4:24:11 8 (sav_8.txt, 14): Нашлась картинка 3
4:24:11 8 (sav_8.txt, 12): 100
4:24:11 8 (sav_8.txt, 14): Нашлась картинка 4
4:24:11 8 (sav_8.txt, 12): 100
4:24:11 8 (sav_8.txt, 14): Нашлась картинка 5
4:24:11 8 (sav_8.txt, 12): 100
4:24:11 8 (sav_8.txt, 14): Нашлась картинка 6
4:24:11 8 (sav_8.txt, 12): 100
4:24:11 8 (sav_8.txt, 14): Нашлась картинка 7
4:24:11 8 (sav_8.txt, 12): 100
4:24:11 8 (sav_8.txt, 14): Нашлась картинка 8
4:24:11 8 (sav_8.txt, 12): 100
4:24:11 8 (sav_8.txt, 14): Нашлась картинка 9


Автор: cirus 26.3.2017, 3:32

Вот видите, картинки находятся и названия не причём.
Предлагаю ещё раз, хотя бы для начала, увеличить область поиска.

Автор: dron4938 26.3.2017, 14:55

Ох не знаю в чем трабла, уже весь мозг сломал(

Скрипт который не работает

Код

wait 1125 + random (157)
// поиск нескольких картинок
// перед запуском скрипта не забываем привязать скрипт к рабочему окну (Ctrl+A)
// #a $a Медь
// #b $b Серебро
// #c $c Золото

set #startXa 1162
set #startYa 396
set #endXa 1183
set #endYa 404

set #startXb 1116
set #startYb 396
set #endXb 1146
set #endYb 404

set #startXc 1081
set #startYc 396
set #endXc 1110
set #endYc 404

set $path "\img\" // путь к картинкам
set %image [1] 10 // имя изображения
set %image [2] 20 // имя изображения
set %image [3] 30 // имя изображения
set %image [4] 40 // имя изображения
set %image [5] 50 // имя изображения
set %image [6] 60 // имя изображения
set %image [7] 70 // имя изображения
set %image [8] 80 // имя изображения
set %image [9] 90 // имя изображения
set %image [10] 0 // имя изображения// открыта картинка 0 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
set %image [11] 11 // имя изображения
set %image [12] 22 // имя изображения
set %image [13] 33 // имя изображения
set %image [14] 44 // имя изображения
set %image [15] 55 // имя изображения
set %image [16] 66 // имя изображения
set %image [17] 77 // имя изображения
set %image [18] 88 // имя изображения
set %image [19] 99 // имя изображения
set %image [20] 6 // имя изображения
set %image [21] 2 // имя изображения
set %image [22] 3 // имя изображения
set %image [23] 4 // имя изображения
set %image [24] 5 // имя изображения
set %image [25] 6 // имя изображения
set %image [26] 7 // имя изображения
set %image [27] 8 // имя изображения
set %image [28] 9 // имя изображения
set %image [29] 12 // имя изображения
set %image [30] 13 // имя изображения
set %image [31] 14 // имя изображения
set %image [31] 15 // имя изображения
set %image [33] 16 // имя изображения
set %image [34] 17 // имя изображения
set %image [35] 18 // имя изображения
set %image [36] 19 // имя изображения
set %image [37] 21 // имя изображения
set %image [38] 23 // имя изображения
set %image [39] 24 // имя изображения
set %image [40] 25 // имя изображения
set %image [41] 26 // имя изображения
set %image [42] 27 // имя изображения
set %image [43] 28 // имя изображения
set %image [44] 29 // имя изображения
set %image [45] 31 // имя изображения
set %image [46] 32 // имя изображения
set %image [47] 34 // имя изображения
set %image [48] 35 // имя изображения
set %image [49] 36 // имя изображения
set %image [50] 37 // имя изображения
set %image [51] 38 // имя изображения
set %image [52] 39 // имя изображения
set %image [53] 41 // имя изображения
set %image [54] 42 // имя изображения
set %image [55] 43 // имя изображения
set %image [56] 45 // имя изображения
set %image [57] 46 // имя изображения
set %image [58] 47 // имя изображения
set %image [59] 48 // имя изображения
set %image [60] 49 // имя изображения
set %image [61] 51 // имя изображения
set %image [62] 52 // имя изображения
set %image [63] 53 // имя изображения
set %image [64] 54 // имя изображения
set %image [65] 55 // имя изображения
set %image [66] 56 // имя изображения
set %image [67] 57 // имя изображения
set %image [68] 58 // имя изображения
set %image [69] 59 // имя изображения
set %image [70] 61 // имя изображения
set %image [71] 62 // имя изображения
set %image [72] 63 // имя изображения
set %image [73] 64 // имя изображения
set %image [74] 65 // имя изображения
set %image [75] 67 // имя изображения
set %image [76] 68 // имя изображения
set %image [77] 69 // имя изображения
set %image [78] 71 // имя изображения
set %image [79] 72 // имя изображения
set %image [80] 73 // имя изображения
set %image [81] 74 // имя изображения
set %image [82] 75 // имя изображения
set %image [83] 76 // имя изображения
set %image [84] 78 // имя изображения
set %image [85] 79 // имя изображения
set %image [86] 81 // имя изображения
set %image [87] 82 // имя изображения
set %image [88] 83 // имя изображения
set %image [89] 84 // имя изображения
set %image [90] 85 // имя изображения
set %image [91] 86 // имя изображения
set %image [92] 87 // имя изображения
set %image [93] 89 // имя изображения
set %image [94] 91 // имя изображения
set %image [95] 92 // имя изображения
set %image [95] 93 // имя изображения
set %image [96] 94 // имя изображения
set %image [97] 95 // имя изображения
set %image [98] 96 // имя изображения
set %image [99] 97 // имя изображения
set %image [100] 98 // имя изображения
//set %image [101] 0 // имя изображения закрыта картинка 0 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
//set %image [102] 0 // имя изображения закрыта картинка 0 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
set %image [103] XX // имя изображения
set #size size(%image) // всего картинок

//goto bbb
//goto aaa
//log #size
//end_script
////////////////////////////////////////////////////////////////////////////////

move 1361 311 3 3                   //  перемещаем курсор
wait 105 + random (32)
set MouseClickDelay 54 + random(36)
left 1361 311 3 3                   //  жмем *ЛКМ* (СБРОС)
wait 98 + random (29)
set clipboard золото             // Копируем в буфер слово

//move 1117 310 3 3                   //  перемещаем курсор
wait 98 + random (29)
set MouseClickDelay 51 + random(32)
left 1117 310 3 3                   //  жмем ЛКМ
wait 221 + random (79)

sendex ^v                           //  жмем ctrl+v
wait 297 + random (103)

//move 1288 310 3 3                   //  перемещаем курсор
wait 102 + random (34)
set MouseClickDelay 64 + random(40)
left 1288 310 3 3                   //  жмем ЛКМ
wait 512 + random (97)

if  1060, 410 2827811                //  Если в координатах найден цвет то:
    move 1361 311 3 3                   //  перемещаем курсор
    wait 105 + random (32)
    set MouseClickDelay 54 + random(36)
    left 1361 311 3 3                   //  жмем *ЛКМ* (СБРОС)
    wait 108 + random (114)
else
end_if
:aaa
//------------------------------------------------------------------------------
for #AA 1 size(%image) 1 // цикл для поиска картинок
    set #a findimage (#startXa #startYa #endXa #endYa ($path%image[#AA].bmp) %arr 2 80)
    if  #a > 0
        log Картинка a %image [#AA] совпала
        goto peremenkia
    else
        log Картинка не найдена a  #AA
    end_if
end_for
wait 10
:peremenkia
if  %image [#AA] = 0
    set %image [#AA] 00
end_if
if  %image [#AA] = 1
    set %image [#AA] 01
end_if
if  %image [#AA] = 2
    set %image [#AA] 02
end_if
if  %image [#AA] = 3
    set %image [#AA] 03
end_if
if  %image [#AA] = 4
    set %image [#AA] 04
end_if
if  %image [#AA] = 5
    set %image [#AA] 05
end_if
if  %image [#AA] = 6
    set %image [#AA] 06
end_if
if  %image [#AA] = 7
    set %image [#AA] 07
end_if
if  %image [#AA] = 8
    set %image [#AA] 08
end_if
if  %image [#AA] = 9
    set %image [#AA] 09
end_if
wait 300
:bbb
//------------------------------------------------------------------------------
for #BB 1 size(%image) 1 // цикл для поиска картинок
    set #b findimage (#startXb #startYb #endXb #endYb ($path%image[#BB].bmp) %arr 2 80)
    if  #b > 0
        log Картинка b %image [#BB] совпала
        goto peremenkib
    else
        log Картинка не найдена b  #BB
    end_if
end_for
wait 10
:peremenkib
if  %image [#BB] = 0
    set %image [#BB] 00
end_if
if  %image [#BB] = 1
    set %image [#BB] 01
end_if
if  %image [#BB] = 2
    set %image [#BB] 02
end_if
if  %image [#BB] = 3
    set %image [#BB] 03
end_if
if  %image [#BB] = 4
    set %image [#BB] 04
end_if
if  %image [#BB] = 5
    set %image [#BB] 05
end_if
if  %image [#BB] = 6
    set %image [#BB] 06
end_if
if  %image [#BB] = 7
    set %image [#BB] 07
end_if
if  %image [#BB] = 8
    set %image [#BB] 08
end_if
if  %image [#BB] = 9
    set %image [#BB] 09
end_if
wait 300
//------------------------------------------------------------------------------
:ccc
for #CC 1 size(%image) 1 // цикл для поиска картинок
    set #c findimage (#startXc #startYc #endXc #endYc ($path%image[#CC].bmp) %arr 2 80)
    if  #c > 0
        log Картинка c %image [#CC] совпала
        goto peremenkic
    else
        log Картинка не найдена c  #CC
    end_if
end_for
wait 10
:peremenkic
if  %image [#CC] = 0
    set %image [#CC] 00
end_if
if  %image [#CC] = 1
    set %image [#CC] 01
end_if
if  %image [#CC] = 2
    set %image [#CC] 02
end_if
if  %image [#CC] = 3
    set %image [#CC] 03
end_if
if  %image [#CC] = 4
    set %image [#CC] 04
end_if
if  %image [#CC] = 5
    set %image [#CC] 05
end_if
if  %image [#CC] = 6
    set %image [#CC] 06
end_if
if  %image [#CC] = 7
    set %image [#CC] 07
end_if
if  %image [#CC] = 8
    set %image [#CC] 08
end_if
if  %image [#CC] = 9
    set %image [#CC] 09
end_if

if  %image [#CC] = XX or %image [#BB] = XX or %image [#AA] = XX
    log Одна из переменных не найдена
end_if
set $d %image [#CC]%image[#BB]%image [#AA]    // Получаем число d из 3 переменных cba

log Переменная %image [#CC] %image [#BB] %image [#AA] / $d
log #size Какойто текст

end_script



Скрипт который Работает

Код

wait 1125 + random (157)
// поиск нескольких картинок
// перед запуском скрипта не забываем привязать скрипт к рабочему окну (Ctrl+A)
// #a $a Медь
// #b $b Серебро
// #c $c Золото

set #startXa 1162
set #startYa 396
set #endXa 1183
set #endYa 404

set #startXb 1116
set #startYb 396
set #endXb 1146
set #endYb 404

set #startXc 1081
set #startYc 396
set #endXc 1110
set #endYc 404

set $path "\img\" // путь к картинкам
set %image [1] 10 // имя изображения
set %image [2] 20 // имя изображения
set %image [3] 30 // имя изображения
set %image [4] 40 // имя изображения
set %image [5] 50 // имя изображения
set %image [6] 60 // имя изображения
set %image [7] 70 // имя изображения
set %image [8] 80 // имя изображения
set %image [9] 90 // имя изображения
set %image [10] 0 // имя изображения// открыта картинка 0 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
set %image [11] 11 // имя изображения
set %image [12] 22 // имя изображения
set %image [13] 33 // имя изображения
set %image [14] 44 // имя изображения
set %image [15] 55 // имя изображения
set %image [16] 66 // имя изображения
set %image [17] 77 // имя изображения
set %image [18] 88 // имя изображения
set %image [19] 99 // имя изображения
set %image [20] 6 // имя изображения
set %image [21] 2 // имя изображения
set %image [22] 3 // имя изображения
set %image [23] 4 // имя изображения
set %image [24] 5 // имя изображения
set %image [25] 6 // имя изображения
set %image [26] 7 // имя изображения
set %image [27] 8 // имя изображения
set %image [28] 9 // имя изображения
set %image [29] 12 // имя изображения
set %image [30] 13 // имя изображения
set %image [31] 14 // имя изображения
set %image [31] 15 // имя изображения
set %image [33] 16 // имя изображения
set %image [34] 17 // имя изображения
set %image [35] 18 // имя изображения
set %image [36] 19 // имя изображения
set %image [37] 21 // имя изображения
set %image [38] 23 // имя изображения
set %image [39] 24 // имя изображения
set %image [40] 25 // имя изображения
set %image [41] 26 // имя изображения
set %image [42] 27 // имя изображения
set %image [43] 28 // имя изображения
set %image [44] 29 // имя изображения
set %image [45] 31 // имя изображения
set %image [46] 32 // имя изображения
set %image [47] 34 // имя изображения
set %image [48] 35 // имя изображения
set %image [49] 36 // имя изображения
set %image [50] 37 // имя изображения
set %image [51] 38 // имя изображения
set %image [52] 39 // имя изображения
set %image [53] 41 // имя изображения
set %image [54] 42 // имя изображения
set %image [55] 43 // имя изображения
set %image [56] 45 // имя изображения
set %image [57] 46 // имя изображения
set %image [58] 47 // имя изображения
set %image [59] 48 // имя изображения
set %image [60] 49 // имя изображения
set %image [61] 51 // имя изображения
set %image [62] 52 // имя изображения
set %image [63] 53 // имя изображения
set %image [64] 54 // имя изображения
set %image [65] 55 // имя изображения
set %image [66] 56 // имя изображения
set %image [67] 57 // имя изображения
set %image [68] 58 // имя изображения
set %image [69] 59 // имя изображения
set %image [70] 61 // имя изображения
set %image [71] 62 // имя изображения
set %image [72] 63 // имя изображения
set %image [73] 64 // имя изображения
set %image [74] 65 // имя изображения
set %image [75] 67 // имя изображения
set %image [76] 68 // имя изображения
set %image [77] 69 // имя изображения
set %image [78] 71 // имя изображения
set %image [79] 72 // имя изображения
set %image [80] 73 // имя изображения
set %image [81] 74 // имя изображения
set %image [82] 75 // имя изображения
set %image [83] 76 // имя изображения
set %image [84] 78 // имя изображения
set %image [85] 79 // имя изображения
set %image [86] 81 // имя изображения
set %image [87] 82 // имя изображения
set %image [88] 83 // имя изображения
set %image [89] 84 // имя изображения
set %image [90] 85 // имя изображения
set %image [91] 86 // имя изображения
set %image [92] 87 // имя изображения
set %image [93] 89 // имя изображения
set %image [94] 91 // имя изображения
set %image [95] 92 // имя изображения
set %image [95] 93 // имя изображения
set %image [96] 94 // имя изображения
set %image [97] 95 // имя изображения
set %image [98] 96 // имя изображения
set %image [99] 97 // имя изображения
set %image [100] 98 // имя изображения
set %image [101] 0 // имя изображения  открыта картинка 0  ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
set %image [102] 0 // имя изображения  открыта картинка 0  ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
set %image [103] XX // имя изображения
set #size size(%image) // всего картинок

//goto bbb
//goto aaa
//log #size
//end_script
////////////////////////////////////////////////////////////////////////////////

move 1361 311 3 3                   //  перемещаем курсор
wait 105 + random (32)
set MouseClickDelay 54 + random(36)
left 1361 311 3 3                   //  жмем *ЛКМ* (СБРОС)
wait 98 + random (29)
set clipboard золото             // Копируем в буфер слово

//move 1117 310 3 3                   //  перемещаем курсор
wait 98 + random (29)
set MouseClickDelay 51 + random(32)
left 1117 310 3 3                   //  жмем ЛКМ
wait 221 + random (79)

sendex ^v                           //  жмем ctrl+v
wait 297 + random (103)

//move 1288 310 3 3                   //  перемещаем курсор
wait 102 + random (34)
set MouseClickDelay 64 + random(40)
left 1288 310 3 3                   //  жмем ЛКМ
wait 512 + random (97)

if  1060, 410 2827811                //  Если в координатах найден цвет то:
    move 1361 311 3 3                   //  перемещаем курсор
    wait 105 + random (32)
    set MouseClickDelay 54 + random(36)
    left 1361 311 3 3                   //  жмем *ЛКМ* (СБРОС)
    wait 108 + random (114)
else
end_if
:aaa
//------------------------------------------------------------------------------
for #AA 1 size(%image) 1 // цикл для поиска картинок
    set #a findimage (#startXa #startYa #endXa #endYa ($path%image[#AA].bmp) %arr 2 80)
    if  #a > 0
        log Картинка a %image [#AA] совпала
        goto peremenkia
    else
        log Картинка не найдена a  #AA
    end_if
end_for
wait 10
:peremenkia
if  %image [#AA] = 0
    set %image [#AA] 00
end_if
if  %image [#AA] = 1
    set %image [#AA] 01
end_if
if  %image [#AA] = 2
    set %image [#AA] 02
end_if
if  %image [#AA] = 3
    set %image [#AA] 03
end_if
if  %image [#AA] = 4
    set %image [#AA] 04
end_if
if  %image [#AA] = 5
    set %image [#AA] 05
end_if
if  %image [#AA] = 6
    set %image [#AA] 06
end_if
if  %image [#AA] = 7
    set %image [#AA] 07
end_if
if  %image [#AA] = 8
    set %image [#AA] 08
end_if
if  %image [#AA] = 9
    set %image [#AA] 09
end_if
wait 300
:bbb
//------------------------------------------------------------------------------
for #BB 1 size(%image) 1 // цикл для поиска картинок
    set #b findimage (#startXb #startYb #endXb #endYb ($path%image[#BB].bmp) %arr 2 80)
    if  #b > 0
        log Картинка b %image [#BB] совпала
        goto peremenkib
    else
        log Картинка не найдена b  #BB
    end_if
end_for
wait 10
:peremenkib
if  %image [#BB] = 0
    set %image [#BB] 00
end_if
if  %image [#BB] = 1
    set %image [#BB] 01
end_if
if  %image [#BB] = 2
    set %image [#BB] 02
end_if
if  %image [#BB] = 3
    set %image [#BB] 03
end_if
if  %image [#BB] = 4
    set %image [#BB] 04
end_if
if  %image [#BB] = 5
    set %image [#BB] 05
end_if
if  %image [#BB] = 6
    set %image [#BB] 06
end_if
if  %image [#BB] = 7
    set %image [#BB] 07
end_if
if  %image [#BB] = 8
    set %image [#BB] 08
end_if
if  %image [#BB] = 9
    set %image [#BB] 09
end_if
wait 300
//------------------------------------------------------------------------------
:ccc
for #CC 1 size(%image) 1 // цикл для поиска картинок
    set #c findimage (#startXc #startYc #endXc #endYc ($path%image[#CC].bmp) %arr 2 80)
    if  #c > 0
        log Картинка c %image [#CC] совпала
        goto peremenkic
    else
        log Картинка не найдена c  #CC
    end_if
end_for
wait 10
:peremenkic
if  %image [#CC] = 0
    set %image [#CC] 00
end_if
if  %image [#CC] = 1
    set %image [#CC] 01
end_if
if  %image [#CC] = 2
    set %image [#CC] 02
end_if
if  %image [#CC] = 3
    set %image [#CC] 03
end_if
if  %image [#CC] = 4
    set %image [#CC] 04
end_if
if  %image [#CC] = 5
    set %image [#CC] 05
end_if
if  %image [#CC] = 6
    set %image [#CC] 06
end_if
if  %image [#CC] = 7
    set %image [#CC] 07
end_if
if  %image [#CC] = 8
    set %image [#CC] 08
end_if
if  %image [#CC] = 9
    set %image [#CC] 09
end_if

if  %image [#CC] = XX or %image [#BB] = XX or %image [#AA] = XX
    log Одна из переменных не найдена
end_if
set $d %image [#CC]%image[#BB]%image [#AA]    // Получаем число d из 3 переменных cba

log Переменная %image [#CC] %image [#BB] %image [#AA] / $d
log #size Какойто текст

end_script



В скрипте 3 последовательных поиска картинок в 3 местах экрана.
Ищем картинку с названием 0
Скрит 1:
Находит только первую картинку и все
( если выключить в скрипте 1 и 2 поиск то поиск номер3 находит картинку)

Скрипт2:
Работает отлично
(Но массив с количеством картинок вырастит в разы и поиск замедлится)

В скриптах выделил разницу таким слешем ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

Автор: cirus 26.3.2017, 15:22

Код
set %image

Это имя массива с картинками.
Код
if  %image [#AA] = 0
    set %image [#AA] 00
end_if

Теперь, в него же записывается некий результат, 00 в данном случае.
Какой итог? В массиве %image уже нет имени картинки, там 00. Поэтому другие поиски не работают. Имя массива, в который записывается результат измените.
Ваш код можно упростить и сократить ну раз так в пять, если не больше. Подробнее опишите что требуется сделать.

Автор: dron4938 26.3.2017, 15:35

Цитата(cirus @ 26.3.2017, 15:22) *

Код
set %image

Это имя массива с картинками.
Код
if  %image [#AA] = 0
    set %image [#AA] 00
end_if

Теперь, в него же записывается некий результат, 00 в данном случае.
Какой итог? В массиве %image уже нет имени картинки, там 00. Поэтому другие поиски не работают. Имя массива, в который записывается результат измените.
Ваш код можно упростить и сократить ну раз так в пять, если не больше. Подробнее опишите что требуется сделать.


ААААААА, точно же, я был так слеп)

Упростить? Ну нужно в трех разных местах определить какая там цифра. Не выделяются чтоб скопировать.
Создано 99 изображений с числами и ищутся по совпадению картинки. Картинки с числами в папке пилота называются также какая цифра нарисована.
т.е на картинке с названием 99 нарисовано 99

ПРИМЕР
23 11 99 - нужно сначала найти и определить цифру 99, затем цифру 11 и затем 23

После записать в переменную без пробелов в виде 231199

ПРИМЕР2 (числа бывают такие)
0 35 0

от такого числа в итоге нужно получить число 00 35 00
После записать в переменную без пробелов в виде 003500
из-за этого и создавал данный код
if %image [#AA] = 0
set %image [#AA] 00
end_if

Автор: cirus 26.3.2017, 15:45

Для поиска чисел есть готовый скрипт. https://forum.uokit.com/index.php?showtopic=30000
Вашим скриптом, скорее всего, не найдете нужные числа. Если нужно найти 11, то картинка 1 тоже будет найдена. Или число 23, будет найдена и 2, и 3, и 21.

Автор: dron4938 26.3.2017, 15:58

Цитата(cirus @ 26.3.2017, 15:45) *

Для поиска чисел есть готовый скрипт. https://forum.uokit.com/index.php?showtopic=30000
Вашим скриптом, скорее всего, не найдете нужные числа. Если нужно найти 11, то картинка 1 тоже будет найдена. Или число 23, будет найдена и 2, и 3, и 21.

Спасибо очень интересно, буду разбираться)

Автор: vis77 1.6.2017, 16:55

Цитата(EL-GReeN @ 17.1.2013, 14:52) *

http://uopilot.tati.pro/index.php?title=Findimage
Читали?


с deviation не понял, нужно указывать переменную? или это автоматом 3%?
например мне нужно чтобы было 5% погрешность оттенка, то что писать?

Автор: dron4938 1.6.2017, 17:24

Цитата(vis77 @ 1.6.2017, 17:55) *

с deviation не понял, нужно указывать переменную? или это автоматом 3%?
например мне нужно чтобы было 5% погрешность оттенка, то что писать?

set #b FindImage (10 100 30 150 (d:\myImages\wolf.bmp) %arr 2 80 1 5)
2- метод поиска (быстрый)
80 -точность поиска в %
1- ограничение количества найденных изображений
5- Погрешность оттенка

Автор: ZaArazkin 20.5.2019, 11:15

Всем привет. помогите написать скрипт.
Есть поле 3 на 3. В нем при нажатие кнопки меняються картинки. Надо сделать так, чтобы когда во всех 9 клетках появилась одна картинка, скрипт остановился, если не выпало 9 одинаковых, продолжать обновлять.


Заранее спасибо

Автор: cirus 20.5.2019, 12:31

Код
set #b 0
while #b < 9     // пока не найдено 9 картинок
    set %a GetImage  (136, 365 152, 391 abs )      // сделать скрин (координаты абсолютные)
    set $bmp SaveImage (%a [1 1] C:\picture.bmp)   // сохранить скрин (можно убрать)

    set #b FindImage (8, 8 201, 209  (%a[1 1]) %arr 2 80 9 5)     // поиск
    hint #b   // сколько найдено
    set #a DeleteImage (%a [1 1])  // удалить скрин
    wait 100
end_while
end_script

В GetImage указывать абсолютные координаты, т. к. с относительными неправильно скрин сохраняется.

Автор: ZaArazkin 20.5.2019, 13:40

Цитата(cirus @ 20.5.2019, 12:31) *

Код
set #b 0
while #b < 9     // пока не найдено 9 картинок
    set %a GetImage  (136, 365 152, 391 abs )      // сделать скрин (координаты абсолютные)
    set $bmp SaveImage (%a [1 1] C:\picture.bmp)   // сохранить скрин (можно убрать)

    set #b FindImage (8, 8 201, 209  (%a[1 1]) %arr 2 80 9 5)     // поиск
    hint #b   // сколько найдено
    set #a DeleteImage (%a [1 1])  // удалить скрин
    wait 100
end_while
end_script

В GetImage указывать абсолютные координаты, т. к. с относительными неправильно скрин сохраняется.


Не находит картинку.



Нашел у себя ошибку

Цитата(ZaArazkin @ 20.5.2019, 13:37) *

Не находит картинку.
Нашел у себя ошибку


Эммммм а где задаеться какую картинку искать?


Эскизы прикрепленных изображений
Прикрепленное изображение

Прикрепленные файлы
Прикрепленный файл  poica.bmp ( 1,42 килобайт ) Кол-во скачиваний: 86

Автор: ZaArazkin 20.5.2019, 13:52

сократил до поиска картинок чтобы проверить.
НО почему то выдает #b=80

И еще немного не понимаю, как воткнуть команду, что если картинок меньше допустим 2 он жал кнопку обновить


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: cirus 20.5.2019, 14:14

Цитата
НО почему то выдает #b=80

Если найдена одна картинка, то выдаст % точности, с которой найдена картинки, а не количество. Можно так сделать:
Код
set #b 0
while #b < 9     // пока не найдено 9 картинок
    set %a GetImage  (136, 365 152, 391 abs )      // сделать скрин (координаты абсолютные)
    set $bmp SaveImage (%a [1 1] C:\picture.bmp)   // сохранить скрин (можно убрать)

    set #b FindImage (8, 8 201, 209  (%a[1 1]) %arr 2 80 9 5)     // поиск
    hint size(%arr)   // сколько найдено
    set #b size(%arr)

    set #a DeleteImage (%a [1 1])  // удалить скрин
    wait 100
end_while
end_script

Цитата
Эммммм а где задаеться какую картинку искать?

Координаты GetImage. Эту картинку и будет искать.
Цитата
что если картинок меньше допустим 2 он жал кнопку обновить

После поиска:
Код
if size(%arr) < 2
    // нужное действие
end_if


Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)