|
|
  |
Screen Scanner, аналог findcolor и findimage |
|
|
_LESTAT_ |
8.5.2011, 8:29
|
   
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 , с повышеным или высоким приоритетом. Это возможно чуток повысит стабильность. Иначе они могут запускаться очень долго, при полной заггрузк епроца. И еще неплохо бы придумать другой способ общения между программами и пилотом, нежели буфер обмена, например через запись в фаил - считывание файла. Потому как буфер уже используют мои скрипты. Может какнить прям в память пилота вклиниваться и заменять неиспользуемые функции, которые может считывать пилот, нужными данными или еще как то.
|
|
|
|
Zeleax |
8.5.2011, 13:48
|
        
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, но при этом открывает консольное окно в котором выводится информация о программах, блокирующих в данный момент буфер обмена. Известные баги данной версии: - при поиске в окне (поиск в относительных координатах) нужно обязательно указывать координаты области поиска. Если эти координаты не указать, то может быть ошибка
--------------------
|
|
|
|
Zeleax |
8.5.2011, 20:32
|
        
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 )
--------------------
|
|
|
|
Zeleax |
9.5.2011, 12:59
|
        
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 Советую изображение для поиска создавать таким образом, чтобы цвет пикселя его левого верхнего угла встречался на экране игры как можно реже (был не белым, не черным и т.п.)
--------------------
|
|
|
|
Zeleax |
1.6.2011, 13:00
|
        
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-цветов можно писать в любом регистре. Также теперь по-умолчанию подсчет общего числа точек заданных цветов (а также поиск области ограничения) происходит по всем указанным цветам (или диапазонам), а не только по первому найденному
--------------------
|
|
|
|
avgur |
9.6.2011, 15:15
|
  
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 у меня отлично работает и с файлом и с буфером, а эта не хочет.
|
|
|
|
avgur |
9.6.2011, 18:13
|
  
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)
|
|
|
|
Zeleax |
10.6.2011, 0:04
|
        
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. Если что не так- пишите!
--------------------
|
|
|
|
avgur |
10.6.2011, 14:19
|
  
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 Это конечно особо не проблема и можно подправлять координаты простым вычитанием в скрипте, но всеже.
|
|
|
|
Zeleax |
10.6.2011, 23:38
|
        
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
--------------------
|
|
|
|
|
  |
9 чел. читают эту тему (гостей: 9, скрытых пользователей: 0)
Пользователей: 0
|
|