Здравствуйте, гость ( Вход | Регистрация )

3 страниц V < 1 2 3 >  
Ответить в эту темуОткрыть новую тему
> Screen Scanner, аналог findcolor и findimage
_LESTAT_
сообщение 8.5.2011, 8:29
Сообщение #21


****

Apprentice
Сообщений: 103
Регистрация: 12.3.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.512
Возраст: 25



Цитата(DarkMaster @ 6.5.2011, 7:17) *

Не так давно была написана еще одна прога, которая вытягивает информацию об окне, в т.ч. координаты. Ты можешь брать координаты окна, прибавлять к ним относительные и уже их использовать в скрине.

При 100% загруженом процессоре, у меня возникают некторые сомнения , стоит ли использовать несколько внешних прог, скрипты пилота с финдколорами при такой загрузке, стабильно вываливаться каждые 5 минут благо я написал скрипттик который , закрывает обноруженое окошко и сразу перезапускает скрипт. Кстате вот он может кому и пригодиться. Время между строк лучше ставить около 300, чтобы не сильно грузить проц.
Закрытие всплывающих окошек и перезапуск скриптов
set #em findwindow (UoPilot Message ) //Поиск информационных окон, об ошибках в скриптах
if #em > 0
pause_script 4 //Приостанавливаем скрипты которые изменяют активное окно, чтобы не мешали закрытию всплывающего окошка
showwindow #em
sendex {Enter} //@{F4} //Посылаем Enter в такие окна
wait 1s
set logging Вылезло окно с ошибкой скрипта, жмем в нем ОК.
alarm
start_script 2 //Перезапускаемые скрипты
start_script 4
end_if
set #em 0


Пожелания к программам Zeleax: Ввести возможность через параметры запускать все вспомогательные проги Zeleax , с повышеным или высоким приоритетом. Это возможно чуток повысит стабильность. Иначе они могут запускаться очень долго, при полной заггрузк епроца. И еще неплохо бы придумать другой способ общения между программами и пилотом, нежели буфер обмена, например через запись в фаил - считывание файла. Потому как буфер уже используют мои скрипты. Может какнить прям в память пилота вклиниваться и заменять неиспользуемые функции, которые может считывать пилот, нужными данными или еще как то.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 8.5.2011, 13:48
Сообщение #22


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



cscan 1.0.9

В параметре -hw (-hwindow) теперь можно задать десятичный handle окна, в котором будет производиться поиск (т.н. "поиск в относительных координатах").

Например:
Код
move 600, 500 abs // перемещаем мышку в указанную точку на экране
set #handle windowfromcursor // получаем handle окна под курсором мыши
set workwindow #handle // привязываем пилот к указанному окну (если нужно)

set #lifeLiveC 204 // задаем цвет для поиска
// выполняем поиск в заданной области окна указанного с помощью #handle
set $cscanparam 270, 40 -w=100 -h=300 -hw= #handle -c( #lifeLiveC )
gosub cscan
if #a > 0
   set #persLifeX %arr [1 1] // начало полоски жизни перса
   set #lifeY %arr [1 2] // полоска жизни
   msg  Координаты полоски жизни в окне: #persLifeX #lifeY
else
   msg Ошибка! не найдена полоска жизни перса!
   stop_script
end_if


Отключайте программы контролирующие буфер обмена и мешающие cscan поместить результат в буфер! (Например, PuntoSwitcher)
Для выявления этих программ в архив добавлена консольная утилита cscanC.exe, которая делает то же что и cscan, но при этом открывает консольное окно в котором выводится информация о программах, блокирующих в данный момент буфер обмена.

Известные баги данной версии:
- при поиске в окне (поиск в относительных координатах) нужно обязательно указывать координаты области поиска. Если эти координаты не указать, то может быть ошибка


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.5.2011, 15:36
Сообщение #23


***********

Модератор UOPilot
Сообщений: 9.764
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29953
Пользователь №: 11.279



Цитата
Ввести возможность через параметры запускать все вспомогательные проги Zeleax , с повышеным или высоким приоритетом

Для этого можно использовать:
exec start програ параметры.
Для более подробнеой справки нажмите пуск/выпролнить cmd. Затем введите start /?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 8.5.2011, 20:32
Сообщение #24


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



cscan 1.1.0

