Что нового

Как выполнить действие, при появлении на экране пикселей определенного цвета

Bigi

Новичок
Сообщения
21
Репутация
0
Здравствуйте нужен Скрипт работающий с цветом.
Например если в углу Экрана в позиции 99, 54 Цвет 0х282B32 нажимались бы кнопки "1" и "2" с интервалом в 1 секунду.
Как только цвет становиться 0х4B6F8F скрипт перестовалбы нажимать кнопки "1" и "2".
Сам неумею писать скрипты такого масштаба,для меня это пока сложна.
Буду Благодарен
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Re: [Автоматизация] Помощ со скриптом

Это элементарно:
Такую штуку можно самому сделать за 30-60 минут... первый раз в глаза видя AutoIt...
P.S. Останавливает скрипт по ESC.

Код:
HotKeySet("{ESC}", "quit")

While 1
$coord = PixelSearch( 99, 54, 99, 54, 0x282B32)
If Not @error Then
	While 1
    send("1")
	sleep(1000)
	send("2")
	sleep(1000)
	$coord = PixelSearch( 99, 54, 99, 54, 0x4B6F8F)
	if Not @error Then ExitLoop
	WEnd
EndIf
sleep(10)
WEnd


Func quit()
	Exit
EndFunc

P.S.S.
http://autoit-script.ru/index.php?topic=1734.0
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Только что попробывал скрипт но что та не выходит так как работает только ESC,а при изменение цвета не начинает автомотически наживать клавиши
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,665
Репутация
2,463
Re: [Автоматизация] Помощ со скриптом

zlo-kazan
Пишу тебе первому, чтобы не пропустил...
Не нужно отвечать в теме которая нарушает правила, в следующий раз ответы буду удалять.

Bigi
Не нужно игнорировать то что тебе советуют участники форума.

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

"[Автоматизация] Помощ со скриптом" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Администратор форума.
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Re: [Автоматизация] Помощ со скриптом

CreatoR
Ok. А просить, чтобы до оформили надеюсь можно? :smile:

Bigi
Есть мысли почему не работает, но дождусь оформления.
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
можна ли с таким названием продолжать тему?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,665
Репутация
2,463
Re: [Автоматизация] AutoHeal

zlo-kazan [?]
А просить, чтобы до оформили надеюсь можно?
Можно, и даже нужно :smile:

Bigi [?]
можна ли с таким названием продолжать тему?
Нет, почитай то что я тебе написал (включая статьий по ссылкам), если не поможет, спроси здесь.
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Проблемы может быть 2.
1. Не находит цвет.
а) Возможно нужный пиксель смещается.
(лечится через указание нужного поля в котором искать 3x3, 5x5, 1x100)
Пример:
Код:
PixelSearch( 98, 53, 100, 55, 0x282B32)

б) Возможно оттенок нужного пикселя отличается от того который был первый раз.
Код:
$x= 10 ;Чем ближе к 0 тем точнее цвет, чем ближе к 255 тем больше оттенков и цветов попадает под шаблон, при 255 ему будет все равно какой цвет
PixelSearch( 99, 54, 99, 54, 0x282B32, $x)

2. Не нажимаются кнопки в нужном окне.
Это менее вероятно, но возможно стоит попробовать разные способы нажатия 1
Код:
send("1") ;текст 1
send("{1}") ;Клавиша 1
send("{NUMPAD1}") ;Клавиша 1 на миниклавиатуре


Попробуй, заменить нажатие клавиш на
Код:
msgbox(0,"","нашел цвет")
тогда сразу станет понятно какая часть не работает.
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Попробывал всё перечисленное невыходит проста и всё.
Игра AceOnline официальный Саит игры.
Единсвенное то что при нахождении цвета начило выбрасывать сообщение что цвет наиден.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Bigi
Игра запущенна в оконном режиме?
Чем искали координаты pixel`я?
Если Au3Info.exe то там есть настройка, "Options -> Cord Mode", поставьте галочку "Client"
Может у вас потому и не находит, потому что вы не те координаты указываете.
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Да игра в оконом режиме.
Искал координаты и цвет с помощью программы AutoIt v3 Window info,закладка ToolBar.
Если чтота сделал не так скажите попробую поправить.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Bigi [?]
Если чтота сделал не так скажите попробую поправить.
AutoIt v3 Window info меню, "Options -> Cord Mode", поставьте галочку "Client"
Далее, перетащите (удерживая ЛКМ) "прицел" на искомый pixel (отпустите ЛКМ). Зайдите во вкладку "Mouse" и посмотрите параметр "Position" и "Color"
Эти параметры и есть ваши данные для скрипта.
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Сделал всё так как и сказали но опятьже не получается.
может проблемма в самом скрипте с нажатием клавиш?
Код:
HotKeySet("{ESC}", "quit")

While 1
$coord = PixelSearch( 93, 48, 94, 50, 0x292C33)
If Not @error Then
    While 1
    send("1")
    sleep(1000)
    send("2")
    sleep(1000)
    $coord = PixelSearch( 93, 48, 94, 50, 0x476088)
    if Not @error Then ExitLoop
    WEnd
EndIf
sleep(10)
WEnd


Func quit()
    Exit
EndFunc
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Кажется нащол ошибку,и ошибка оказывается с цветом при распознание.
в крации получается когда Синяя полоска полная скрипт только должен сканирывать,а когда синий цвет проподает должен наживать на кнопки 1 и 2 по очереди.
как это возможно сделать?
 

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
Типо так?)
Код:
$x= 
$y=
$col=
if PixelGetColor($, $y) = $then Then
	;сканируем
else;если полоска не полная, тогда
	Send("1")
	Send("2")
	endif
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Попробуйте вот так.
Запустите этот скрипт в SciTE, потом зайдите в меню "Вид" и снимите галочку с "Панель инструментов", потом снова поставьте.
Код:
Opt("PixelCoordMode", 2)

HotKeySet("{ESC}", "_Quit")

$hWin = WinGetHandle("[ACTIVE]")

While 1

	If _ColorListener(0xFFFF00, 37, 12, $hWin) Then 
		ConsoleWrite("Send('1')" & @CRLF)
		Sleep(1000)
	EndIf
	
	If _ColorListener(0xFFFF00, 37, 12, $hWin) Then 
		ConsoleWrite("Send('2')" & @CRLF)
		Sleep(1000)
	EndIf

	Sleep(250)
WEnd

Func _ColorListener($i_Color, $i_X, $i_Y, $h_Win = 0)

	
	While Hex($i_Color) = Hex(PixelGetColor($i_X, $i_Y, $h_Win))
		If Not $iFrozen Then 
			;ConsoleWrite("Цвет совпал! " & Hex(PixelGetColor($i_X, $i_Y, $hWin)) & @CRLF)
			Return 1
		EndIf
	Sleep(250)
	WEnd

	Return 0
EndFunc ;==>_ColorListener

Func _Quit()
    Exit
EndFunc ;==>_Quit


PS. Это пример.
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Скрипт от Garrett проста не срабатывает.
edward_freedom я проста немогу дописать и подправить скрипт,так как не разбираюсь на столько в AutoIt
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Bigi [?]
Скрипт от Garrett проста не срабатывает
Вы или не читаете или...
Я написал вам, это пример!!! Вы можете его адаптировать под свои нужды.
Запустите, как я вам писал, и вы всё поймёте!

Garrett [?]
Запустите этот скрипт в SciTE, потом зайдите в меню "Вид" и снимите галочку с "Панель инструментов", потом снова поставьте.
В консоли вы увидите эмуляцию функции Send
 
Верх