Что нового

[Мышь, клавиатура] нажатие клавиш с помошью PixelSearch и PixelGetColor

Vanpeace

Новичок
Сообщения
9
Репутация
1
хотелось бы у знающих людей спросить как в этом коде реализовать нажатие кнопок (стрелки)
Код:
$sa = PixelSearch(391,256,399,261,0x00958C) ;397 256

if not @error Then
    $j = PixelGetColor($sa[0],$sa[1]+54)   ;координаты пикселя  397 308


if $j = 0x008038 then
$jj = 1
Else
    $jj = 0
EndIf

Sleep(250)
if $jj = 1 then
MsgBox(0,"1","1")
EndIf
так как стрелки в игре постоянно меняються
Вот скриншот когда не нажимаешь указанную клавишу http://s017.radikal.ru/i422/1209/15/e67bd33aaf44.jpg
А вот уже с правильно нажатыми клавишами http://s017.radikal.ru/i438/1209/b2/6c8bc299e801.bmp
 

rusreg79

Продвинутый
Сообщения
159
Репутация
57
Я бы это реализовал как то так.
Если выставить правильны значения пикселей то должно работать
Код:
Global $shade = 2
Global $PS_UP, $PS_DOWN, $PS_LEFT, $PS_RIGHT

While 1

	$PS_UP = PixelSearch(391,256,399,261, 0x00958C, $shade)
	$PS_DOWN = PixelSearch(000,000,000,000, 0x000000, $shade)
	$PS_LEFT = PixelSearch(000,000,000,000, 0x000000, $shade)
	$PS_RIGHT = PixelSearch(000,000,000,000, 0x000000, $shade)

	Select
		Case IsArray($PSup) And IsArray(PixelSearch($PS_UP[0],$PS_UP[1]+54,$PS_UP[0],$PS_UP[1]+54, 0x008038, $shade));Ловим значек UP
			Sleep(250)
			Send ("{UP}")
		Case IsArray($PS_DOWN) And IsArray(PixelSearch($PS_DOWN[0],$PS_DOWN[1]+??,$PS_DOWN[0],$PS_DOWN[1]+??, 0x000000, $shade));Ловим значек DOWN
			Sleep(250)
			Send ("{DOWN}")
		Case IsArray($PS_LEFT) And IsArray(PixelSearch($PS_LEFT[0],$PS_LEFT[1]+??,$PS_LEFT[0],$PS_LEFT[1]+??, 0x000000, $shade));Ловим значек LEFT
			Sleep(250)
			Send ("{LEFT}")
		Case IsArray($PS_RIGHT) And IsArray(PixelSearch($PS_RIGHT[0],$PS_RIGHT[1]+??,$PS_RIGHT[0],$PS_RIGHT[1]+??, 0x000000, $shade));Ловим значек RIGHT
			Sleep(250)
			Send ("{RIGHT}")
	EndSelect
WEnd
 
Автор
V

Vanpeace

Новичок
Сообщения
9
Репутация
1
Код:
Global $Paused
HotKeySet("{F5}", "Start")
HotKeySet("{F6}", "Stop")
HotKeySet("{F7}", "Close")
WinWaitActive("HigtStreet5 Гитара")
While 1
Sleep(100)
WEnd

Func Start()
Global $shade = 2
Global $PS_UP, $PS_DOWN, $PS_LEFT, $PS_RIGHT

While 1

    $PS_UP = PixelSearch(505,583,524,608, 0x7198CE, $shade)
    $PS_DOWN = PixelSearch(521,590,527,609, 0x628DCD, $shade)
    $PS_LEFT = PixelSearch(529,589,522,610, 0x7091C8, $shade)
    $PS_RIGHT = PixelSearch(505,607,513,586, 0x2C77C9, $shade)

    Select
        Case IsArray($PSup) And IsArray(PixelSearch($PS_UP[0],$PS_UP[1]+54,$PS_UP[0],$PS_UP[1]+54, 0x7198CE, $shade));Ловим значек UP
            Sleep(250)
            Send ("{UP}")
        Case IsArray($PS_DOWN) And IsArray(PixelSearch($PS_DOWN[0],$PS_DOWN[1]+54,$PS_DOWN[0],$PS_DOWN[1]+54, 0x628DCD, $shade));Ловим значек DOWN
            Sleep(250)
            Send ("{DOWN}")
        Case IsArray($PS_LEFT) And IsArray(PixelSearch($PS_LEFT[0],$PS_LEFT[1]+54,$PS_LEFT[0],$PS_LEFT[1]+54, 0x7091C8, $shade));Ловим значек LEFT
            Sleep(250)
            Send ("{LEFT}")
        Case IsArray($PS_RIGHT) And IsArray(PixelSearch($PS_RIGHT[0],$PS_RIGHT[1]+54,$PS_RIGHT[0],$PS_RIGHT[1]+54, 0x2C77C9, $shade));Ловим значек RIGHT
            Sleep(250)
            Send ("{RIGHT}")
    EndSelect
