<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Не работает PixelSearch, не понимаю почему.]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=17612&amp;type=atom" />
	<updated>2023-02-22T14:41:45Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=17612</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не работает PixelSearch, не понимаю почему.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=156882#p156882" />
			<content type="html"><![CDATA[<p>Я особо не вчитывался, бегло просмотрел Ваш код, и меня смутила строка<br /></p><div class="codebox"><pre><code>PixelSearch, CurrentHorseIconPosX, CurrentHorseIconPosY, GameWindowPosX, GameWindowPosY, (GameWindowPosX + GameWindowWidth), (GameWindowPosY + GameWindowHeight), %TargetColor%</code></pre></div><p>Правильный синтаксис:<br /></p><div class="quotebox"><blockquote><p>PixelSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ColorID [, Variation, Fast|RGB]</p></blockquote></div><p><em>Добавлено: Вообще-то код верный - в обычных программах работает. Значит игра &quot;не дружит&quot; с&nbsp; AutoHotKey.</em></p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2023-02-22T14:41:45Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=156882#p156882</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не работает PixelSearch, не понимаю почему.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=156872#p156872" />
			<content type="html"><![CDATA[<p>И вообще, неплохо-бы заменить поиск по экрану на поиск в не активном невидимом (но и не свëрнутом) окне. Я тут нагуглил про нужную функцию <a href="https://forum.script-coding.com/viewtopic.php?id=12959">https://forum.script-coding.com/viewtopic.php?id=12959</a> тут. Вот только нормального описания к этой функции найти не могу. Может знаете где искать?<br />Update: Нашёл: https://forum.script-coding.com/viewtopic.php?id=8574<br />https://www.autohotkey.com/boards/viewtopic.php?t=6517</p>]]></content>
			<author>
				<name><![CDATA[NektoN95]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32518</uri>
			</author>
			<updated>2023-02-21T19:14:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=156872#p156872</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не работает PixelSearch, не понимаю почему.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=156871#p156871" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />Нафига? Реальный и искомый цвета точно совпадают. Проблемма в том что функция не возвращает ни 1 ни 0 в ErrorLevel, и то что должно происходить после первого и третьего PixelSearch не происходит.<br /><strong>ypppu</strong><br />В первом по счету PixelSearch первые две переменные выходные. Ещё две это верхняя левая граница поиска, ещё две, нижняя правая, где обе координаты заданы выражением. Данная строка кода используется в первой итерации. <br />Третий по счету PixelSearch ищет нужный цвет в квадрате от - 70 пикселей влево и вверх до +70 вправо и вниз от места, где нужный цвет был найден в первом PixelSearch. <br />И второй по счету PixelSearch это аналог первого, только он должен использоваться на второй и следующих итерациях для поиска только в квадрате 140 на 140 вокруг того места где цвет был найден в третьем PixelSearch на прошлой итерации. </p><p>TLDR: Там вроде негде ошибиться!</p>]]></content>
			<author>
				<name><![CDATA[NektoN95]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32518</uri>
			</author>
			<updated>2023-02-21T19:09:11Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=156871#p156871</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не работает PixelSearch, не понимаю почему.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=156870#p156870" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>NektoN95 пишет:</cite><blockquote><p>Не работает даже на paint.</p></blockquote></div><p>Ищите у себя ошибку. <em>PixelSearch</em> должен работать хотя бы в Paint&#039;е.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2023-02-21T18:15:42Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=156870#p156870</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не работает PixelSearch, не понимаю почему.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=156869#p156869" />
			<content type="html"><![CDATA[<p>Используйте параметр Variation.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-02-21T17:37:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=156869#p156869</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не работает PixelSearch, не понимаю почему.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=156868#p156868" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />Я его сейчас на Paint&#039;е - виндоузовской рисовалке (коменты в коде почитайте) тестирую, от работы в игре разница в 2х переменных. Не работает даже на paint. Причем я предпологал, что у скрипта проблемы в игре и проверил работает ли PixelGetColor - работает, в Paint, разумеется, - тоже. А PixelSearch - почему-то нет.</p>]]></content>
			<author>
				<name><![CDATA[NektoN95]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32518</uri>
			</author>
			<updated>2023-02-21T17:28:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=156868#p156868</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не работает PixelSearch, не понимаю почему.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=156867#p156867" />
			<content type="html"><![CDATA[<p>Я по играм не спец, вроде PixelSearch в некоторых случаях может не работать. Тут на форуме есть посты Malcev&#039;а, как можно получать информацию с экрана другими способами.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-02-21T17:03:28Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=156867#p156867</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не работает PixelSearch, не понимаю почему.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=156865#p156865" />
			<content type="html"><![CDATA[<p>Ну, координаты поиска у меня считаются от монитора, а не от окна, так-что действительно CoordMode стоит поменять. Добавил сие в начало<br /></p><div class="codebox"><pre><code>CoordMode, Pixel, Screen</code></pre></div><p>Но почему-то скрипт один фиг не работает.</p>]]></content>
			<author>
				<name><![CDATA[NektoN95]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32518</uri>
			</author>
			<updated>2023-02-21T16:05:21Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=156865#p156865</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Не работает PixelSearch, не понимаю почему.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=156864#p156864" />
			<content type="html"><![CDATA[<p>CoordMode?</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-02-21T15:53:48Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=156864#p156864</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Не работает PixelSearch, не понимаю почему.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=156863#p156863" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
Pause

F12::
Pause

;Проблема: В онлайн игре прокачивается четверка лошадей. Они движутся по заданному маршруту. В режиме карты мира видно не лошадей и повозку, а их синюю иконку. При длительной работе игра может глюконуть и движение по маршруту прекратится. Об этом нужно уведомить пользователя, что-бы он исправил ситуацию. Определить факт глюка (микроразрыва соединения с сервером) можно проверяя, изменилось положение иконки или нет.
;Задача. Определить перемещается ли иконка с заданным цветом по заданному окну (игры, но в данном случае по окну Win 7 Paint&#039;a, ибо скрипт тестируется на другом компе.). Если да, то всё норм, иначе - уведомить пользователя об этом

Loop
{
	;Ищем, где на экране окно
	WinGetPos , GameWindowPosX, GameWindowPosY, GameWindowWidth, GameWindowHeight, Безымянный - Paint
	if (GameWindowPosX = &quot;&quot;) {
	MsgBox, Не могу найти окно игры, наверное она закрыта.
	Break
	}

	;Этот кусок кода нужен что-бы определить цвет искомой иконки, если мы его не знаем. Если бы скрипт не глючил и не тестировался на Paint&#039;е вместо Black Desert, то закоментированый кусок был-бы не нужен. Пока что целевой цвет изменен на правый верхний цвет (Фиолетовый) в палитре Paint&#039;а
	;MouseGetPos, MouseX, MouseY
	;PixelGetColor, color, %MouseX%, %MouseY%
	;MsgBox, The color at the current cursor position is %color%.
	TargetColor = 0xA449A3

	;Получаем величину разрешения экрана и проверяем, не уходит ли окно за его границы
	SysGet, ScreenWidth, 78
	SysGet, ScreenHeight, 79
	if (GameWindowPosX + GameWindowWidth &gt; ScreenWidth) OR (GameWindowPosY + GameWindowHeight &gt; ScreenHeight) {
	MsgBox, Окно не полностью видно, возможно ложное срабатывание.
	Break
	}
	
	;Ищем, где на экране искомая иконка, если скрипт только запустился, то по всему окну, иначе, в окрестностях того места где оно было в последний раз
	if (CurrentHorseIconPosX = &quot;&quot;)
		PixelSearch, CurrentHorseIconPosX, CurrentHorseIconPosY, GameWindowPosX, GameWindowPosY, (GameWindowPosX + GameWindowWidth), (GameWindowPosY + GameWindowHeight), %TargetColor%
	else
		PixelSearch, CurrentHorseIconPosX, CurrentHorseIconPosY, CurrentHorseIconPosX - 70, CurrentHorseIconPosY - 70, CurrentHorseIconPosX + 70, CurrentHorseIconPosY + 70, %TargetColor%
	if (ErrorLevel = 1) {
		MsgBox, Не видно искомой иконки. Откройте карту и убедитесь, что иконку видно на всей длинне маршрута.
		Break
	}

	;Ждем пока иконка переместится, предпологается, что она должна двигаться. В случае тестирования на Paint&#039;е нужно просто переместить окно на 140 пикселей, или не перемещать. Если она не найдена в прежних координатах, то всё норм. Если нет, то в игре бы это значило что на короткое время оборвалось интернет-соединение с сервером игры и это привело к тому что повозка встала. Об этом нужно уведомить пользователя. В процессе тестирования MsgBox нужно раскоментировать.
	Sleep 3000
	PixelSearch, CurrentHorseIconPosX, CurrentHorseIconPosY, CurrentHorseIconPosX - 70, CurrentHorseIconPosY - 70, CurrentHorseIconPosX + 70, CurrentHorseIconPosY + 70, %TargetColor%
	if (ErrorLevel = 1) {
		;MsgBox, Отлично, повозка передвинулась.
		continue
	}
	else if (ErrorLevel = 0) {
		MsgBox, Увы, повозка встала.
		Break
	}
}


</code></pre></div>]]></content>
			<author>
				<name><![CDATA[NektoN95]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32518</uri>
			</author>
			<updated>2023-02-21T15:43:32Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=156863#p156863</id>
		</entry>
</feed>
