| 
		
	
		 | 
		   | 
	 
 
	
	
	
	
	   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  
			
			
  -------------------- 
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
 
	
		 | 
		   | 
	 
 
	3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0) 
	Пользователей: 0  
 
        				  
  | 
 |