Что нового

[Мышь, клавиатура] Рандромное эмулирование нажатии клавиши мыши

Zakytto

Новичок
Сообщения
42
Репутация
2
Приветствую господа, мне нужна безумно ваша помощь.
Есть скрипт:
Код:
Global $Autoshoot = 0
;  hot keys
Hotkeyset('{F1}', 'startAutoshoot') ; запуск автокликера
Hotkeyset('{F2}', "offAutoshoot") ; остановка автокликера
; ----

$CenterX = @DesktopWidth / 2 ; Определяем центр экрана.
$CenterY = @DesktopHeight / 2 ; Определяем центр экрана.

$CenterRound = 200 ; От цетра паралейно будут расположенные палочки.
$CenterRW = 10 ; Ширина палочек.
$CenterColor = 0xBB161D ; Цвет который должны сканир$CenterRH = 200 ; Высота палочек.
$CenterShade = 0x27 ; Погрешность цвета.
$CenterMouse = 90 ; Отброс мышки для захвата.

Global $AimPalk = 0, $TempPX, $TempPY, $TempPW;

Hotkeyset('{F8}', 'startAimPalk') ; запуск аима (не работает нормально)
Hotkeyset('{F9}', "offtAimPalk") ; остановка аима

While 1
    If $Autoshoot = 1 then ;
        PixelSearch(932,520,982,562,0x0000,0x10) ; координаты квадратика который определяет область срабатывания выстрела(каждый настраивает под своё разрешение)
		If Not @error then
            MouseClick('left')
        EndIf
    EndIf
    if $AimPalk = 1 Then
        $TempPX = $CenterX + $CenterRound;
        $TempPY = $CenterX - $CenterRound - $CenterRW;
        $TempPW = $CenterY - ($CenterRH / 2);
        PixelSearch( $TempPX, $TempPW, $TempPX+$CenterRW, $TempPW+$CenterRH, $CenterColor, $CenterMouse, 1);
        if not @error Then
            MouseMove(MouseGetPos(0)+$CenterMouse,MouseGetPos(1))
        EndIf
        PixelSearch( $TempPY, $TempPW, $TempPY+$CenterRW, $TempPW+$CenterRH, $CenterColor, $CenterMouse, 1);
        if not @error Then
            MouseMove(MouseGetPos(0)-$CenterMouse,MouseGetPos(1))
        EndIf
    EndIf
WEnd

Func offtAimPalk()
    $AimPalk = 0
EndFunc

Func startAimPalk()
    $AimPalk = 1
EndFunc

; function
Func startAutoshoot(); vkl
   $Autoshoot = 1
EndFunc ; end

Func offAutoshoot() ; vukl
   $Autoshoot = 0
EndFunc ; end


Я прошу помочь мне подредактировать скрипт, что бы он не нажимал ЛКМ по милиону раз когда найдет пиксель,
а что-бы было рандромное время между кликами, буду бесконечно благодарен.Прошу помощи!
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Так что-ли ?
Код:
Global $Autoshoot = 0
;  hot keys
Hotkeyset('{F1}', 'startAutoshoot') ; запуск автокликера
Hotkeyset('{F2}', "offAutoshoot") ; остановка автокликера
; ----

$CenterX = @DesktopWidth / 2 ; Определяем центр экрана.
$CenterY = @DesktopHeight / 2 ; Определяем центр экрана.

$CenterRound = 200 ; От цетра паралейно будут расположенные палочки.
$CenterRW = 10 ; Ширина палочек.
$CenterColor = 0xBB161D ; Цвет который должны сканир$CenterRH = 200 ; Высота палочек.
$CenterShade = 0x27 ; Погрешность цвета.
$CenterMouse = 90 ; Отброс мышки для захвата.

Global $AimPalk = 0, $TempPX, $TempPY, $TempPW, $Time = TimerInit()

Hotkeyset('{F8}', 'startAimPalk') ; запуск аима (не работает нормально)
Hotkeyset('{F9}', "offtAimPalk") ; остановка аима

