Что нового

[Мышь, клавиатура] Создание Бота для игры

Viktor19870628

Новичок
Сообщения
38
Репутация
0
Версия AutoIt: 3.

Задача:
Проверка области экрана(центр)определение цвета в заданной области и при изменении изначального цвета на другой моментальное нажатие ЛКМ. Все действия должны происходить при нажатой клавише на клавиатуре.

Никаких познаний в области программирования не имею.а данная программка очень нужна.Помогите пожалуйста!!!!!
 

Malderin

Новичок
Сообщения
60
Репутация
1
Ну вот например так:
Код:
Local $iX, $iY, $iColor, $iColor_1, $i = 1

$iX = @DesktopWidth / 2
$iY = @DesktopHeight / 2
Sleep(5000) ; Таймаут 5 секунд  для переключения на нужное окно
$iColor = PixelGetColor($iX, $iY)

While $i = 1
	$iColor_1 = PixelGetColor($iX, $iY)
	Sleep(10)
	If $iColor_1 <> $iColor Then
		MouseClick("left", $iX, $iY, 1, 0)
		MsgBox(4096, "ОК", _
				"Нажата левая кнопка мыши" & @LF & _
				" Координита Х = " & $iX & @LF & _
				" Координита Y = " & $iY & @LF & _
				"Цвет был " & $iColor & @LF & _
				"Цвет стал " & $iColor_1)
		$i = 0
	EndIf
WEnd


Однократное исполнение скрипта. После запуска 5 секунд чтобы активировать нужное окно, далее программа отслеживает изменение цвета пикселя по центру экрана (координаты относительно текущего разрешения рабочего стола). При изменении цвета происходит нажатие и выход из программы.
 
Автор
V

Viktor19870628

Новичок
Сообщения
38
Репутация
0
Ну вот теперь можно и по эксперементировать. буду пробовать убрать закрытие программы после выполнения нажатия и поставить кнопки на выкл/вкл скрипта.и пожалуй уберу 5 секундную задержку для выбора окна.


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

Код:
HotKeySet("{F6}","_Exit")
HotKeySet("{F7}","_Pause")
Local $iX, $iY, $iColor, $iColor_1, $i = 1
$iX = @DesktopWidth / 2
$iY = @DesktopHeight / 2
Sleep(5000) ; Таймаут 5 секунд  для переключения на нужное окно
$iColor = PixelGetColor($iX, $iY)

While $i = 1
    $iColor_1 = PixelGetColor($iX, $iY)
    Sleep(10)
    If $iColor_1 <> $iColor Then
        MouseClick("left", $iX, $iY, 1, 0)
        MsgBox(4096, "ОК", _
                "Нажата левая кнопка мыши" & @LF & _
                " Координита Х = " & $iX & @LF & _
                " Координита Y = " & $iY & @LF & _
                "Цвет был " & $iColor & @LF & _
                "Цвет стал " & $iColor_1)
        $i = 0
    EndIf
WEnd
Func _Exit()
Exit
EndFunc

Правильно ли я поправил???
Код:
MsgBox(4096, "ОК", _
                "Нажата левая кнопка мыши" & @LF & _
                " Координита Х = " & $iX & @LF & _
                " Координита Y = " & $iY & @LF & _
                "Цвет был " & $iColor & @LF & _
                "Цвет стал " & $iColor_1)
        $i = 0

Это можно убрать???
 

Malderin

Новичок
Сообщения
60
Репутация
1
Viktor19870628 [?]
Это можно убрать???
Можно, это просто сообщение, кторое в общем то не нужно.
Вообще Если нужен бесконечный цикл (сейчас сделано однократное выполнение условия), то можно сделать вот так:

Код:
Local $iX, $iY, $iColor, $iColor_1, $i
Global $Paused

HotKeySet("{F7}", "TogglePause")
HotKeySet("{F6}","_Exit")

$iX = @DesktopWidth / 2
$iY = @DesktopHeight / 2
Sleep(5000) ; Таймаут 5 секунд  для переключения на нужное окно

While 1
	$i = 1
	$iColor = PixelGetColor($iX, $iY)
;~ 	ConsoleWrite("0 = " & $iColor & @CRLF)
	Sleep(100)
	While $i = 1
		$iColor_1 = PixelGetColor($iX, $iY)
		ConsoleWrite("1 = " & $iColor_1 & @CRLF)
		If $iColor_1 <> $iColor Then
			MouseClick("left", $iX, $iY, 1, 0)
;~ 			MsgBox(4096, "ОК", _
;~ 					"Нажата левая кнопка мыши" & @LF & _
;~ 					"Координита Х = " & $iX & @LF & _
;~ 					"Координита Y = " & $iY & @LF & _
;~ 					"Цвет был " & $iColor & @LF & _
;~ 					"Цвет стал " & $iColor_1)
			$i = 0
		EndIf
		Sleep(100)
	WEnd
WEnd

Func TogglePause()
    $Paused = Not $Paused
	    While $Paused
        sleep(100)
        ToolTip('Скрипт приостановлен"',0,0)
    WEnd
    ToolTip("")
EndFunc

Func _Exit()
	Exit
EndFunc
 
Верх