<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Определение координат игрока путем анализа изображения.]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=13365&amp;type=atom" />
	<updated>2018-03-15T18:11:57Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=13365</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение координат игрока путем анализа изображения.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=124075#p124075" />
			<content type="html"><![CDATA[<p>Что то новое решилось? Мне было бы интересно это использовать</p>]]></content>
			<author>
				<name><![CDATA[Vopliym]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33265</uri>
			</author>
			<updated>2018-03-15T18:11:57Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=124075#p124075</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение координат игрока путем анализа изображения.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=123013#p123013" />
			<content type="html"><![CDATA[<p>Все возможно, даже можно создать(собрать) изображение всей карты и искать в нем кусочек миникарты, так вы сразу получите точные абсолютные координаты.<br />Ключевой вопрос будет скорость выполнения.<br />• Запись и чтение из файла - избавиться в первую очередь, вроде ImageSearch может принимать bitmap из памяти (loaded from memory).<br />• ImageSearch не самый быстрый, есть функции альтернативы. Из интересных попробуйте FindText(), он обрабатывает изображение в ч/б паттерн, для вас это может быть плюс, а может минус.<br />Возможен другой подход: анализировать небольшой участок попиксельно, скажем 3х3 пикселя можно до ≈1000 раз/сек.<br /></p><div class="codebox"><pre><code>Window_CreateCapture(hwnd) {
	Return DllCall(&quot;user32.dll\GetDCEx&quot;, &quot;UInt&quot;, hwnd, &quot;UInt&quot;, 0, &quot;UInt&quot;, 1|2|8|16)
}
GetPixel(hDC, x, y) {
	DllCall(&quot;gdi32.dll\GetPixel&quot;, &quot;UInt&quot;, hDC, &quot;Int&quot;, x, &quot;Int&quot;, y, &quot;UInt&quot;)
}
Window_DeleteCapture(hwnd, hDC) {
	DllCall(&quot;user32.dll\ReleaseDC&quot;, &quot;UInt&quot;, hwnd, &quot;UInt&quot;, hDC)
}
Hex := Format(&quot;0x{:x}&quot;, GetPixel(hDC, x, y))</code></pre></div>]]></content>
			<author>
				<name><![CDATA[stealzy]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31937</uri>
			</author>
			<updated>2018-01-12T12:56:20Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=123013#p123013</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Определение координат игрока путем анализа изображения.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=123007#p123007" />
			<content type="html"><![CDATA[<p>Добрый день! Решаю задачу по определению местоположения персонажа в игре путем анализа изображения миникарты. Прошу помощи сообщества в определении и разработки надежного и быстрого алгоритма, работающего в режиме реального времени.</p><p>Я лишь частично приблизился к решению этой задачи путем сохранения в ТЕКСТОВЫЙ файл цветов последовательности пикселей на миникарте, т.е. создавал текстовую карту цветов. Далее я пытался в игре считать цвет строки пикселей и искал в файле номер строки и положение курсора при успешном поиске по файлу.&nbsp; Здесь я натянулся на ограничение в скорости передвижения, ведь когда игрок двигается слишком быстро при сканировании цвета строки пикселей, часть строки смещается и поиск по файлу результатов не дает .</p><br /><p>На данный момент у меня есть несколько вариантов алгоритма, которые должны помочь в решении задачи:<br />А) идеальный вариант<br />1. отснять всю миникарту области, по которой перемещается игрок<br />2. получить часть изображения миникарты в игре online<br />3. найти кусочек миникарты п.2 на изображении п.1 и определить координаты</p><p>Б)приемлемый вариант<br />1. начинать движение в определенной точке игрового мира<br />2. делать снимок участка миникары<br />3. делать второй снимок после небольшой задержки и определять смещение <br />4. изменять координаты по смещению</p><p>Главной трудностью для меня стала работа функции ImageSearch, ведь она ищет изображение из файла на экране, а мне надо наоборот,искать изображение с экрана в файле. Или я неправильно рассуждаю ?</p>]]></content>
			<author>
				<name><![CDATA[evilhero]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=39000</uri>
			</author>
			<updated>2018-01-12T09:31:19Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=123007#p123007</id>
		</entry>
</feed>