WEnd

ToolTip('Script is "START"',0,0)
WEnd
ToolTip("")
EndFunc

Func Stop()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('Script is "STOP"',0,0)
WEnd
ToolTip("")
EndFunc

Func Close()
Exit 0
EndFunc

выдает ошибку
Код:
C:\Users\?????????????\Desktop\dfdf.au3 (38) : ==> "Wend" statement with no matching "While" statement.:
WEnd
поправтье пожалуйста и вопрос данный скрипт будет работать
 
Автор
V

Vanpeace

Новичок
Сообщения
9
Репутация
1
Код:
While 1

    $PS_UP = PixelSearch(505,583,524,608, [color=red]0x7198CE[/color], $shade) эти координаты мы берем из Сontrol Viewer
    $PS_DOWN = PixelSearch(521,590,527,609, 0x628DCD, $shade)
    $PS_LEFT = PixelSearch(529,589,522,610, 0x7091C8, $shade)
    $PS_RIGHT = PixelSearch(505,607,513,586, 0x2C77C9, $shade)

    Select
        Case IsArray($PSup) And IsArray(PixelSearch($PS_UP[0],$PS_UP[1]+54,$PS_UP[0],$PS_UP[1]+54, [color=green]0x7198CE[/color]сюда какое значение писать не понял, $shade));Ловим значек UP
 

rusreg79

Продвинутый
Сообщения
159
Репутация
57
сюда какое значение писать не понял
В твоем первом сообщении эту строку
Код:
$j = PixelGetColor($sa[0],$sa[1]+54)   ;координаты пикселя  397 308

я заменил на
Код:
IsArray(PixelSearch($PS_UP[0],$PS_UP[1]+54,$PS_UP[0],$PS_UP[1]+54, 0x7198CE, $shade))

это поиск второго проверочного пикселя на кнопке.
 
Автор
V

Vanpeace

Новичок
Сообщения
9
Репутация
1
Код:
Global $Paused
HotKeySet("{F5}", "Start")
HotKeySet("{F6}", "Stop")
HotKeySet("{F7}", "Close")
WinWaitActive("HigtStreet5 Гитара")
While 1
Sleep(100)
WEnd

Func Start()
Global $shade = 2
Global $PS_UP, $PS_DOWN, $PS_LEFT, $PS_RIGHT

While 1

    $PS_UP = PixelSearch(505,583,524,608, 0x7198CE, $shade)
    $PS_DOWN = PixelSearch(521,590,527,609, 0x628DCD, $shade)
    $PS_LEFT = PixelSearch(529,589,522,610, 0x7091C8, $shade)
    $PS_RIGHT = PixelSearch(505,607,513,586, 0x2C77C9, $shade)

    Select
        Case IsArray($PSup) And IsArray(PixelSearch($PS_UP[0],$PS_UP[1]+54,$PS_UP[0],$PS_UP[1]+54, 0x7198CE, $shade));Ловим значек UP
            Sleep(250)
            Send ("{UP}")
        Case IsArray($PS_DOWN) And IsArray(PixelSearch($PS_DOWN[0],$PS_DOWN[1]+54,$PS_DOWN[0],$PS_DOWN[1]+54, 0x628DCD, $shade));Ловим значек DOWN
            Sleep(250)
            Send ("{DOWN}")
        Case IsArray($PS_LEFT) And IsArray(PixelSearch($PS_LEFT[0],$PS_LEFT[1]+54,$PS_LEFT[0],$PS_LEFT[1]+54, 0x7091C8, $shade));Ловим значек LEFT
            Sleep(250)
            Send ("{LEFT}")
        Case IsArray($PS_RIGHT) And IsArray(PixelSearch($PS_RIGHT[0],$PS_RIGHT[1]+54,$PS_RIGHT[0],$PS_RIGHT[1]+54, 0x2C77C9, $shade));Ловим значек RIGHT
            Sleep(250)
            Send ("{RIGHT}")
    EndSelect


ToolTip('Script is "START"',0,0)
WEnd
ToolTip("")
EndFunc

Func Stop()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('Script is "STOP"',0,0)
WEnd
ToolTip("")
EndFunc

