Что нового

[Мышь, клавиатура] сразу несколько действий при совпадении условия

Safron9999

Новичок
Сообщения
42
Репутация
0
Код:
If "0x" & Hex(PixelGetColor(1013, 505),6) = 0x6E4C0E Then	
	   MouseClick("left",1013,505,1)

подскажите как написать скрипт чтобы после совпадения цвета:
1) выполнялся не один клик мышкой, а несколько в разных точках по очереди
2) после 1-го совпадения цвета выполнялся один клик (во время прохождения первого цикла), после второго другой в другой точке и тд. и весь процесс зациклить

заранее спасибо!
 

axlwor

Скриптер
Сообщения
657
Репутация
147
1.
Код:
If "0x" & Hex(PixelGetColor(1013, 505),6) = 0x6E4C0E Then  
MouseClick("left",1013,505,1)
MouseClick("right",1013,505,1)
MouseClick("left",1013,505,1)
MouseClick("right",1013,505,1)
MouseClick("left",1013,505,1)
MouseClick("right",1013,505,1)
endif

2.
Код:
while 1
If "0x" & Hex(PixelGetColor(1013, 505),6) = 0x6E4C0E Then  MouseClick("left",1013,505,1)
If "0x" & Hex(PixelGetColor(1013, 505),6) = 0x6E4C0E Then  MouseClick("left",1013,505,1)
If "0x" & Hex(PixelGetColor(1013, 505),6) = 0x6E4C0E Then  MouseClick("left",1013,505,1)
wend


Не хочется переписывать координаты.
 

agikon

Знающий
Сообщения
789
Репутация
16
мне кажется второй пункт раскрыт не полностью, наверно не так надо автору темы.
в условии цвета ж постоянно одинаковы, просто надо учитывать порядковый номер обнаружения этого самого цвета, и в зависимости от того какой это n-ный раз, кликать в соответствующее место.
А у вас выходит что цвета должны быть разные. А если цвет во всех трёх случаяъ одинаковы то что клмкать будет в три места. вот думаю что-то тут не то.
хотя если цвета разные то всё верно, автор не понятно написал.
 
Автор
S

Safron9999

Новичок
Сообщения
42
Репутация
0
Да, цвет во всех случаях один, но в зависимости от того какой по счету раз он обнаруживается, должно выполняться определенное действие.
 

Zaramot

I ♥ AutoIt
Сообщения
1 160
Репутация
658
К сожалению не могу проверить:
Код:
Global $Var = 0

AdlibRegister('Test', 10)

While 1
	If "0x" & Hex(PixelGetColor(1013, 505),6) = 0x6E4C0E Then $Var += 1
WEnd

Func Test()
	Switch $Var
		Case 1
			;Тут какое-то действие
		Case 2
			;Тут какое-то действие
		Case 3
			;Тут какое-то действие
		Case 4
			;Тут какое-то действи
		Case 5
			;Тут какое-то действи
	EndSwitch
EndFunc
 
Автор
S

Safron9999

Новичок
Сообщения
42
Репутация
0
Код:
HotKeySet('{HOME}', '_START') ;Клавиша HOME для запуска
HotKeySet('{END}', '_END') ;Клавиша END ддя выхода

While 1
    Sleep(100)
WEnd

Func _START()
	Global $Var = 0
AdlibRegister('Test', 10)
while 1
MouseClick("left",1506,603,1)
Sleep(Random(1000,1400, 1))
If "0x" & Hex(PixelGetColor(1019, 552),6) = 0x181411 Then $Var += 1
EndIf
Sleep(Random(450, 600, 1))
If "0x" & Hex(PixelGetColor(983, 427),6) = 0x775544 Then 
	   MouseClick("left",1040,427,1)
Sleep(Random(500, 700, 1))   
	   MouseClick("left",1591,238,1)	   
EndIf   
Sleep(Random(1500, 2000, 1))
WEnd
EndFunc

Func _END()
    Exit
EndFunc

Func Test()
    Switch $Var
        Case 1
	MouseClick("left",1013,505,1)
    EndSwitch
EndFunc