While 1
    If $Autoshoot = 1 then ;
        PixelSearch(932,520,982,562,0x0000,0x10) ; координаты квадратика который определяет область срабатывания выстрела(каждый настраивает под своё разрешение)
        If Not @error And TimerDiff($Time) > Random(10,1000) then
			$Time = TimerInit()
            MouseClick('left')
        EndIf
    EndIf
    if $AimPalk = 1 Then
        $TempPX = $CenterX + $CenterRound;
        $TempPY = $CenterX - $CenterRound - $CenterRW;
        $TempPW = $CenterY - ($CenterRH / 2);
        PixelSearch( $TempPX, $TempPW, $TempPX+$CenterRW, $TempPW+$CenterRH, $CenterColor, $CenterMouse, 1);
        if not @error Then
            MouseMove(MouseGetPos(0)+$CenterMouse,MouseGetPos(1))
        EndIf
        PixelSearch( $TempPY, $TempPW, $TempPY+$CenterRW, $TempPW+$CenterRH, $CenterColor, $CenterMouse, 1);
        if not @error Then
            MouseMove(MouseGetPos(0)-$CenterMouse,MouseGetPos(1))
        EndIf
    EndIf
WEnd

Func offtAimPalk()
    $AimPalk = 0
EndFunc

Func startAimPalk()
    $AimPalk = 1
EndFunc

; function
Func startAutoshoot(); vkl
   $Autoshoot = 1
EndFunc ; end

Func offAutoshoot() ; vukl
   $Autoshoot = 0
EndFunc ; end
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Ganibal95
Ваш код попросту гоняет цикл с абсолютно не нужной в этот момент нагрузкой. Да и зацикленная генерация рандома рано или поздно даст результат < 500, так что маловероятен факт ожидания более половины секунды.

Zakytto
Поставьте банальный
Код:
Sleep( Random( Min, Max, 1 ) )
 
Автор
Z

Zakytto

Новичок
Сообщения
42
Репутация
2
Это вставить за место sleep в скрипте, указывать не чего не надо больше?
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Zakytto
Min Max замените на свои значения (в ms) и сделайте к примеру вот так:
Код:
While 1 ;Сейчас


Код:
While Sleep( Random( Min, Max, 1 ) ) ;После замены
 
Автор
Z

Zakytto

Новичок
Сообщения
42
Репутация
2
А в этом скрипте куда вставить, так же? Или за место Sleep (20)
Код:
#include<WinAPI.au3>
;________________________________________________
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
;________________________________________________
;________________________________________________
;________________________________________________
Global $Paused, $counter = 0
HotKeySet("{F3}", "TogglePause")
HotKeySet("{F2}", "Terminate")
Shoot()
;________________________________________________
;________________________________________________
;________________________________________________
Func Shoot()
While 1
If _WinAPI_GetAsyncKeyState(0x02) = True Then
Local $coord = PixelSearch(789, 589,812, 603,0x00000,2)
 If Not @error then
MouseClick("Left")
Sleep(20)
EndIf
EndIf
WEnd
EndFunc
;________________________________________________
;________________________________________________
;________________________________________________
While 1
$counter +=1
WEnd
;________________________________________________
;________________________________________________
;________________________________________________
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
;ToolTip('Script is "Paused"',0,0, $counter, 1)
WEnd
ToolTip("")
EndFunc
;________________________________________________
;________________________________________________
;________________________________________________
Func Terminate()
Exit 0
EndFunc
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
firex [?]
Ваш код попросту гоняет цикл с абсолютно не нужной в этот момент нагрузкой. Да и зацикленная генерация рандома рано или поздно даст результат < 500, так что маловероятен факт ожидания более половины секунды.
я ему дал пример, а дальше решать ему. Я же не знаю для каких целей ему нужно...

OffTopic:

Я сам не больно люблю эту функцию... Sleep()... Она не точная и вешает программу.
 
Автор
Z

Zakytto

Новичок
Сообщения
42
Репутация
2
Код:
If Not @error And TimerDiff($Time) > Random(10,1000) then
            $Time = TimerInit()


После TimerInit в скобках надо что-то вставлять, а то просто ошибку выдает.


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

Собственно еще вопрос, как сделать так, чтобы клавиша была нажата единыжды когда появится нужный пиксель в области.То есть без повтора клика, а один раз, а после как снова появится красный пиксель она снова жала?
 
Верх