Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Цвета , авто-кликер. (http://forum.oszone.net/showthread.php?t=235008)

wnc 19-05-2012 20:48 1918915

Цвета , авто-кликер.
 
В заданных мною двух точках меняются цвета .
Как сделать что-бы если 2 этих цвета true, мышка кликала на другую заданную мною точку? А если false то на следующую заданную мною точку.

ferget 20-05-2012 00:50 1919052

подробнее опишите, а то не понятно вот это

Цитата:

Цитата wnc
Как сделать что-бы если 2 этих цвета true, мышка кликала на другую заданную мною точку? А если false то на следующую заданную мною точку. »

другая точка, следующая точка и две заданных?

wnc 20-05-2012 01:07 1919064

Да , остальные я думаю уже пойму как написать ..

Если 2 цвета совпадают с заданным мною цветом, то клацает в заданную мною точку на экране.
Если 1 из цветов не совпадает то мышка уже клацает на 2ю заданную мною точку.

ferget 20-05-2012 01:48 1919086

примерно так

Код:

If $var = цвет AND $var1=цвет Then
    MouseClick("left", x, y, 1)
Else
    MouseClick("left", x, y, 1)
EndIf


wnc 20-05-2012 02:38 1919099

Вот я думаю так будет понятнее:
http://s54.radikal.ru/i144/1205/34/31abf88ce576.jpg
Если два цвета зелёных то MouseClick срабатывает на указанные мною координаты.
Если 1 цвет не совпадает то уже на другую .

ferget 20-05-2012 03:25 1919102

так вроде приведенный код подходит

задаете точки
Код:

$var = PixelGetColor( x , y)
$var1 = PixelGetColor( x , y)

если оба равны заданному цвету, AND - срабатывает если верны оба варианта

или можно точнее расписать

Код:

If $var = цвет AND $var1=цвет Then
    MouseClick("left", x, y, 1)
Elseif $var = цвет OR $var1=цвет Then
    MouseClick("left", x, y, 1)
EndIf


wnc 20-05-2012 11:44 1919171

Что-то не работает код.

При наведение на заданный мною цвет оно идёт к заданной мною точке и кликает.
А мне нужно что-бы оно автоматически проверяла 2 цвета , а потом только если они оба совпадают шли к заданной мною точке.

Код:

HotKeySet("{ESC}", "ExitPro")
HotKeySet("{F1}", "Terminate")

While 1
    MsgBox(64, "Запуск", "Программа запущена")
Sleep(90000)
WEnd

Func Terminate()
While 1
$aPos = MouseGetPos()
$var = PixelGetColor( $aPos[0] , $aPos[1] )
$var1 = PixelGetColor( $aPos[0] , $aPos[1] )
If $var = 0x23B14D AND $var1= 0x23B14D Then
    MouseClick("left", 866, 686, 1)
Elseif $var = 0x23B14D OR $var1= 0x23B14D Then
    MouseClick("left", 732, 692, 1)
EndIf
WEnd
 EndFunc
 
 Func ExitPro()

        MsgBox(64, "Программа выключена", "Успешно выполнено")
Exit 0
EndFunc

А если не совпадают , шли к другой.

ferget 20-05-2012 18:29 1919349

вот тут
Код:

$var = PixelGetColor( $aPos[0] , $aPos[1] )
$var1 = PixelGetColor( $aPos[0] , $aPos[1] )

в $var и $var1 попадает одно и тоже число, и поэтому срабатывает условие
если точки заранее известны, то их координаты нужно записать

wnc 21-05-2012 08:23 1919642

Все точки заранее известны .

ferget 21-05-2012 08:27 1919644

Цитата:

Цитата wnc
Все точки заранее известны . »

тогда задавайте каждую


Код:

$var = PixelGetColor( x, y )

wnc 21-05-2012 09:52 1919681

Да всё правильно , только проблема в том. Что оно кликает постоянно, а мне нужно что-бы оно постоянно только проверяло.

wnc 21-05-2012 16:23 1919939

Всё , пока проблем нет!)

wnc 21-05-2012 16:47 1919947

Код:

HotKeySet("{ESC}", "ExitPro")
HotKeySet("{F1}", "Terminate")

While 1
    MsgBox(64, "Программу запущена", "Успех")
Sleep(90000)
WEnd

Func Terminate()
    MsgBox(64, "Hi", "Жмиии!")
While 1
$aPos = MouseGetPos()
;Точки проверки
$var = PixelGetColor( 1097, 423 )
$var1 = PixelGetColor( 1181, 415 )

