<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK:  ImageSearch неверно определяет изображение]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=6592</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6592&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK:  ImageSearch неверно определяет изображение».]]></description>
		<lastBuildDate>Wed, 28 Dec 2011 02:10:41 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK:  ImageSearch неверно определяет изображение]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55044#p55044</link>
			<description><![CDATA[<div class="codebox"><pre><code>
…
   if ErrorLevel = 1
   {
     Loop 21
     {
         CoordMode, Pixel, Screen
         ImageSearch,  FoundX, FoundY, 1352, 667, 1398, 710, *75 test%A_Index%.bmp   
         MissPic += 1
         if ErrorLevel = 1
         {
             arraycount+= 1
 
             array%arraycount% += MissPic
             Loop, %arraycount%
                element := Array%A_Index%
         }
         if ErrorLevel = 0
             arraycount -= MissPic
    }
…</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Wed, 28 Dec 2011 02:10:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55044#p55044</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:  ImageSearch неверно определяет изображение]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55043#p55043</link>
			<description><![CDATA[<div class="codebox"><pre><code>Numpad1::
1:
Loop
{
   CoordMode, Pixel, Screen
   ImageSearch,  FoundX, FoundY, 1352, 667, 1398, 710, *75 test110.bmp    
   if ErrorLevel = 1
   {
    {
     Loop 21
     {
         CoordMode, Pixel, Screen
         ImageSearch,  FoundX, FoundY, 1352, 667, 1398, 710, *75 test%A_Index%.bmp   
         MissPic += 1
         if ErrorLevel = 1
         {
             arraycount+= 1

             array%arraycount% += %MissPic%
             Loop, %arraycount%
             element := Array%A_Index%
         }
         if ErrorLevel = 0
         {

             array%arraycount% -= %MissPic%
         }
     }
    }
    if arraycount in 21
    {
       sleep 500
       MouseMove 1381, 692
       sleep 150
       send, {LButton down}
       sleep 150
       MouseMove 1470, 660
       sleep 150
       send, {LButton up}
       sleep 1150
       arraycount := 0
       array%arraycount% := 0
       MissPic := 0
    }
    if arraycount in 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
    {
       sleep 500
       MouseMove 1381, 692
       Send, {LButton down}
       sleep 150
       MouseMove 1330, 687
       sleep 150
       send, {LButton up}
       sleep 150
       MouseMove 753, 448
       sleep 150
       send {LButton down}
       sleep 150
       send {LButton up}
       sleep 1150
       arraycount := 0
       array%arraycount% := 0
       MissPic := 0
    }
   }
   if ErrorLevel = 0
   {
      sleep 450
      send, {SC03B down}
      sleep 150
      send, {SC03B up}
      sleep 150
      send, {1 down}
      sleep 150
      send, {1 up}
      sleep 1150

      goto 1
   }
}
Return
Numpad0::ExitApp</code></pre></div><p>Вот результат делает, что нужно и как от него требуется. Всем спасибо за помощь. Если найдете какие нибудь ошибки в скрипте или предложения напишите пожалуйста.:D</p>]]></description>
			<author><![CDATA[null@example.com (Nikva)]]></author>
			<pubDate>Wed, 28 Dec 2011 01:44:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55043#p55043</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:  ImageSearch неверно определяет изображение]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55006#p55006</link>
			<description><![CDATA[<div class="codebox"><pre><code>^numpad1::
   CoordMode, Pixel, Screen
   ImageSearch,  FoundX, FoundY, 1352, 667, 1398, 710, *75 test110.bmp    
   if ErrorLevel = 1
   Loop 21 
    {
        CoordMode, Pixel, Screen
        ImageSearch,  FoundX, FoundY, 1352, 667, 1398, 710, *75 test%A_Index%.bmp
        if ErrorLevel = 1
          { 
            sleep 500
            MouseMove 1381, 692
            sleep 150
            send, {LButton down}
            sleep 150
            MouseMove 1470, 660
            sleep 150
            send, {LButton up}
            sleep 1150
          }
        else if ErrorLevel = 0
          { 
            sleep 500
            MouseMove 1381, 692
            send, {LButton down}
            sleep 150
            MouseMove 1330, 687
            sleep 150
            send, {LButton up}
            sleep 150
            MouseMove 753, 448
            sleep 150
            send {LButton down}
            sleep 150
            send {LButton up}
            sleep 1150
          }
    }
    if ErrorLevel = 0
    {
       sleep 450
       send, {SC03B down}
       sleep 150
       send, {SC03B up}
       sleep 150
       send, {1 down}
       sleep 150
       send, {1 up}
       sleep 1150
       goto 1
    }
Return
^Numpad0::ExitApp</code></pre></div><p>Вот итог он работает с одним &quot;но&quot;, если совпал первый рисунок, то он работает как нужно, но если он совпадет к примеру по 3тьему то сначала пройдет два действия по несовпадению первого и второго... Мне же нужно, что бы он на участке<br /></p><div class="codebox"><pre><code>CoordMode, Pixel, Screen
ImageSearch,  FoundX, FoundY, 1352, 667, 1398, 710, *75 test%A_Index%.bmp</code></pre></div><p>сначала проверял все рисунки на наличие или отсутствие совпадений, и только после этого переходил к выполнению действий: если совпал хотя бы по одному то If errorlevel=0 если не совпал вообще то if errorlevel=1<br />________________________<br />посмотрел ту тему что предложил Стас в результате получилось это. <br /></p><div class="codebox"><pre><code>numpad1::
   CoordMode, Pixel, Screen
   ImageSearch,  FoundX, FoundY, 1352, 667, 1398, 710, *75 test110.bmp    
   if ErrorLevel = 1
   {
   Loop 21 
    {
        CoordMode, Pixel, Screen
        ImageSearch,  FoundX, FoundY, 1352, 667, 1398, 710, *75 test%A_Index%.bmp   
        MissPic += 1
        if ErrorLevel = 1
        {
           sleep 500
           MouseMove 1381, 692
           sleep 150
           send, {LButton down}
           sleep 150
           MouseMove 1470, 660
           sleep 150
           send, {LButton up}
           sleep 1150
        }
        if ErrorLevel = 0
        {
           arraycount+= 1
           array%arraycount% = %MissPic%
        }
    }
    {
    Loop, %arraycount%
    element := Array%A_Index%    sleep 500
    MouseMove 1381, 692
    Send, {LButton down}
    sleep 150
    MouseMove 1330, 687
    sleep 150
    send, {LButton up}
    sleep 150
    MouseMove 753, 448
    sleep 150
    send {LButton down}
    sleep 150
    send {LButton up}
    sleep 1150
    }
    array%arraycount% = 0
    MissPic = 0
    }
   if ErrorLevel = 0
   {
      sleep 450
      send, {SC03B down}
      sleep 150
      send, {SC03B up}
      sleep 150
      send, {1 down}
      sleep 150
      send, {1 up}
      sleep 1150

   }
Return
Numpad0::ExitApp</code></pre></div><p>вроде как делает то, что от нее требуется, но без GOTO он начинает &quot;циклиться&quot; на чём то одном, т.е. встретил картинку или наоборот не нашел её и начинает выполнять бесконечно тот цикл что первый ему попался. Хотя я совсем не уверен, что написал все правильно.</p>]]></description>
			<author><![CDATA[null@example.com (Nikva)]]></author>
			<pubDate>Tue, 27 Dec 2011 07:34:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55006#p55006</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:  ImageSearch неверно определяет изображение]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55001#p55001</link>
			<description><![CDATA[<p><a href="http://forum.script-coding.com/viewtopic.php?id=6354">http://forum.script-coding.com/viewtopic.php?id=6354</a><br />Посмотри, может чем-то поможет.</p>]]></description>
			<author><![CDATA[null@example.com (Стас)]]></author>
			<pubDate>Tue, 27 Dec 2011 06:24:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55001#p55001</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:  ImageSearch неверно определяет изображение]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=54961#p54961</link>
			<description><![CDATA[<div class="codebox"><pre><code>CoordMode, Pixel
          ImageSearch, X, Y, 1354, 660, 1400, 710, test%A_Index%.bmp
          if ErrorLevel = 1
          { 
             sleep 500
             MsgBox 11111111111
             goto 1
          }
          if ErrorLevel = 0 
          { 
             sleep 500
             MsgBox 2222222222
             goto 1
          }</code></pre></div><p>совсем ничего не понимаю, упростил до минимума, при всех вариантах того что может в принципе происходить на экране он выдает сообщение &quot;2222222222&quot; менял местами<br /></p><div class="codebox"><pre><code>CoordMode, Pixel
          ImageSearch, X, Y, 1354, 660, 1400, 710, test%A_Index%.bmp 
          if ErrorLevel = 0
          { 
             sleep 500
             MsgBox 11111111111
             goto 1
          }
          if ErrorLevel = 1 
          { 
             sleep 500
             MsgBox 2222222222
             goto 1
          }</code></pre></div><p>а результат все тот же: сообщение &quot;2222222222&quot;</p><p>--------------------------------------------<br /></p><div class="codebox"><pre><code>#MaxThreadsPerHotkey, 2
 
XButton1::
 
If A_IsPaused
{
   Pause, Off
   Return
} Else 
   If Running
   {
      Send, 1
      Pause, On, 1
   } Else Running := True
 
Loop
{
   1:
   CoordMode, Pixel, Screen
   ImageSearch,  FoundX, FoundY, 1354, 660, 1400, 710, *175 test110.bmp    
   if ErrorLevel = 1
      {
          CoordMode, Pixel, Screen
          ImageSearch,  FoundX, FoundY, 1354, 660, 1400, 710, *175 test1.bmp
          if ErrorLevel = 1
          { 
             sleep 500
             MouseMove 1378, 687
             sleep 150
             send, {LButton down}
             sleep 150
             MouseMove 1425, 660
             sleep 150
             send, {LButton up}
             sleep 1150
             goto 1
          }
          else
          { 
             sleep 500
             MouseMove 1378, 687
             send, {LButton down}
             sleep 150
             MouseMove 1330, 687
             sleep 150
             send, {LButton up}
             sleep 150
             MouseMove 753, 448
             sleep 150
             send {LButton down}
             sleep 150
             send {LButton up}
             sleep 1150
             goto 1
          }
      }
   if ErrorLevel = 0
   {
      sleep 450
      send, {SC03B down}
      sleep 150
      send, {SC03B up}
      sleep 150
      send, {1 down}
      sleep 150
      send, {1 up}
      sleep 1150

      goto 1
   }
}
Return
Numpad0::ExitApp</code></pre></div><p>работает такой вариант, а с циклом и поиском нескольких изображений и в случае если нужно &quot;выкинуть&quot; при совпадении с любым из них эффект простой либо только if errorlevel=0{} или if errorlevel=1{}<br />Но что больше всего мне не понятно, почему во внешнем поиске никогда проблем не появлялось - он всегда при всех раскладах работал без нареканий(внешний тот, что ImageSearch ... test110.bmp)<br />Вернул:<br /></p><div class="codebox"><pre><code>loop 21
      {
          CoordMode, Pixel, Screen
          ImageSearch,  FoundX, FoundY, 1354, 660, 1450, 750, *75 test%A_Index%.bmp</code></pre></div><p>в итоге на первый рисунок реагирует так будто его нет а на все остальные как нужно, но при этом в случае если совпадений нет реагирует неправильно</p>]]></description>
			<author><![CDATA[null@example.com (Nikva)]]></author>
			<pubDate>Sun, 25 Dec 2011 15:04:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=54961#p54961</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:  ImageSearch неверно определяет изображение]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=54955#p54955</link>
			<description><![CDATA[<p>Лады. <a href="http://www.autohotkey.com/docs/commands/ImageSearch.htm">ImageSearch</a></p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Sun, 25 Dec 2011 12:47:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=54955#p54955</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:  ImageSearch неверно определяет изображение]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=54949#p54949</link>
			<description><![CDATA[<p>Выход из цикла не предусматривался. Без GOTO ни как не получается обойтись.<br />Попробовал использовать MouseClickDrag, но игрушка не захотела с ним работать.<br /></p><div class="codebox"><pre><code>#MaxThreadsPerHotkey, 2
 
XButton1::
 
If A_IsPaused
{
   Pause, Off
   Return
} Else 
   If Running
   {
      Send, 1
      Pause, On, 1
   } Else Running := True
 
Loop
{
   1:
   CoordMode Pixel
   ImageSearch, X, Y, 1354, 660, 1400, 710, test0.bmp    
   if ErrorLevel = 1
      Loop 21 
      {
          CoordMode Pixel
          ImageSearch, X, Y, 1354, 660, 1400, 710, test%A_Index%.bmp   
          if ErrorLevel = 0
          { 
             sleep 500
             MouseMove 1378, 687
             send, {LButton down}
             sleep 150
             MouseMove 1330, 687
             sleep 150
             send, {LButton up}
             sleep 150
             MouseMove 753, 448
             sleep 150
             send {LButton down}
             sleep 150
             send {LButton up}
             sleep 1150
             goto 1
          }
          if ErrorLevel = 1 
          { 
             sleep 500
             MouseMove 1378, 687
             sleep 150
             send, {LButton down}
             sleep 150
             MouseMove 1425, 660
             sleep 150
             send, {LButton up}
             sleep 1150
             goto 1
          }
      }
   if ErrorLevel = 0
   {
      sleep 450
      send, {SC03B down}
      sleep 150
      send, {SC03B up}
      sleep 150
      send, {1 down}
      sleep 150
      send, {1 up}
      sleep 1150
      goto 1
   }
}
Return
^Numpad0::ExitApp</code></pre></div><p>Проблему нашел в качестве сравниваемых рисунков, но появилась новая,<br /></p><div class="codebox"><pre><code>CoordMode Pixel
ImageSearch, X, Y, 1354, 660, 1400, 710, test%A_Index%.bmp   
if ErrorLevel = 1
if ErrorLevel = 0</code></pre></div><p>на этом участке кода он всегда выполняет if ErrorLevel = 1 вне зависимости ни от чего.</p>]]></description>
			<author><![CDATA[null@example.com (Nikva)]]></author>
			<pubDate>Sun, 25 Dec 2011 07:57:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=54949#p54949</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:  ImageSearch неверно определяет изображение]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=54946#p54946</link>
			<description><![CDATA[<p>Логика работы скрипта задаётся не форматированием, а верным синтаксисом.<br />Случайное количество пробелов затрудняет чтение.<br />Внутри цикла <a href="http://www.autohotkey.com/docs/commands/Loop.htm">Loop</a> не нужно использовать GOTO, метка. Не замечено условие выхода из цикла.<br />Этот код некорректен, приведен исключительно для ознакомления:<br /></p><div class="codebox"><pre><code>
#MaxThreadsPerHotkey, 2

XButton1::

If A_IsPaused
{
   Pause, Off
   Return
} Else {
   If Running
   {
      Send, 1
      Pause, On, 1
   } Else Running := True
   
Loop ; так было в оригинале, если цикл должен выполняться лишь if !Running нехватает {}
{
   CoordMode Pixel
   ImageSearch, X, Y, 1350, 670, 1400, 710, test0.bmp    
   if ErrorLevel = 1
      Loop 13 
      {
          CoordMode Pixel
          ImageSearch, X, Y, 1350, 670, 1400, 710, test%A_Index%.bmp   
          if ErrorLevel = 0 
          { 
             MouseMove 1378, 687
             send, {LButton down}
             MouseMove 1330, 687
             send, {LButton up}
             MouseMove 753, 448
             send {LButton down}
             send {LButton up}
             sleep 350
          }
          if ErrorLevel = 1
          { 
             MouseMove 1378, 687
             send, {LButton down}
             MouseMove 1425, 660
             send, {LButton up}
             sleep 350
          }
      }
   if ErrorLevel = 0
   {
      send, {SC03B down}
      sleep 150
      send, {SC03B up}
      sleep 150
      send, {1 down}
      sleep 150
      send, {1 up}
      sleep 350
   }
}
Return</code></pre></div><p>Рекомендую просмотреть документацию- <a href="http://www.script-coding.com/AutoHotkeyTranslation.html">[ru]</a>:<a href="http://l.autohotkey.net/docs/">[en]</a><br />например <a href="http://l.autohotkey.net/docs/commands/MouseClickDrag.htm">MouseClickDrag</a> и <a href="http://l.autohotkey.net/docs/commands/SetKeyDelay.htm">SetkeyDelay</a></p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Sun, 25 Dec 2011 00:25:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=54946#p54946</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK:  ImageSearch неверно определяет изображение]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=54945#p54945</link>
			<description><![CDATA[<div class="codebox"><pre><code>#MaxThreadsPerHotkey, 2

XButton1::
    If A_IsPaused
    {
        Pause, Off
        Return
    }
    Else
    {
        If Running
        {
            Send, 1
            Pause, On, 1
        }
        Else
        
            Running := True
            Loop
            {
                2:
                CoordMode Pixel
                ImageSearch, X, Y, 1350, 670, 1400, 710, test0.bmp    
                if ErrorLevel = 1
                         Loop 13 
                         {
                             CoordMode Pixel
                             ImageSearch, X, Y, 1350, 670, 1400, 710, test%A_Index%.bmp   
                          if ErrorLevel = 0 
                             { 
                             MouseMove 1378, 687
                             send, {LButton down}
                             MouseMove 1330, 687
                             send, {LButton up}
                             MouseMove 753, 448
                             send {LButton down}
                             send {LButton up}
                             sleep 350
                             }
                          if ErrorLevel = 1
                             { 
                             MouseMove 1378, 687
                             send, {LButton down}
                             MouseMove 1425, 660
                             send, {LButton up}
                             sleep 350
                             }
                if ErrorLevel = 0
                send, {SC03B down}
                sleep 150
                send, {SC03B up}
                sleep 150
                send, {1 down}
                sleep 150
                send, {1 up}
                sleep 350
                goto 2
                }
        }
    }
Return</code></pre></div><p>немножко подкорректировал скрипт, но теперь он при любом варианте выполняет только одно из условий</p>]]></description>
			<author><![CDATA[null@example.com (Nikva)]]></author>
			<pubDate>Sat, 24 Dec 2011 23:01:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=54945#p54945</guid>
		</item>
		<item>
			<title><![CDATA[AHK:  ImageSearch неверно определяет изображение]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=54906#p54906</link>
			<description><![CDATA[<div class="codebox"><pre><code>#MaxThreadsPerHotkey, 2

XButton1::
    If A_IsPaused
    {
        Pause, Off
        Return
    }
    Else
    {
        If Running
        {
            Send, 1
            Pause, On, 1
        }
        Else
        {
            Running := True
            Loop
            {
                1:
                CoordMode Pixel
                ImageSearch, X, Y, 1350, 670, 1400, 710, test0.bmp   
                if ErrorLevel = 1
                         Loop 13 
                         {
                             CoordMode Pixel
                             ImageSearch, X, Y, 1350, 670, 1400, 710, test%A_Index%.bmp   
                                     if ErrorLevel = 1 
                                                 { 
                           
                                 MouseMove 1378, 687
                                 send, {LButton down}
                                 MouseMove 1425, 660
                                 send, {LButton up}
                                 goto 1
                             }
                             if ErrorLevel = 0
                             MouseMove 1378, 687
                             send, {LButton down}
                             MouseMove 1330, 687
                             send, {LButton up}
                             MouseMove 753, 448
                             send {Click}
                             sleep 150
                             goto 1
                     }
                if ErrorLevel = 0
                send, {SC029 down}
                sleep 150
                send, {SC029 up}
                sleep 150
                send, {1 down}
                sleep 150
                send, {1 up}
                sleep 150
            }
        }
    }
Return</code></pre></div><p>Написал для игрушки, задача: добывать различные предметы и распределять их, по принципу &quot;нужно не нужно&quot;, проблема состоит в том, что&nbsp; ImageSearch периодически при наличии совпадения определяет, что его нет и наоборот, когда нет совпадений начинает выполнять if ErrorLevel = 0, как его можно &quot;починить&quot; или где я допустил ошибку?</p>]]></description>
			<author><![CDATA[null@example.com (Nikva)]]></author>
			<pubDate>Fri, 23 Dec 2011 17:53:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=54906#p54906</guid>
		</item>
	</channel>
</rss>
