1

Тема: AHK: Организовать паузу если присутствует цвет

Как с помощью PixelSearch сделать так, что бы функция или другой скрипт приостанавливался, пока на экране присутствует определенный цвет?
Если подробнее надо сделать следующее: если на экране находит синий цвет - жать лкм на него, если вдруг появился красный прекращать искать синий, пока красный снова не исчезнет с экрана.

2

Re: AHK: Организовать паузу если присутствует цвет

Вроде всё просто. Что именно не понятно? Приведите свой код.

3

Re: AHK: Организовать паузу если присутствует цвет

Посмотрите соседнюю тему, возможно она вам поможет
http://forum.script-coding.com/viewtopic.php?id=6364

4 (изменено: metlick, 2011-10-28 13:58:25)

Re: AHK: Организовать паузу если присутствует цвет

ypppu пишет:

Вроде всё просто. Что именно не понятно? Приведите свой код.

Как сделать не через else ?

Loop
{

PixelSearch x, y,0, 0, 1270, 665, 0xFF0000, 1, fast 
if ErrorLevel = 0
{
Send{F8}
}
else
{
 PixelSearch x, y, 0, 0, 1270, 665, 0x0000FF, 1,fast
 if ErrorLevel = 0
 {
  Click % x " " y + 20
  sleep, 1000
 }
}
}

Желательно что бы один скрипт приостанавливал другой

5

Re: AHK: Организовать паузу если присутствует цвет

Else  не избежать. Если читать скрипт, то выходит примерно следующее:
PixelSearch - ищет цвет пикселя, синий
if ErrorLevel = 0 - это означает "Если не найден синий пиксель"
else - "значит искать другой пиксель, красный"

6 (изменено: metlick, 2011-10-29 00:46:38)

Re: AHK: Организовать паузу если присутствует цвет

Да вроде какбы нет, избежать можно если заействовать GUI-окно, но у меня на это неделя уйдет, а у меня сча другая прблема(( в защите игры чтото не дает искать пиксели и в этом както замешана фукция ядра NtUserGetForegroundWindow.
Может поможет както принудительно сказать PixelSearch где искать надо...?

7

Re: AHK: Организовать паузу если присутствует цвет

Извеняюсь если вопрос не совсем корректный, но какими данными оперирует PixelSearch, т.е. что ей нужно что бы свободно искать нужный цвет? Проблема в том что ищет везде кроме окна игры.

8

Re: AHK: Организовать паузу если присутствует цвет

metlick пишет:

в защите игры чтото не дает искать пиксели и в этом както замешана фукция ядра NtUserGetForegroundWindow.
Может поможет както принудительно сказать PixelSearch где искать надо...?

Это аналог юзермодной GetForegroundWindow. Эта функция возвращает ломаный хэндл, когда активна игра? С чего вы вообще взяли, что с этой функцией что-то не так?

metlick пишет:

Извеняюсь если вопрос не совсем корректный, но какими данными оперирует PixelSearch, т.е. что ей нужно что бы свободно искать нужный цвет? Проблема в том что ищет везде кроме окна игры.

Что за игра(Flash/DirectX/OpenGL)? Можно ли запустить её в окне или только в полноэкранном режиме? Может она(PixelSearch) вообще не работает в оверлейных окнах? PrintWindow и т.п. приёмы снятия снимков пробовали?

9

Re: AHK: Организовать паузу если присутствует цвет

Когда прогай удаляю(хуком) из процессов это функцию начинает норм играть но функция проверяется на наличие и через минуты викидывает из игры.Directx

10

Re: AHK: Организовать паузу если присутствует цвет

metlick пишет:

Когда прогай удаляю(хуком) из процессов это функцию начинает норм играть но функция проверяется на наличие и через минуты викидывает из игры.

Если я правильно понял, то эта функция перехватывается. Остаётся ещё ряд вопросов:
1) Корректно ли работает GetForegroundWindow, когда окно игры активно?
2) Можно ли запустить игру в окне?

11

Re: AHK: Организовать паузу если присутствует цвет

Корректно ли работает GetForegroundWindow, когда окно игры активно?

Скажите как проверить корректность ее работы?

Можно ли запустить игру в окне?

Да можно, в основном в окне запускаю.

12 (изменено: Александр_, 2011-11-01 19:15:32)

Re: AHK: Организовать паузу если присутствует цвет

metlick пишет:

Скажите как проверить корректность ее работы?

Запустить скрипт:

f10::
hWnd:=DllCall("GetForegroundWindow")
if(DllCall("IsWindow","uint",hWnd))
{
   WinGetTitle Title, ahk_id %hWnd%
   WinGetClass Class, ahk_id %hWnd%
   msgbox работает`nкласс- "%Class%"`nзаголовок- "%Title%"
}
else
   msgbox не работает
return

Затем запустить игру и сделать окно игры активным. Нажать F10 и скрипт выдаст сообщение с информацией об окне. Если будет выведена информация о другом окне или не будет выведена вовсе, то это из-за перехвата функции.

metlick пишет:

Когда прогай удаляю(хуком) из процессов это функцию начинает норм играть но функция проверяется на наличие и через минуты викидывает из игры.

А что за программа? Она ещё что-нибудь сообщает(например способ перехвата)? И на всякий случай- какая система x64 или x86 и версия windows(правый клик на "мой компьютер"->"свойства")?

13

Re: AHK: Организовать паузу если присутствует цвет

Подниму еще раз тему .
Надо чо бы один скрипт при нахождении на экране например синего цвета приостанавливал другой, как толко синий цвет исчезает с экрана второй скрипт снова запускается.

14

Re: AHK: Организовать паузу если присутствует цвет

Взаимодействие между различными скриптами рассмотрено в примерах