Func Close()
Exit 0
EndFunc
вот что получилось но выдает ошибку
Код:
C:\Users\?????????????\Desktop\??????????????????.au3 (22) : ==> Variable used without being declared.:
Case IsArray($PSup) And IsArray(PixelSearch($PS_UP[0],$PS_UP[1]+54,$PS_UP[0],$PS_UP[1]+54, 0x7198CE, $shade))
Case IsArray(^ ERROR
 
Автор
V

Vanpeace

Новичок
Сообщения
9
Репутация
1
ну я слеповат не много :( ,, ну вот щас работает но стрелки не жмуться может что то не так :scratch: у кого какие соображения



заменил up, down, left, right на NUMPAD так же не водит может в PixelSearch что то не правельно.

ведь это надо вставлять в Pixelsearch >>>> Mouse <<<<
Position: 559, 309 ---это позиция стрелки
Cursor ID: 0
Color: 0x342842-- это ее цвет а в коде
Код:
PixelSearch(509,309,524,608, 0x7198CE, $shade)
как я понял надо водить в первые две строчки это позиция стрелки а во второе значение что водить? откуда брать эти значения?
 

rusreg79

Продвинутый
Сообщения
159
Репутация
57
на каждой стрелке найди уникальные два пиксиля, которые на остальных стрелках не встречаются в тех же координатах.
Код:
$PS_UP = PixelSearch(559,309,559,309, 0x342842, $shade); первый пиксель

и проверочный пиксель(второй), например +1 или как у тебя +54
Код:
IsArray(PixelSearch($PS_UP[0],$PS_UP[1]+1,$PS_UP[0],$PS_UP[1]+1, 0x7198CE, $shade))
 
Автор
V

Vanpeace

Новичок
Сообщения
9
Репутация
1
с пикселями разобрался, , твой код чуток подправил
Код:
While 1

    $PS_NUMPAD8 = PixelSearch(513,590,510,590, 0xE3EBF6, $shade)
    $PS_NUMPAD2 = PixelSearch(531,590,525,595, 0x6996CF, $shade)
    $PS_NUMPAD4 = PixelSearch(534,588,530,595, 0x6E9BD8, $shade)
    $PS_NUMPAD6 = PixelSearch(513,588,535,615, 0x6A9AD6, $shade)

    Select
        Case $PS_NUMPAD8 = PixelSearch(513,590,510,590, 0xE3EBF6, $shade)
            sleep(50)
            Send ("{NUMPAD8}")
        Case $PS_NUMPAD2 = PixelSearch(531,590,525,595, 0x6996CF, $shade)
			sleep(50)
            Send ("{NUMPAD2}")
        Case $PS_NUMPAD4 = PixelSearch(534,588,530,595, 0x6E9BD8, $shade)
             sleep(50)
            Send ("{NUMPAD4}")
        Case $PS_NUMPAD6 = PixelSearch(513,588,535,615, 0x6A9AD6, $shade)
             Sleep(50)
            Send ("{NUMPAD6}")
    EndSelect
получается бот определяет стрелку верх (Numpad8) , жмет только одну стрелку хорошо это NUMPAD8, а другие не жмет.

Понял в чем проблема, нужно задать цикл пикселсерч 2 ,3 и 4 кнопки чтоб водились только вот не догоняю как это вписать и какэто бы выглядело .


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

Код:
Func Start()

Global $shade = 2
Global $PS_NUMPAD8, $PS_NUMPAD2, $PS_NUMPAD4, $PS_NUMPAD6

While 1

    $PS_NUMPAD8 = PixelSearch(513,590,510,590, 0xE3EBF6, $shade)
    $PS_NUMPAD2 = PixelSearch(530,608,525,595, 0x328CD4, $shade)
    $PS_NUMPAD4 = PixelSearch(482,589,530,595, 0x7AA1D4, $shade)
    $PS_NUMPAD6 = PixelSearch(469,609,535,615, 0x3E8DCF, $shade)


          Global $x = 513
          Global $y = 590
		  Global $x2 = 510
           Do
           Select

           Case $PS_NUMPAD8 = PixelSearch(513,590,510,590, 0xE3EBF6, $shade)
               sleep(100)
		         Send ("{NUMPAD8}")
            $x = $x+49+49+49+49+49+49+49+49
               $x2 = $x2+49+49+49+49+49+49+49
			     EndSelect
			 Until $x >=1000
написал такой код с помощью одного человека , но все равно не так как надо ,,, Надо чтоб в игре водились стрелки а они там появляються рандомом (верх,вниз,влево,верх,вправо--пример) надо в коде написать чтоб бот их нажимал в том порядке в каком они появляються, помогите плиз с кодом.
 
Верх