Получается с шейдом 50 -- такая картина как я понимаю:Belfigor сказал(а):Ну попробуй шейд 50
Шейд - это погрешность тонов которые будут считаться "подходящими" относительно изначального цвета в хексе.
$aRed_Coords = PixelSearch(0,0,@DesktopWidth, @DesktopHeight,0xCC3399,50,1)
Неа, все равно ни в какую не хочетwarshadow сказал(а):Получается с шейдом 50 -- такая картина как я понимаю:Belfigor сказал(а):Ну попробуй шейд 50
Шейд - это погрешность тонов которые будут считаться "подходящими" относительно изначального цвета в хексе.
?Код:$aRed_Coords = PixelSearch(0,0,@DesktopWidth, @DesktopHeight,0xCC3399,50,1)
Dim $aRed_Coords
Sleep($gh)
if GUICtrlRead($klava1)= $GUI_CHECKED then
$aRed_Coords = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0x573510,0,1);клевер в корову
if @error = 1 then
msgbox(48,"Внимание!","Заданный пиксель не найден")
Return
endif
GUICtrlRead($aRed_Coords)
MouseClick("left", $aRed_Coords[0], $aRed_Coords[1],3,10)
ReDim $aRed_Coords
Else
$aRed_Coords = PixelSearch(0,0,@DesktopWidth, @DesktopHeight,0xA6A5A5,0,1);МОЛОКО
Return
if @error = 1 then
msgbox(48,"Внимание!","Заданный пиксель не найден")
Return
endif
GUICtrlRead($aRed_Coords)
MouseClick("left", $aRed_Coords[0], $aRed_Coords[1])
ReDim $aRed_Coords
EndIf
EndIf
While 1
PixelSearch(...)
If Not @error Then ExitLoop
ToolTip("Поиск Объекта!")
Sleep(100)
WEnd
А вот так правильно построил:Belfigor сказал(а):Используй For Next цикл. Нашли - переопределили область и пошли искать уже отталкиваясь от нее.
For $i=0 to $count
;###############################
;Засадка грядок
Dim $aRed_Coords
Dim $aRed_Coords1
Dim $aReD_Zasadka
Dim $aReD_PosadkaKlever
Sleep($gh)
if GUICtrlRead($mish1)= $GUI_CHECKED then
While 1
$aRed_Coords = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0x573510,0,1);клевер в корову
If Not @error Then ExitLoop
ToolTip("Поиск Объекта коровы!")
Sleep(50)
WEnd
GUICtrlRead($aRed_Coords)
MouseClick("left", $aRed_Coords[0], $aRed_Coords[1],3,10)
ReDim $aRed_Coords
While 1
$aRed_Coords1 = PixelSearch(0,0,@DesktopWidth, @DesktopHeight,0xA6A5A5,0,1);МОЛОКО
If Not @error Then ExitLoop
ToolTip("Поиск Объекта молока!")
Sleep(50)
WEnd
GUICtrlRead($aRed_Coords1)
MouseClick("left", $aRed_Coords1[0], $aRed_Coords1[1])
ReDim $aRed_Coords1
EndIf
Sleep($gh1)
if GUICtrlRead($mish2)= $GUI_CHECKED then
While 1
$aReD_Zasadka = PixelSearch(0,0,@DesktopWidth, @DesktopHeight, 0x44240F,0,1);засадка
If Not @error Then ExitLoop
ToolTip("Поиск Объекта поля!")
Sleep(50)
WEnd
if @error = 1 then
msgbox(48,"Внимание!","Заданный пиксель не найден")
Return ;или return если это будет в функции
endif
GUICtrlRead($aReD_Zasadka)
MouseClick("left", $aReD_Zasadka[0], $aReD_Zasadka[1])
ReDim $aReD_Zasadka
EndIf
Sleep($gh2)
if GUICtrlRead($mish3)= $GUI_CHECKED then
While 1
$aRed_Coords = PixelSearch(0,0,@DesktopWidth, @DesktopHeight,0xFFC7F0,0,1);клевер
;$aReD_PosadkaKlever = PixelSearch(0,0,@DesktopWidth, @DesktopHeight,0xCC3399,50,1);клевер(Belfigor)
If Not @error Then ExitLoop
ToolTip("Поиск Объекта клевера!")
Sleep(50)
WEnd
if @error = 1 then
msgbox(48,"Внимание!","Заданный пиксель не найден")
Return ;или return если это будет в функции
endif
GUICtrlRead($aReD_PosadkaKlever)
MouseClick("left", $aReD_PosadkaKlever[0], $aReD_PosadkaKlever[1])
ReDim $aReD_PosadkaKlever
EndIf[
Next
Belfigor сказал(а):Используй For Next цикл. Нашли - переопределили область и пошли искать уже отталкиваясь от нее.
if GUICtrlRead($mish1)= $GUI_CHECKED then
For $i=0 to $aRed_Coords
$aRed_Coords = PixelSearch(0,0,@DesktopWidth, @DesktopHeight,0xEFEFEF,0,1);клевер в корову
MouseClick("left", $aRed_Coords[0], $aRed_Coords[1])
Next
For $i=0 to $aRed_Coords1
$aRed_Coords1 = PixelSearch(0,0,@DesktopWidth, @DesktopHeight,0xA6A5A5,0,1);МОЛОКО
MouseClick("left", $aRed_Coords1[0], $aRed_Coords1[1])
Next
GUICtrlRead($aRed_Coords)
GUICtrlRead($aRed_Coords1)
ReDim $aRed_Coords
ReDim $aRed_Coords1
EndIf
Да статья хорошая, но мне не удалось осуществить ее использую этот код:Belfigor сказал(а):Посмотри тут на форуме в разделе удф есть PixelSearchEx. Механизм возьми из нее, она была написана для поиска заранее заданных пресетов пикселей и в ней реализовано продолжение поиска по заданному условию.
GUICtrlRead($aRed_Coords)
GUICtrlRead($aRed_Coords1)
if GUICtrlRead($mish1)= $GUI_CHECKED then
While 1
$aRed_Coords = PixelSearch(0,0,@DesktopWidth, @DesktopHeight,0x6A421E,0,1);клевер в корову
If Not @error Then ExitLoop
$aRed_Coords1 = PixelSearch(0,0,@DesktopWidth, @DesktopHeight,0xA6A5A5,0,1);МОЛОКО
WEnd
MouseClick("left", $aRed_Coords1[0], $aRed_Coords1[1],3,2)
MouseClick("left", $aRed_Coords[0], $aRed_Coords[1],3,2)
ReDim $aRed_Coords
ReDim $aRed_Coords1
EndIf
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <Misc.au3>
Global $color = 0, $line_x = 1035, $line_y = 462
HotKeySet("{SPACE}", "smotrim_izmenenie")
HotKeySet("{Esc}", "term")
MsgBox(0,'','После закрытия этого MSGBOX:'&@CR & _
'1. Появится синее прозрачное окно, его нужно установить на иконку склад (см. рис.).'&@CR & _
'2.Установив окно жмем пробел, будет отображаться: ToolTip(Пока в склад ничего не поступило!!!!!!!).'&@CR & _
'3.Начинаем сбор растения, будет отображаться надпись: ToolTip(+&$i& в склад) и вылезет MsgBox(0,,Новые поступления в склад)')
_create_area($line_x, $line_y, 150)
$dll = DllOpen("user32.dll")
While 1
If _IsPressed("10", $dll) Then
If _IsPressed("26", $dll) Then win_move($line_x, $line_y - 1)
If _IsPressed("28", $dll) Then win_move($line_x, $line_y + 1)
If _IsPressed("25", $dll) Then win_move($line_x - 1, $line_y)
If _IsPressed("27", $dll) Then win_move($line_x + 1, $line_y)
EndIf
sleep(100)
WEnd
Func smotrim_izmenenie()
local $i=0
$color = PixelChecksum($line_x,$line_y, $line_x+30 ,$line_y+28)
While 1
if PixelChecksum($line_x,$line_y, $line_x+30 ,$line_y+28) <> $color then
$i +=1
ToolTip('+'&$i&' в склад',100,100)
MsgBox(0,'','Новые поступления в склад')
else
ToolTip('Пока в склад ничего не поступило!!!!!!!',100,100)
endif
sleep(100)
WEnd
EndFunc
Func win_move($x, $y)
$line_x = $x
$line_y = $y
WinMove($hWin,'',$line_x,$line_y)
EndFunc
Func _create_area($iLeft, $iTop, $iTrans=255)
Global $hWin = GUICreate('', 30, 28, $iLeft, $iTop, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT))
WinSetTrans($hWin, '', $iTrans)
GUISetBkColor(0xbbb, $hWin)
GUISetState(@SW_SHOW, $hWin)
EndFunc
Func term()
DllClose($dll)
exit
EndFunc
warshadow сказал(а):Спасибо, пошел испытывать )))
Добавлено:Сообщение автоматически объединено:
Выставил прямоугольник на иконку склада, нажал на пробел -Tooltip("+1 Склад") стал, потом собрал что то и все стояло на месте.
Или я не понял работу программы?
HORRIBLE сказал(а):warshadow сказал(а):Спасибо, пошел испытывать )))
Добавлено:Сообщение автоматически объединено:
Выставил прямоугольник на иконку склада, нажал на пробел -Tooltip("+1 Склад") стал, потом собрал что то и все стояло на месте.
Или я не понял работу программы?
Переделал тот пример который ранее выложил, посмотрите его. Сделал, по больше информативности=).
ну дальше как вы его научите так он и будет работать. Я Вам, это как вариант предложил, уйти от поиска вечно пропадающий пикселей.HORRIBLE сказал(а):Нажал -- он собрал и появилась надпись +1 в склад, потом он сам должен собирать все остальное?
Спасибо, про нее прочитаю.Belfigor сказал(а):ImageSearch.au3, читай про эту библиотеку.