If $var = 0x8E2727 AND $var1= 0x335E25 Then
    MouseClick("left", 1149, 891, 1)
       
Elseif $var = 0x8E2727 OR $var1= 0x335E25 Then
    MouseClick("left", 786, 908, 1)
EndIf
WEnd
 EndFunc
 
 Func ExitPro()
        MsgBox(64, "Программа выключена", "Успешно выполнено")
Exit 0
EndFunc

Если совпадает первый цвет но не совпадает второй , то MouseClick("left", 1149, 891, 1)срабатывает.
Если не совпадает первый цвет то MouseClick("left", 1149, 891, 1) не срабатывает.
Если совпадает и первый , и второй цвет то MouseClick("left", 786, 908, 1) срабатывает.

Вопрос: почему если совпадает первый цвет но не совпадает второй то MouseClick("left", 1149, 891, 1) срабатывает, а если не совпадает первый то MouseClick("left", 1149, 891, 1) не срабатывает.
Как решить эту проблему?

wnc 23-05-2012 01:02 1920795

Всё , пофиксил .

Как сделать кнопки ?

ferget 23-05-2012 01:49 1920802

Цитата:

Цитата wnc
Как сделать кнопки ? »

уточните вопрос

wnc 23-05-2012 02:51 1920808

Графические кнопки вызывающие функционал, возможно-ли это?

ferget 23-05-2012 03:11 1920810

можно, вот пример

Код:

#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>

#NoTrayIcon

Local $Button1, $msg, $Gui
$Gui=GUICreate("Test Button")

Opt("GUICoordMode", 2)
$Button1 = GUICtrlCreateButton("Test", 10, 20, 120)
GUICtrlSetBkColor(-1, 0x0)
GUICtrlSetColor(-1, 0xFFFFFF)

GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $Button1
            OKPressed()
    EndSwitch
WEnd

Func OKPressed()
 MsgBox(4096,"", "Ok pressed")
EndFunc


wnc 23-05-2012 03:24 1920813

А как сделать поиск цвета по части экрана , не знаю как правильно сформулировать но думаю выразился более менее понятно ))
Вот из этого кода.
Код:

HotKeySet("{ESC}", "ExitPro")
HotKeySet("{F1}", "Terminate")

While 1
    MsgBox(64, "Программу запущена", "Успех")
Sleep(90000)
WEnd

Func Terminate()
    MsgBox(64, "Включено", "ее!")
While 1
$aPos = MouseGetPos()
;Точки проверки
$var = PixelGetColor( 1097, 423 )
$var1 = PixelGetColor( 1181, 415 )
;x y

If $var = 0x8E2727 AND $var1= 0x335E25 Then
    MouseClick("left", 1149, 891, 1)
       
Elseif $var = 0x8E2727 Or $var1= 0x335E25 Then
    MouseClick("left", 786, 908, 1)
EndIf
WEnd
 EndFunc
 
 Func ExitPro()
        MsgBox(64, "Программа выключена", "Успешно выполнено")
       
Exit 0
EndFunc

Сделайте пожалуйста код на 2кнопки , а то у меня не получается написать вторую.. А так я сразу пойму )
Я делаю , а оно получается так что вторая не работает..

ferget 23-05-2012 04:03 1920818

две кнопки

Код:


Local $Button1, $Button2, $msg, $Gui
.............................................................
Opt("GUICoordMode", 2)
$Button1 = GUICtrlCreateButton("Test", 10, 20, 120)
$Button2 = GUICtrlCreateButton("кнопка", -1, 0)
GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $Button1
                        ;что-то делаем
        Case $Button_2
                        ;что-то делаем
    EndSwitch
WEnd

а для поиска по части экрана PixelSearch

Код:

PixelSearch( 0, 0, 20, 300, 0xE0E1E4 )
If Not @error Then
    MouseClick("left", 539, 47, 1)
EndIf


wnc 23-05-2012 04:05 1920819

PixelSearche это мне указать не 2 точки , а 4 да?

ferget 23-05-2012 04:09 1920820

да, область экрана

wnc 23-05-2012 05:25 1920823

Как узнать правильные координаты для PixelSearch?

ferget 23-05-2012 05:43 1920827

а в чем именно проблема с координатами?

wnc 23-05-2012 06:03 1920829

Ну я узнавал точную координату через AutoIt v3 Window Info, а сейчас мне нужно часть экрана..

Я не очень понимаю как это работает..)

ferget 23-05-2012 06:11 1920831

AutoIt v3 Window Info

показывает позицию и размеры окна, подбирайте координаты исходя из этого


Время: 21:45.

Время: 21:45.
© OSzone.net 2001-