1) Если задан необязательный параметр -file (-f), то программа будет сохранять результаты в указанный файл, а не через буфер обмена.
Имя файла обязательно указывается внутри круглых скобок.
Я очень рекомендую использовать эту опцию, т.к. программа будет работать намного стабильнее, чем при использовании буфера обмена. Кроме того результаты возвращаются в массиве %arr построчно, что намного удобнее, а не в одной строке.

Пример:
cscan.exe -x1=10 -y1=20 -x2=1000 -y2=600 -dx=1 -dy=1 -c=(255) -f=( d:\1.txt )

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

2) если не указаны области поиска внутри окна, то поиск теперь будет происходить во всей области окна без ошибок.
Пример поиска 1-го подходящего пикселя цвета 255 внутри окна с хендлом 1446, результаты поиска будут в файле d:\1.txt:
cscan.exe -hw=( 1446 ) -c=(255) -f=( d:\1.txt )


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 8.5.2011, 23:05
Сообщение #25


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



1) Добавил одну строку (wait 100) в процедуру работающую с файлом (в 1 посте) - результат стал в моём случае 100% корректным.
2) Файл для сохранения результатов и cscan.exe размещаю на RAM диске от DataRam. Под RAMDisk выделил 4МБ памяти - на все случаи жизни.
Всё просто летает, причём правильно и без ошибок (и не нужен буфер обмена, и не нужно выключать PuntoSwitcher).

З.Ы.: но баги всегда есть, их не может не быть (просто их не сразу видно ))


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 9.5.2011, 12:59
Сообщение #26


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



cscan 1.2.0
Добавлен параметр -img для поиска целых изображений на экране

Если указан параметр -img (имя_графического_файла), то вместо поиска цветов на экране (или в окне) будет выполнен поиск прямоугольного изображения, находящегося в указанном графическом файле. Имя файла обязательно указывать в круглых скобках. Поддерживаются только раширения bmp и png (форматы без потери качества). Значение шага dx и dy в данном случае игнорируется (автоматически устанавливается в 1. Поиск производится в указанной области экрана или окна сверху-вниз, слева-направо).
Пример:
Код
// выполняем поиск на всем экране (по умолчанию)
set $cscanparam  -img=( g:\molnija.png )
gosub cscan
if #a > 0
   msg Заклинание Молния в координатах: %arr [1 1] , %arr [1 2] . Цвет: %arr [1 3]
else
   msg Заклинание Молния не найдено!
end_if


Результат будет содержать координату пикселя левого верхнего угла найденного изображения и цвет этого пикселя.
333 598 4608127
endcscan

Если изображение не найдено, то как и в случае с поиском цветов результат будет
-1000 -1000 -1000
endcscan

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


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 1.6.2011, 13:00
Сообщение #27


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



CScan v.1.3.0

Добавил параметр -crop
Используется, если нужно найти координаты области, которая ограничивает все пиксели всех указанных цветов.
cscan 261, 736 287, 747 -c( b(100-255), 255 ) -crop -f( d:\1.txt )

Результат: левый верхний и правый нижний углы ограничивающей области:
268 739 -3110
280 745 -3120
endcscan

Код
set $cscanparam  261, 736 287, 747 -c( b(100-255), 12135484 ) -crop
gosub cscan
if #a > 0
   msg Пиксели указанных цветов ограничены областью %arr [1 1] , %arr [1 2] - %arr [2 1] , %arr [2 2]
else
   msg Пиксели указанных цветов не найдены!
end_if


Теперь опции программы и обозначения RGB-цветов можно писать в любом регистре.
Также теперь по-умолчанию подсчет общего числа точек заданных цветов (а также поиск области ограничения) происходит по всем указанным цветам (или диапазонам), а не только по первому найденному


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 4.6.2011, 0:21
Сообщение #28


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Исправил процедуру в конце 1-го поста, чтоб правильно отрабатывала результат при использовании параметра -crop


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
avgur
сообщение 9.6.2011, 15:15
Сообщение #29


***

Novice
Сообщений: 94
Регистрация: 15.8.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.926
Возраст: 25



Ищу цвет иконки с бафов в окне игры. Окно растянуто на весь экран, т.е. не важно абсолютные координаты или относительные, цвет всеравно будет попадать в заданный квадрат (область в которой находятся иконки бафов). Но

Работает, файл arr1test.txt появляется:
set $a findcolor (380, 2 557, 22 1 1 11517605 %arr 2)
save_array %arr с:\arr1test.txt

