Что нового

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

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 470
Репутация
2 401
Re: [Автоматизация] Помощ со скриптом

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

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

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


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

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

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

Bigi

Новичок
Сообщения
21
Репутация
0
Извеняюсь за ошибку
 

zlo-kazan

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

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

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

Bigi

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

CreatoR

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

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

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

Bigi

Новичок
Сообщения
21
Репутация
0
такая тема подоидёт?
 

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
 
Верх