я все верно сделал? выдает ошибку... не запускается ((
 

Zaramot

I ♥ AutoIt
Сообщения
1 160
Репутация
658
я все верно сделал?
Код:
HotKeySet('{HOME}', '_START') ;Клавиша HOME для запуска
HotKeySet('{END}', '_END') ;Клавиша END ддя выхода

Global $Var = 0

AdlibRegister('Test', 10)

While 1
    Sleep(100)
WEnd

Func _START()
	While 1
		MouseClick("left",1506,603,1)
		Sleep(Random(1000,1400, 1))
		If "0x" & Hex(PixelGetColor(1019, 552),6) = 0x181411 Then $Var += 1
		Sleep(Random(450, 600, 1))
		If "0x" & Hex(PixelGetColor(983, 427),6) = 0x775544 Then 
			MouseClick("left",1040,427,1)
			Sleep(Random(500, 700, 1))   
			MouseClick("left",1591,238,1)       
		EndIf   
		Sleep(Random(1500, 2000, 1))
	WEnd
EndFunc

Func _END()
    Exit
EndFunc

Func Test()
    Switch $Var
        Case 1
			MouseClick("left",1013,505,1)
    EndSwitch
EndFunc
 
Автор
S

Safron9999

Новичок
Сообщения
42
Репутация
0
запускается, но не работает начиная от сюда:

Код:
If "0x" & Hex(PixelGetColor(983, 427),6) = 0x775544 Then 
            MouseClick("left",1040,427,1)
            Sleep(Random(500, 700, 1))   
            MouseClick("left",1591,238,1)       
        EndIf   
        Sleep(Random(1500, 2000, 1))
    WEnd
EndFunc

Func _END()
    Exit
EndFunc

Func Test()
    Switch $Var
        Case 1
            MouseClick("left",1013,505,1)
    EndSwitch
EndFunc


при добавлении
Код:
Case 2
	MouseClick("left",845,537,1)

всеравно работает только Case 1
 
Автор
S

Safron9999

Новичок
Сообщения
42
Репутация
0
может у когонибудь всетаки есть идеи как это можно сделать? (
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Safron9999,
Попробуйте так:
Код:
HotKeySet('{Esc}', '_Exit')
Dim $aCoord[4][2] = [[100, 100],[@DesktopWidth - 100, 100],[@DesktopWidth - 100, @DesktopHeight - 100], _
		[100, @DesktopHeight - 100]]
;$aCoord[0-n][0] - X
;$aCoord[0-n][1] - Y
$iCount = 0

While 1
	If Not Mod(@SEC, 3) Then ; здесь на поиск цвета поменяйте
		ConsoleWrite($iCount & @LF)
		MouseMove($aCoord[$iCount][0], $aCoord[$iCount][1], 2)
		$iCount += 1
		If $iCount = 4 Then $iCount = 0
	EndIf
	Sleep(20)
WEnd

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 

agikon

Знающий
Сообщения
789
Репутация
16
Safron9999
возможно просто вы не правильно определили номер цвета. я когдато сам с этим сталкивался и десять раз пришлось замерять цвет чтобы всё-таки узнать настоящий его номер.
 
Автор
S

Safron9999

Новичок
Сообщения
42
Репутация
0
номер определен правильно... проверял...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 595
Репутация
938
Что вам мешает использовать команду PixelSearch? Уже сотни раз повторял и повторять не устану, команда PixelGetColor которую вы все так рьяно пытаетесь использовать, не подходит для этой задачи и ущербна в целом, то что вам нужно использовать это PixelSearch. PGK использовать для этого - глупо :wall_brake:
 
Автор
S

Safron9999

Новичок
Сообщения
42
Репутация
0
Извините, а можете показать как использовать PixelSearch в данном случае вместо PixelGetColor... если конечно это не слишком вас затруднит... )


Код:
HotKeySet('{HOME}', '_START') ;Клавиша HOME для запуска
HotKeySet('{END}', '_END') ;Клавиша END ддя выхода

While 1
    Sleep(100)
WEnd

Func _START()
while 1
MouseClick("left",1510,545,1)
Sleep(Random(1000,1400, 1))
If "0x" & Hex(PixelGetColor(1019, 552),6) = 0x181411 Then
MouseClick("left",1155,538,1)
EndIf
Sleep(Random(450, 600, 1))
If "0x" & Hex(PixelGetColor(983, 427),6) = 0x775544 Then 
	   MouseClick("left",1040,427,1)
Sleep(Random(500, 700, 1))   
	   MouseClick("left",1591,238,1)	   
   EndIf 
If "0x" & Hex(PixelGetColor(413, 164),6) = 0x541108 Then 
	   MouseClick("left",627,227,1)
Sleep(Random(300,500, 1))   
	   MouseClick("left",628,279,1)	   
EndIf    
Sleep(Random(1500, 2000, 1))
WEnd
EndFunc

Func _END()
    Exit
EndFunc
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 595
Репутация
938
Элементарно, вот напрмер как заменяется данная конструкция:
Код:
If "0x" & Hex(PixelGetColor(1019, 552),6) = 0x181411 Then
MouseClick("left",1155,538,1)
EndIf

На эту:
Код:
PixelSearch(1019, 552, 1019, 552, 0x181411, 10)
if Not @error Then MouseClick("left",1155,538,1)




Добавлено:
Сообщение автоматически объединено:

Теперь если по заданному пикселю будет обнаружен заданный цвет с погрешностью 10 шейдеров, будет произведен кнопкожим по заданным координатам.


Добавлено:
Сообщение автоматически объединено:

И да, эксклюзив, ближайшие 30 минут можешь звонить в скайп на логин noeine, объясню все преимущества PGC над PS
 
Автор
S

Safron9999

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

Belfigor

Модератор
Локальный модератор
Сообщения
3 595
Репутация
938
Проведи тесты. Даже если по времени она работать будет дольше, она будет РАБОТАТЬ.
 
Верх