Что нового

Помогите починить скрипт

ConGamePass

Новичок
Сообщения
1
Репутация
0
Суть проста. Нашел на форуме скрипт автокликер для игры. Т.е. ты зажимаешь кнопку и он кликает. Изначально он был для доты 2 и кликал ПКМ, мне же нужно ЛКМ.
Немного переделал, поменял кнопки так например актицвация теперь на F4
Он собственно кликает но иногда кликает ПКМ. Собственно мне нужно что бы при работе скрипта ПКМ не нажимался
 

Вложения

  • AutoIt v3 Script.au3
    3.5 КБ · Просмотры: 1

SealAlbinos

Продвинутый
Сообщения
154
Репутация
57
Собственно косяк в функции RightDownUp
Код:
Func RightDownUp($hWnd, $X, $Y, $Sleep = 0);
  _WinAPI_PostMessage($hWnd, $WM_RBUTTONDOWN, 0, _WinAPI_MakeLong($X, $Y));
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT, $WM_RBUTTONDOWN));
  If $Sleep Then Sleep($Sleep)
  _WinAPI_PostMessage($hWnd, $WM_RBUTTONUP, 0, _WinAPI_MakeLong($X, $Y));
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT, $WM_RBUTTONUP));
EndFunc

Читай справку и поймешь для себя, почему проходил клик на пкм

Ну и собственно так должно все работать
Код:
#include <Misc.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

HotKeySet("{F4}", "Start") ;Start-Pause
HotKeySet("+{F4}", "Quit") ;Выйти // + это shift

$GUI = GUICreate("Кликер", 470, 115)
$InpDownUp = GUICtrlCreateInput("", 5, 5, 50, 20, 0x2000)
GUICtrlSetData(-1, Abs(Int(IniRead(@ScriptDir & "\DelaySets.ini", "Delay", "DownUpDelay", "5"))))
GUICtrlCreateLabel("задержка в миллисекундах между нажатием и отпусканием кнопки мыши", 70, 5, 380, 20, 0x0200)
$InpClicks1 = GUICtrlCreateInput("", 5, 30, 50, 20, 0x2000)
GUICtrlSetData(-1, Abs(Int(IniRead(@ScriptDir & "\DelaySets.ini", "Delay", "ClicksDelay1", "71"))))
$InpClicks2 = GUICtrlCreateInput("", 65, 30, 50, 20, 0x2000)
GUICtrlSetData(-1, Abs(Int(IniRead(@ScriptDir & "\DelaySets.ini", "Delay", "ClicksDelay2", "84"))))
GUICtrlCreateLabel("(От - До) задержка в миллисекундах между одиночными кликами", 120, 30, 380, 20, 0x0200)
GUICtrlCreateLabel("F4  -  установка/снятие кликера с паузы", 5, 55, 230, 20, 0x0200)
GUICtrlCreateLabel("Shift+F7  -  прекращение работы скрипта", 5, 80, 230, 20, 0x0200)
$BtnStart = GUICtrlCreateButton("Готово", 300, 55, 100, 45)
GUISetState()

Do
  Switch GUIGetMsg()
    Case -3
      Exit
    Case $BtnStart
      IniWrite(@ScriptDir & "\DelaySets.ini", "Delay", "DownUpDelay", GUICtrlRead($InpDownUp))
      IniWrite(@ScriptDir & "\DelaySets.ini", "Delay", "ClicksDelay1", GUICtrlRead($InpClicks1))
      IniWrite(@ScriptDir & "\DelaySets.ini", "Delay", "ClicksDelay2", GUICtrlRead($InpClicks2))
      ExitLoop
  EndSwitch
Until 0

Global $DownUpDelay =  GUICtrlRead($InpDownUp)
Global $ClicksDelay1 = GUICtrlRead($InpClicks1)
Global $ClicksDelay2 = GUICtrlRead($InpClicks2)
Global $Start = True
GUIDelete($GUI)

Do
  If $Start Then
    If _IsPressed("01") Then ;id кнопки,справка - http://autoit-script.ru/autoit3_docs/libfunctions/_ispressed.htm
      Do
         Global $ClicksDelay = Random($ClicksDelay1, $ClicksDelay2, 1);то самое генерирование рандом числа
        $tPoint = _WinAPI_GetMousePos()
        $hWin = _WinAPI_WindowFromPoint($tPoint)
        _WinAPI_ScreenToClient($hWin, $tPoint)
        LeftDownUp($hWin, $tPoint.X, $tPoint.Y, $DownUpDelay)
        Sleep($ClicksDelay)
      Until Not _IsPressed("01") ;id кнопки,справка - http://autoit-script.ru/autoit3_docs/libfunctions/_ispressed.htm
    EndIf
  EndIf
  Sleep(10)
Until 0

Func LeftDownUp($hWnd, $X, $Y, $Sleep = 0);
  _WinAPI_PostMessage($hWnd, $WM_LBUTTONDOWN, 0, _WinAPI_MakeLong($X, $Y));
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT, $WM_LBUTTONDOWN));
  If $Sleep Then Sleep($Sleep)
  _WinAPI_PostMessage($hWnd, $WM_LBUTTONUP, 0, _WinAPI_MakeLong($X, $Y));
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT, $WM_LBUTTONUP));
EndFunc

Func Start()
  $Start = Not $Start
EndFunc

Func Quit()
  Exit
EndFunc
 
Последнее редактирование:
Верх