Не работает, файл arr1test.txt отсутствует:
exec cscan.exe -x1=380 -y1=2 -x2=557 -y2=22 -dx=1 -dy=1 -c=(11517605) -f=( c:\arr1test.txt )

По идее даже если цвет не найден, то cscan.exe должен всеравно создать файл, но файла нет. Буфер тоже не трогает, если убрать -f, в буфере остается скопированный до запуска скрипта текст.
Из 10 прогонок скрипта cscan.exe появляется в списках процессов 1-2 раза, хотя мб конечно он слишком быстро отрабатывает и просто не успевает показаться в диспечере задач. ОС win xp64bit sp2, фреймворк установлен, uowin у меня отлично работает и с файлом и с буфером, а эта не хочет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 9.6.2011, 17:50
Сообщение #30


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(avgur @ 9.6.2011, 15:15) *

По идее даже если цвет не найден, то cscan.exe должен всеравно создать файл, но файла нет.

У меня на диске C система тоже не даёт создавать файл, а вот на диске D всё работает:
exec cscan.exe -x1=380 -y1=2 -x2=557 -y2=22 -dx=1 -dy=1 -c=(11517605) -f=( d:\arr1test.txt ).

Я для этих целей вообще себе сделал маленький RAM-диск, чтоб винт не гонять зря. В 1-м посте писал об этом.

Кстати, можно делать запись проще с тем же результатом:
exec cscan.exe 380, 2 557, 22 -c=(11517605) -f=( d:\arr1test.txt )


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 9.6.2011, 18:07
Сообщение #31


***********

Модератор UOPilot
Сообщений: 9.764
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29953
Пользователь №: 11.279



Как виндой создать рам диск? У нее что-то встроенное есть, даже когда-то юзал, но задолбался уже искать(


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
avgur
сообщение 9.6.2011, 18:13
Сообщение #32


***

Novice
Сообщений: 94
Регистрация: 15.8.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.926
Возраст: 25



у меня не создает ни в буфере, ни на D, ни других дисках. Но на диске D всегда после запуска скрипта создается файл 1.txt и в нем
261 736 -3110
287 747 -3120
endcscan
Почему 1.txt, а не arr1test.txt?
Почему на D, если я указываю диск G?
И почему содержимое файла всегда одно и тоже?
Файнд колор находит цвет а этот сканер нет. Мне кажется он у меня вообще не пашет или пашет но как-то не правильно. Что мне делать? (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 10.6.2011, 0:04
Сообщение #33


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(DarkMaster @ 9.6.2011, 18:07) *

Как виндой создать рам диск? У нее что-то встроенное есть, даже когда-то юзал, но задолбался уже искать(

Дак вот же ссылка на нормальную бесплатную программу (у меня такая установлена). Я ж писАл в 1-м посте

Цитата
у меня не создает ни в буфере, ни на D, ни других дисках. Но на диске D всегда после запуска скрипта создается файл 1.txt и в нем
261 736 -3110
287 747 -3120
endcscan
Почему 1.txt, а не arr1test.txt?

Ммммм... Наконец-то появился настоящий тестер! )
Ну ошибся я чуток с версией выложенной программы. Это была тестовая версия с жестко зашитыми параметрами ))
Обновил на сайте до 1.3.1.

Если что не так- пишите!


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 10.6.2011, 0:23
Сообщение #34


***********

Модератор UOPilot
Сообщений: 9.764
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29953
Пользователь №: 11.279



Zeleax я видел. Чесна) Но хотелось бы обойтись без доп софта.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 10.6.2011, 0:31
Сообщение #35


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(DarkMaster @ 10.6.2011, 0:23) *

Zeleax я видел. Чесна) Но хотелось бы обойтись без доп софта.

Та ну на! Я тоже хотел обойтись без доп.софта, но поискал, почитал и остановился на этом маленьком, быстром и удобном )
З.Ы.: процентов с этого не имею ))
З.З.Ы.: вишу сейчас в инете через GSM-модем (в отпуске). Тормоза еще те, но жить можно


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
avgur
сообщение 10.6.2011, 14:19
Сообщение #36


***

Novice
Сообщений: 94
Регистрация: 15.8.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.926
Возраст: 25



Цитата(Zeleax @ 10.6.2011, 1:04) *

Ммммм... Наконец-то появился настоящий тестер! )

