<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Помогите разобраться с PixelSearch]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5302</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5302&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Помогите разобраться с PixelSearch».]]></description>
		<lastBuildDate>Sun, 01 May 2016 20:14:15 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103238#p103238</link>
			<description><![CDATA[<div class="quotebox"><cite>KusochekDobra пишет:</cite><blockquote><p>Разобрался со своей проблемой.</p></blockquote></div><p>Не совсем, правильнее так:</p><div class="codebox"><pre><code>
SeveralSearch(ix1, iy1, w, h, Color, Variation = 0, RGB = &quot;&quot;)  {
	x1 := ix1, y1 := iy1, x2 := ix1 + w - 1, y2 := iy2 := iy1 + h - 1
	ErrorCount := 0, Coords := []
	Loop
	{
		PixelSearch, mX, mY, x1, y1, x2, y2, %Color%, %Variation%, Fast %RGB%
		If (mY = &quot;&quot; &amp;&amp; ++ErrorCount &gt; 1)
			Break
		If (mY = &quot;&quot;)
			x1 := ix1, y1 += 1, y2 := iy2
		Else
			x1 := mX + 1, y1 := y2 := mY, ErrorCount := 0, Coords.Push([mX, mY])
	}
	Return Coords
}
</code></pre></div><p>для удобства x2, y2 заменил на ширину и высоту. Вот <a href="https://ru.files.fm/u/3tvejqef">архив</a> с картинкой. Предложенное мною решение было перекопировано с <a href="http://forum.script-coding.com/viewtopic.php?pid=84560#p84560">поиска картинки</a>, с пикселем после найденного высоту области лучше сводить к единице. Ну и конечно поправил ошибку с x1 := 0.<br /></p><div class="quotebox"><blockquote><p>хотя для этого значения нужно предварительно извлекать в другие переменные.</p></blockquote></div><p>Как видите из архива, не надо.</p><div class="quotebox"><blockquote><p>Жаль, что Вы не сочли важным хотя бы бегло посмотреть на скудные строки моего скромного сценария, предпочитая не указывать на ошибки, а предлагая своё решение</p></blockquote></div><p>Зачем, если переписав чужой код я написал бы тоже самое что и предложил.</p><div class="quotebox"><blockquote><p>без пояснений. Как всякий нуб, нуждался я именно в первом.</p></blockquote></div><p>Большинству нубов нужно только решение, уж поверьте из моего опыта общения с таковыми. Пояснения отнимают больше времени и сил чем само решение, и уже если они вам нужны, то о них нужно попросить, а не думать о том что кто то должен знать что вы в них нуждаетесь, их вам тут никто не должен, как и саму помощь.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 01 May 2016 20:14:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103238#p103238</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103192#p103192</link>
			<description><![CDATA[<p>Разобрался со своей проблемой. Как позже обратил внимание в гугль переводе справки по PixelSearch, в скобочках указано, что в случае, если пиксель не будет найден, то параметры получающие координаты окажутся пустыми. Что в принципе было обнаружено в поиске решения. Жаль, что Вы не сочли важным хотя бы бегло посмотреть на скудные строки моего скромного сценария, предпочитая не указывать на ошибки, а предлагая своё решение без пояснений. Как всякий нуб, нуждался я именно в первом. Но в любом случае, за участие спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Fri, 29 Apr 2016 11:59:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103192#p103192</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103177#p103177</link>
			<description><![CDATA[<p>Большое спасибо! Переписал всё в чистый вариант и заработало, а если подставить в тестовый сценарий, то почему-то не работает, хотя всё лишнее убрано в комментарий.<br /></p><div class="codebox"><pre><code>
Click % v[1] &quot; &quot; v[2]
</code></pre></div><p>Не водит мышкой, но<br /></p><div class="codebox"><pre><code>
SendPlay {Click, %x%, %y%, 0}
</code></pre></div><p>работает, хотя для этого значения нужно предварительно извлекать в другие переменные.</p><p>У меня не сложный код. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Вместо вызова метода, выполняются все те же операции. Ошибку свою понял, когда спать уже пошёл. Поиск следующего пикселя нужно осуществлять не просто со следующей координаты ИКС, но правую часть области поиска нужно поднимать на высоту координаты y1, чтобы поиск осуществлялся строке. Иначе, если следующий за найденным пиксель не окажется на месте, будет найден тот, что ниже, со следующей ИКС координатой, если такой имеется, при этом&nbsp; все предыдущие пиксели найдены не будут. Поэтому он у меня и катал курсором по правому краю треугольника, от вершины к основанию. Но всё равно почему-то клацает неправильно. Теперь зависает на первом пикселе. =/</p><p><a href="https://yadi.sk/d/veC09W-lrN6D6">Вот вариант</a>, который был необходим. В метод добавил 4 переменные, чтобы модифицируемая область поиска возвращалась к координатам области поиска, передаваемой параметрами. Так немного быстрее происходит анализ.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Thu, 28 Apr 2016 14:05:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103177#p103177</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103162#p103162</link>
			<description><![CDATA[<p>Я думал что мы говорили о том, что вы приведёте своё совмещённое с моим, ваш код слишком сложен, хотя описанная вами логика идентична моей. Я так и не понял, как вы используете мой код, что он не работает.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 27 Apr 2016 23:01:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103162#p103162</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103158#p103158</link>
			<description><![CDATA[<div class="codebox"><pre><code>
nazhWhile := 0					; Ожидает появления nazhimaite.bmp
while (nazhWhile == 0) {
	ImageSearch, varX, varY, 0, 0, A_ScreenWidth, A_ScreenHeight, % &quot;*50 *Trans000000 &quot; &quot;img\items\nazhimaite.bmp&quot;
	if (ErrorLevel == 0) {
		nazhWhile := 1
		varX += 19
		varY += 64
	} else {
		sleep 20
	}
}

PixelGetColor, pix_color, varX, varY ; получает цвет пикселя под найденным объектом

srch_pix_x1 := varX - 11	; общая область поиска 22 х 22 пикселя
srch_pix_y1 := varY - 11
srch_pix_x2 := varX + 11
srch_pix_y2 := varY + 11

pix_x1 := srch_pix_x1		; изменяемые стартовые координаты области поиска
pix_y1 := srch_pix_y1

coordArr := []
err := 0, pix_count := 0
while (err != 2) {
	PixelSearch, find_x, find_y, pix_x1, pix_y1, srch_pix_x2, srch_pix_y2, pix_color, 0, Fast
	if (ErrorLevel == 0) {
		err := 0
		coordArr.Push(find_x, find_y)
		pix_x1 := % find_x + 1
		pix_count++
	} else if (ErrorLevel == 1) {
		pix_x1 := srch_pix_x1
		pix_y1 := % find_y + 1
		err++
	}
}
my_var := 1
while (my_var &lt; pix_count * 2) {
	x := coordArr[my_var]
	y := coordArr[my_var + 1]
	SendPlay {Click, %x%, %y%, 0}
	my_var += 2
	sleep 50
}

MsgBox % &quot;Найдено пикселей -&gt;`n&quot; pix_count
</code></pre></div><p>Весь код.<br />Первый вайл можно не брать в расчёт. Искать для пущей точности теста лучше треугольник. Поскольку его положение известно, искать пиксели в небольшой области вокруг него. У меня pix_x1 и pix_y1 - это верхний левый угол области поиска,&nbsp; который я смещаю на один пиксель вправо всякий раз, когда пиксель найден и на один пиксель вниз, когда не найден, возвращая при этом pix_x1 в исходное положение. Логично, что подряд 2 фейла утверждают, что справа после последнего найденного пикселя таких же нет и в следующей строке так же, прекращая поиск. Последний цикл просто перебирает координаты перемещая по ним курсор, дабы визуально подтвердить, что не зря хлебом кормили. Всё вроде правильно, но на деле находит 221 пиксель, после чего катает курсор по правой границе треугольника сверху вниз, как будто не происходит<br /></p><div class="codebox"><pre><code>
pix_x1 := srch_pix_x1
</code></pre></div><p>возвращающего ИКС координату области поиска в исходное положение.</p><p>Я с уважением отношусь к грамотно оформленному коду, предлагающему более изящное решение, чем мой способ &quot;в лоб&quot;, но последний хотя бы мышь тягает по экрану, хоть и не так, как требуется. Быть может Вы взглянете опытным взором, где я &quot;не там&quot; запятую может поставил, или не дописал чего?</p><p>В предыдущем софте единственной функцией можно было получить массив с координатами, а здесь вот, приходится изобретать этот велосипед, но у того проекта возможностей в разы меньше, чем у АНК и он не развивается уже давно. Поэтому придётся приложить много упорства, чтобы перевести все прошлые работы в новый функционал. Я здесь если не навсегда, то на долго и в отсутствии достойной литературы и очень фрагментированных знаний об этом инструменте, надеюсь на понимание местных жителей.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Wed, 27 Apr 2016 22:26:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103158#p103158</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103154#p103154</link>
			<description><![CDATA[<p>Подставьте пожалуйста мою поделку и передайте параметрами переменные, которые она должна получить. Нарисуйте в пайнте квадратик такой же взяв его цвет. Если не будет работать, то наверое нужно комп перезагрузить, может он на меня обиделся. А обманывать Вас не вижу никаких причин. Ещё раз низко кланяюсь за упорство разъяснять нубу его неправоту. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>А выше посмотрите, там всё есть.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Wed, 27 Apr 2016 21:05:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103154#p103154</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103153#p103153</link>
			<description><![CDATA[<p>И как это сделать в контексте отсутствия полного кода?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 27 Apr 2016 21:04:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103153#p103153</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103152#p103152</link>
			<description><![CDATA[<p>Да, запускал, благодарю за труды. Но мы, вероятно, говорим о двух разных сценариях, с разными же условиями. Я пытаюсь приманстырить Ваш вариант к своему, а Вы, рассуждаете о функциональности своей поделки вне этого контекста, поэтому у Вас и должно всё работать. Но целью, должно быть, чтобы работало у меня. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Wed, 27 Apr 2016 21:01:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103152#p103152</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103151#p103151</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Хотя, если я правильно делаю запись</p></blockquote></div><p>Нет там не каждой итерации происходит запись.</p><div class="quotebox"><blockquote><p>Дело то не в картинке. Если подставить MsgBox</p></blockquote></div><p>Так там уже MsgBox где надо стоит, у меня при запуске из архива находит 11 пикселей, и все их кликает. Вы код из архива запускали, или я зря стараюсь?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 27 Apr 2016 20:53:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103151#p103151</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103150#p103150</link>
			<description><![CDATA[<p>Дело то не в картинке. Если подставить MsgBox после<br /></p><div class="codebox"><pre><code>
; предыдущий код
x1 := mX + 1, ErrorCount := 0, prY := mY, сoords.Push([mX, mY])
MsgBox % mX &quot; &quot; mY
</code></pre></div><p>То показывает оба числа, а когда Return возвращает результат заполненного 26-ю объектами массива, то его элементы не содержат этих значений. Картинка здесь отрабатывает свою функцию на 100%<br />Хотя, если я правильно делаю запись, то если сразу извлекать их в MsgBox, то первый элемент содержит координаты, а следующие уже нет.<br /></p><div class="codebox"><pre><code>
x1 := mX + 1, ErrorCount := 0, prY := mY, сoords.Push([mX, mY])
MsgBox % coords[A_Index, 1] &quot; &quot; coords[A_Index, 2]
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Wed, 27 Apr 2016 20:42:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103150#p103150</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103146#p103146</link>
			<description><![CDATA[<p>У вас с <a href="https://ru.files.fm/u/ddnd2hgz">такой картинкой</a> работает? Отправьте архив с картинкой на которой не работает.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 27 Apr 2016 19:57:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103146#p103146</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103144#p103144</link>
			<description><![CDATA[<p>Вот я в параметры вызова вместо чисел подставляю переменные результирующие область поиска и так же, цвет, полученный в результате PixelGetColor. Первым сообщением получаю &quot;x =&nbsp; y = &quot;, а вторым &quot;Найдено пикселей -&gt; 26&quot;, соответственно в пустые координаты не кликает. Свой, работающий криво код убрал в комментарий. Осваиваю синтаксис после другого софта, поэтому не ведаю практически никаких тонкостей.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Wed, 27 Apr 2016 19:34:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103144#p103144</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103141#p103141</link>
			<description><![CDATA[<p>Ну тогда не знаю, оно в одном месте</p><div class="codebox"><pre><code>Coords.Push([mX, mY])</code></pre></div><p>массив заполняет, соответственно и MaxIndex оттуда же. У меня работает.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 27 Apr 2016 19:16:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103141#p103141</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103140#p103140</link>
			<description><![CDATA[<p>Да, я так же, через MsgBox смотрел.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Wed, 27 Apr 2016 19:12:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103140#p103140</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Помогите разобраться с PixelSearch]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103136#p103136</link>
			<description><![CDATA[<div class="codebox"><pre><code>	For k, v in Obj := SeveralSearch(100, 1, 111, 11, 0x000000) 
		MsgBox % &quot;x&quot; v[1] &quot; y&quot; v[2]
	MsgBox % &quot;Найдено пикселей -&gt;`n&quot; Obj.MaxIndex()
	Return</code></pre></div><p>Что, так ничего?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 27 Apr 2016 19:02:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103136#p103136</guid>
		</item>
	</channel>
</rss>