как говорится пока "петух не клюнет ...", просто файнд колор часто не видит цвет, даже если он есть (видит иногда с 10-той попытки), вот и пришлось осваивать альтернативы. Вообще софт вы делаете очень полезный, тот же uowin я активно использую в своих скриптах. Так что помогу чем смогу (IMG:style_emoticons/default/smile.gif)

Погонял вот этот код. Привязка скрипта идет к окну игры.
Код

set #handleWin findwindow (Lineage II)
set workwindow #handleWin
exec cscan.exe -hw=#handleWin -c=(3832214) -f=( E:\UOPilot\arr1test.txt )
end_script


Координаты которые видит пилот и cscan различаются. Я пробовал перемещать окно игры в разные области экрана, привязка к окну работает как и следует, координаты относительные.
Различие всегда составляет 4 пиксела по оси Х и 30 пикселов по оси Y.
Вот пара примеров:

6, 2 5071991 - точка с уникальным цветом в окне игры, снята пилотом по Ctrl + A
10 32 5071991 - из файла arr1test.txt

417, 12 3832214 - точка с уникальным цветом в окне игры, снята пилотом по Ctrl + A
421 42 3832214 - arr1test.txt

Это конечно особо не проблема и можно подправлять координаты простым вычитанием в скрипте, но всеже.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 10.6.2011, 23:38
Сообщение #37


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(avgur @ 10.6.2011, 14:19) *

Погонял вот этот код. Привязка скрипта идет к окну игры.
Код

set #handleWin findwindow (Lineage II)
set workwindow #handleWin
exec cscan.exe -hw=#handleWin -c=(3832214) -f=( E:\UOPilot\arr1test.txt )
end_script


Координаты которые видит пилот и cscan различаются. Я пробовал перемещать окно игры в разные области экрана, привязка к окну работает как и следует, координаты относительные.
Различие всегда составляет 4 пиксела по оси Х и 30 пикселов по оси Y.
Вот пара примеров:

6, 2 5071991 - точка с уникальным цветом в окне игры, снята пилотом по Ctrl + A
10 32 5071991 - из файла arr1test.txt

417, 12 3832214 - точка с уникальным цветом в окне игры, снята пилотом по Ctrl + A
421 42 3832214 - arr1test.txt

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

Очень странно, я проверил на паре окон граф. редактора - cscan и findcolor находят пиксели заданного цвета в одних и тех же координатах окна. И Ctrl+A те же выдает...
А такая проблема наблюдается только в ЛА2 или еще где-то?

Кстати, не забывайте отделять переменные скрипта пробелом от остальных параметров:
-hw= #handleWin


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
avgur
сообщение 11.6.2011, 1:12
Сообщение #38


***

Novice
Сообщений: 94
Регистрация: 15.8.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.926
Возраст: 25



findcolor у меня находит тоже что я задаю по Ctrl+A, а вот cscan показывает всегда на +4 пиксела по оси Х и +30 пикселов по оси Y. Не только в ла2, открыл картинку в стандартном виндовом вивере, тоже самое. Мб это из-за моей WinXP x64?

Перезагрузился в WinXP x86 SP3, там тоже есть "смещение" +4 по оси Х и +23 по Y. Причем это не единичный случай, проверял с разными цветами, и в игре и на картинках *.BMP, смещение есть всегда.
Если это наблюдается только у меня, то наверное я что-то делаю не так. Борюсь с этим просто расширением зоны поиска цвета.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 11.6.2011, 7:07
Сообщение #39


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Я подозреваю, что это смещение на ширину рамки окна и высоту заголовка.
А если делать привязку к окну не по заголовку, а через windowfromcursor и курсор ставить внутрь рабочей области - тоже получается со смещением?


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
avgur
сообщение 11.6.2011, 13:28
Сообщение #40


***

Novice
Сообщений: 94
Регистрация: 15.8.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 12.926
Возраст: 25



Мне тоже кажется что это смещение на ширину рамки, особенно если учесть что у WinXP x86 у меня рамка строки заголовка окон чуть тоньше чем в WinXP x64 (скин окошек другой).
Попробовал через windowfromcursor, тоже самое, впрочем оно и понятно, ведь что через заголовок, что через курсор цель одна - определение хендла окна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

3 страниц V < 1 2 3 >
Ответить в эту темуОткрыть новую тему
9 чел. читают эту тему (гостей: 9, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.9.2025, 7:28
Designed by Nickostyle