Что нового

Нужен простейший автокликер для мыши

innerscope

Новичок
Сообщения
9
Репутация
0
Добрый день всем.
Мне нужен примитивный автокликер для мыши,без наворотов.Я не сумел отыскать такой в инете.Кликер при зажатой ЛКМ должен имитировать быстрые нажатия,однако не серию заранее установленного количества кликов,а именно нажатия,как будто я быстро нажимаю и отпускаю ЛКМ.Как только я убираю палец,клики должны прекращаться.Привязка к конкретному участку монитора не нужна.И,конечно,должна быть возможность выбирать интервал и назначать горячую клавишу для активации/деактивации кликера.Вот такой примитивизм )
Буду благодарен,если кто-нибудь поможет мне.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
innerscope,
Кликер для чего?
 
Автор
I

innerscope

Новичок
Сообщения
9
Репутация
0
Кликер нужен для онлайн шутеров.Дело в том,что у меня огромные потери пакетов до игрового сервера.Два раза делал трассировку,они удивились,как я вообще играю.Если я стреляю очередью,и натыкаюсь на потерю,пропадает вся очередь,я как бы стреляю холостыми.Выход один-стрелять одиночными.Пропал один выстрел,доходит другой.Но играть таким манером несколько часов-это значит заработать травму указательного пальца.Хотелось бы просто автоматизировать процесс.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Попробуй что-то типо такого:
alex33 сказал(а):
Код:
#include <Misc.au3>
Opt("MouseClickDelay", 100)
Opt("MouseClickDownDelay", 60)
Global $paused, $t, $hDll
OnAutoItExitRegister("OnExit")
HotKeySet("{F5}", "start")
HotKeySet("{F6}", "pause")
HotKeySet("{ESC}", "quit")
Func OnExit()
	ToolTip("")
	DllClose($hDll)
EndFunc   ;==>OnExit
Func start()
	; ToolTip("")
	ToolTip("Script started... Press F6 to pause.", 1, 1)
	$paused = False
EndFunc   ;==>start
Func pause()
	$paused = True
	; ToolTip("")
	ToolTip("Script paused... Press F5 to start.", 1, 1)
	While $paused = True
		Sleep(100)
	WEnd
	; ToolTip("")
EndFunc   ;==>pause
Func quit()
	Exit
EndFunc   ;==>quit
Func clicks()
	If $t = True Then Return SetError(1, 0, 0)
	$t = True
	MouseClick("left", Default, Default, Random(20, 50, 1))
	$t = False
EndFunc   ;==>clicks

start()
$hDll = DllOpen("user32.dll")
While 1
	$lkmpressed = _IsPressed("01", $hDll)
	If $lkmpressed Then
		clicks()
	EndIf
WEnd
DllClose($hDlll)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
innerscope,
Мой вариант (клавиши можно поменять на удобные Вам).
Код:
#include <Misc.au3>

Opt('MustDeclareVars', 1)
Opt('TrayAutoPause', 0)

Global $aiPauseRandom[2] = [20, 120], _	;рандомная пауза между MouseClick в этом диапазоне (мсек)
		$fClick, _							;индикатор
		$sKey = '5A';z (я русская)			;(см. _IsPressed в справке) при удерживании этой клавиши будет выполняться MouseClick

_WinAPI_LoadKeyboardLayoutEx()
HotKeySet('{Esc}', '_Exit');Esc - выход
HotKeySet('^x', '_StartEnd');Ctrl+x(ч русская) - кликаем или нет. При первом нажатии сочетания - кликаем.

While 1
	If $fClick Then
		If _IsPressed($sKey) Then
			Do
				MouseClick('primary')
				Sleep(Random($aiPauseRandom[0], $aiPauseRandom[1], 1))
			Until Not _IsPressed($sKey)
		EndIf
		Sleep(20)
	EndIf
	Sleep(100)
WEnd

Func _Exit()
	Exit
EndFunc   ;==>_Exit

Func _StartEnd()
	$fClick = Not $fClick
EndFunc   ;==>_StartEnd

Func _WinAPI_LoadKeyboardLayoutEx($sLayoutID = 0x0409, $hWnd = 0)
;~ 	CreatoR	http://autoit-script.ru/index.php/topic,5745.0.html
	Local Const $__WM_INPUTLANGCHANGEREQUEST = 0x50
	Local $aRet = DllCall('user32.dll', 'long', 'LoadKeyboardLayoutW', 'wstr', Hex($sLayoutID, 8), 'int', 0)

	If Not @error And $aRet[0] Then
		If $hWnd = 0 Then
			$hWnd = WinGetHandle(AutoItWinGetTitle())
		EndIf
		DllCall('user32.dll', 'ptr', 'SendMessage', 'hwnd', $hWnd, 'int', $__WM_INPUTLANGCHANGEREQUEST, 'int', 1, 'int', $aRet[0])
		Return 1
	EndIf
	Return SetError(1)
EndFunc   ;==>_WinAPI_LoadKeyboardLayoutEx
 
Автор
I

innerscope

Новичок
Сообщения
9
Репутация
0
Спасибо вам обоим,но у меня плохая новость-я простой пользователь,максимум,что я умею,это копипаст,а то,что вы мне предложили,для меня китайские иероглифы ))
Если вы будете столь добры,что пошагово растолкуете,что надо делать,будет замечательно.Если,конечно,я не отниму у вас время для более важных дел.
Я,кстати,потому и искал такую прогу,чтоб просто ее скачать и запускать,когда нужно,для более сложных вещей я,увы,не гожусь.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
innerscope [?]
я простой пользователь,максимум,что я умею,это копипаст,а то,что вы мне предложили,для меня китайские иероглифы
В таком случае Вам надо самым подробнейшим образом расписать тех. задание, а мы постараемся Вам помочь.
 
Автор
I

innerscope

Новичок
Сообщения
9
Репутация
0
Смотрите,в чем дело.Я уже скачал и удалил уйму кликеров.Все они выдают серии кликов.То есть,учитывая мои потери пакетов данных,эта серия теряется целиком.Мне же нужен совершенно примитивный кликер,который имитирует быстрое нажатие/отпускание левой кнопки мышки.На практике это выглядит так:я зажал(именно зажал,а не нажал и отпустил)ЛКМ,и кликер начинает быстро кликать одиночными нажатиями.В игре при таком зажиме пули вылетают по одной.Как только я убираю палец,клики должны немедленно прекратиться.Существующие в инете кликеры настроены на определенное количество кликов.Если я,используя такие кликеры,убираю палец с ЛКМ,клики все равно продолжаются согласно установленному количеству.Мне же нужно,чтобы кликер кликал только,когда я зажимаю ЛКМ,и только одиночными,как если бы я очень быстро стучал по левой кнопке пальцем.Ну и,ясное дело,нужна возможность установки интервалов между кликами.Это,в принципе,предусмотрено по определению,во всех кликерах.
Кстати,странно,что среди множества кликеров нет такого простого,какой нужен мне.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Кстати,странно,что среди множества кликеров нет такого простого,какой нужен мне.

Потому что Вам нужен странный кликер, который при нажатии на кнопку эмулирует нажатие её же.
Традиционно кликер эмулирует нажатие кнопок, которые пользователь в данный момент не трогает.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
innerscope [?]
нужен совершенно примитивный кликер,который имитирует быстрое нажатие/отпускание левой кнопки мышки
Ну вот могу такой предложить...

зажал(именно зажал,а не нажал и отпустил)ЛКМ,и кликер начинает быстро кликать
Зажать ЛКМ и что-бы он ей кликал не получится, потому что вы её нажмёте и будете держать, а она должна нажиматься и отпускаться.
По этому я сделал кликер при нажатии клавиши CTRL (control)...
Чтобы поставить другую клавишу открой справку по функции _IsPressed и подставь значение кнопки из таблицы вместо 11.
Между кликами интервал можно поставить в переменной $iTimeMS вместо 10.
Код:
#include <Misc.au3>
Opt("MouseClickDelay", 200)
Opt("MouseClickDownDelay", 60)
Global $paused, $t, $hDll
Global $iTimeMS = 10
OnAutoItExitRegister("OnExit")
HotKeySet("{F5}", "start")
HotKeySet("{F6}", "pause")
HotKeySet("{ESC}", "quit")
start()
$hDll = DllOpen("user32.dll")
While 1
    $pressed = _IsPressed("11", $hDll); CTRL key
    If $pressed Then
        click()
    EndIf
    Sleep($iTimeMS)
WEnd
DllClose($hDlll)

Func OnExit()
    ToolTip("")
    DllClose($hDll)
EndFunc   ;==>OnExit
Func start()
    ; ToolTip("")
    ToolTip("Script started... Press F6 to pause.", 1, 1)
    $paused = False
EndFunc   ;==>start
Func pause()
    $paused = True
    ; ToolTip("")
    ToolTip("Script paused... Press F5 to start.", 1, 1)
    While $paused = True
        Sleep(100)
    WEnd
    ; ToolTip("")
EndFunc   ;==>pause
Func quit()
    Exit
EndFunc   ;==>quit
Func click()
    If $t = True Then Return SetError(1, 0, 0)
    $t = True
    MouseClick("left", Default, Default, 1)
    $t = False
EndFunc   ;==>click
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
C2H5OH, alex33,
А что если при зажатии ЛКМ отсылать целевому окну уведомление, что она отжата. И далее при необходимости уведомлять обратно. Не спешите с выводами, все зависит от того, как игра обрабатывает нажатия.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
firex,
я говорил в ответ ТС только лишь о том, что кликер нетипичный.
(что подтверждает высказанная Вами мысль, что "торопиться не надо...")
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
innerscope, пробуйте
Код:
$iDownUpDelay =  5 ; задержка между нажатием и отпусканием кнопки мыши
$iClicksDelay = 30 ; задержка между кликами

#include <Misc.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Do
  If _IsPressed("01") Then
    Do
      $tPoint = _WinAPI_GetMousePos()
      $hWin = _WinAPI_WindowFromPoint($tPoint)
      _WinAPI_ScreenToClient($hWin, $tPoint)
      LeftDownUp($hWin, $tPoint.X, $tPoint.Y, $iDownUpDelay)
      Sleep($iClicksDelay)
    Until Not _IsPressed("01")
  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
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Моя версия.
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Resources\MouseClicker.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=Клики мышкой в точке нахождения курсора
#AutoIt3Wrapper_Res_Description=Клики мышкой в точке нахождения курсора
#AutoIt3Wrapper_Res_Fileversion=1.0.0.1
#AutoIt3Wrapper_Res_LegalCopyright=©2014 madmasles
#AutoIt3Wrapper_Res_Language=1049
#AutoIt3Wrapper_Res_Icon_Add=Resources\NoClick.ico
#AutoIt3Wrapper_Res_Icon_Add=Resources\Click.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;~ Autit v3.3.8.1
Opt('MustDeclareVars', 1)
Opt('TrayMenuMode', 3)

If WinExists('[TITLE:{EB2660C3-57E0-4220-A11F};CLASS:AutoIt v3]') Then Exit
AutoItWinSetTitle('{EB2660C3-57E0-4220-A11F}')

Global $aHotKeys[2][3], $iRandomPause, $aPause, $iPause, $hLowLevelMouseProc, $hHookEx, $fClick, $iCountMouseDown

If @Compiled Then
	TraySetIcon(@ScriptFullPath, 201)
Else
	TraySetIcon(@ScriptDir & '\Resources\NoClick.ico')
EndIf
__LoadKeyboardLayoutEngSelf()
OnAutoItExitRegister('_OnExit')
For $i = 0 To 1
	__HotKeySet($aHotKeys, $i)
Next
TraySetToolTip('MouseClicker v1.0.0.1' & @LF & 'Начало/конец кликов: "' & $aHotKeys[0][0] & '"' & @LF & 'Выход: "' & $aHotKeys[1][0] & '"')
TrayTip('MouseClicker v1.0.0.1', 'Горячие клавиши управления программой:' & @LF & 'Начала/конца кликов: ............... ' & $aHotKeys[0][0] & @LF & _
		'Выхода из программы: ............... ' & $aHotKeys[1][0], 5, 1)
AdlibRegister('_KillTrayTip', 5000)
ReDim $aHotKeys[1][3]
_SetMouseClickDownDelay()
_GetPauseBetweenClicks($iRandomPause, $aPause, $iPause)

While 1
	Sleep(20)
	If $fClick Then
		If $iCountMouseDown Then
;~ 			ConsoleWrite('Start Click' & @LF)
			Do
				MouseClick('primary')
				If $iRandomPause Then
					Sleep(Random($aPause[0], $aPause[1], 1))
				Else
					Sleep($iPause)
				EndIf
			Until Not $iCountMouseDown
;~ 			ConsoleWrite('End Click' & @LF)
		EndIf
	EndIf
WEnd

Func _BeginEndClick()
	HotKeySet($aHotKeys[0][1])
	$fClick = Not $fClick
;~ 	ConsoleWrite('BeginEndClick :' & $fClick & @LF)
	If $fClick Then
		If @Compiled Then
			TraySetIcon(@ScriptFullPath, 202)
		Else
			TraySetIcon(@ScriptDir & '\Resources\Click.ico')
		EndIf
		_SetHook($hHookEx, $hLowLevelMouseProc)
	Else
		If @Compiled Then
			TraySetIcon(@ScriptFullPath, 201)
		Else
			TraySetIcon(@ScriptDir & '\Resources\NoClick.ico')
		EndIf
		_UnHook($hHookEx, $hLowLevelMouseProc)
		$iCountMouseDown = 0
	EndIf
	HotKeySet($aHotKeys[0][1], $aHotKeys[0][2])
EndFunc   ;==>_BeginEndClick

Func _SetHook(ByRef $h_HookEx, ByRef $h_LowLevelMouseProc)
	If $h_LowLevelMouseProc Or $h_HookEx Then _UnHook($h_HookEx, $h_LowLevelMouseProc)

	Local Const $__WH_MOUSE_LL = 14
	Local $i_Err = 1, $a_Res, $h_SelfModul, $p_LowLevelMouseProc

	Do
		$a_Res = DllCall('kernel32.dll', 'handle', 'GetModuleHandleW', 'ptr', 0)
		If (@error) Or (Not $a_Res[0]) Then ExitLoop
		$h_SelfModul = $a_Res[0]
		$h_LowLevelMouseProc = DllCallbackRegister('_LowLevelMouseProc', 'int', 'int;wparam;lparam')
		If Not $h_LowLevelMouseProc Then ExitLoop
		$p_LowLevelMouseProc = DllCallbackGetPtr($h_LowLevelMouseProc)
		If Not $p_LowLevelMouseProc Then ExitLoop
		$a_Res = DllCall('user32.dll', 'handle', 'SetWindowsHookEx', 'int', $__WH_MOUSE_LL, 'ptr', $p_LowLevelMouseProc, _
				'handle', $h_SelfModul, 'dword', 0)
		If (@error) Or (Not $a_Res[0]) Then ExitLoop
		$h_HookEx = $a_Res[0]
		$i_Err = 0
	Until 1
	If $i_Err Then
		_UnHook($h_HookEx, $h_LowLevelMouseProc)
		Return 0
	EndIf
	Return 1
EndFunc   ;==>_SetHook

Func _UnHook(ByRef $h_HookEx, ByRef $h_LowLevelMouseProc)
	Local $i_Err = 1, $a_Res

	If $h_HookEx Then
		$a_Res = DllCall('user32.dll', 'int', 'UnhookWindowsHookEx', 'handle', $h_HookEx)
		If (@error) Or (Not $a_Res[0]) Then Return 0
		$h_HookEx = 0
	EndIf
	If $h_LowLevelMouseProc Then
		DllCallbackFree($h_LowLevelMouseProc)
		$h_LowLevelMouseProc = 0
	EndIf
	Return 1
EndFunc   ;==>_UnHook

Func _LowLevelMouseProc($i_Code, $_wParam, $_lParam)
	Local Const $__WM_LBUTTONDOWN = 0x0201, $__WM_LBUTTONUP = 0x0202

	If $i_Code >= 0 Then
		Switch $_wParam
			Case $__WM_LBUTTONDOWN
				$iCountMouseDown += 1
			Case $__WM_LBUTTONUP
				$iCountMouseDown -= 1
		EndSwitch
	EndIf
	Local $a_Res = DllCall('user32.dll', 'lresult', 'CallNextHookEx', 'handle', $hHookEx, 'int', $i_Code, 'wparam', $_wParam, 'lparam', $_lParam)
	If @error Then Return -1
	Return $a_Res[0]
EndFunc   ;==>_LowLevelMouseProc

Func __HotKeySet(ByRef $a_HotKeys, $i_Index)
	Local $s_Ini = @ScriptDir & '\MouseClicker.ini', $a_Info[2] = ['BeginEndClick', 'Exit'], $s_ReadIni, _
			$a_ModKeys[5][2] = [[4],['Alt', '!'],['Shift', '+'],['Ctrl', '^'],['Win', '#']], $a_Tmp, $s_ModKey, _
			$s_Key

	If Not FileExists($s_Ini) Then Exit MsgBox(16, 'Ошибка', 'Отсутствует файл настроек "MouseClicker.ini".')
	Switch $i_Index
		Case 0, 1
		Case Else
			Exit MsgBox(16, 'Ошибка', 'Не корректное значение $i_Index.')
	EndSwitch
	$s_ReadIni = StringStripWS(IniRead($s_Ini, 'HotKeys', $a_Info[$i_Index], 'error'), 8)
	If (Not $s_ReadIni) Or ($s_ReadIni = 'error') Then Exit MsgBox(16, 'Ошибка', 'Не корректное значение ключа "' & $a_Info[$i_Index] & '".')
	If StringInStr($s_ReadIni, '+') Then
		$a_Tmp = StringSplit($s_ReadIni, '+')
		If $a_Tmp[0] < 2 Then Exit MsgBox(16, 'Ошибка', 'Не корректное значение ключа "' & $a_Info[$i_Index] & '".')
		For $i = 1 To $a_Tmp[0]
			If Not $a_Tmp[$i] Then Exit MsgBox(16, 'Ошибка', 'Не корректное значение ключа "' & $a_Info[$i_Index] & '".')
		Next
		For $i = 1 To $a_ModKeys[0][0]
			If $a_Tmp[1] = $a_ModKeys[$i][0] Then
				$s_ModKey = $a_ModKeys[$i][1]
				$a_HotKeys[$i_Index][0] = $a_ModKeys[$i][0] & '+'
				ExitLoop
			EndIf
		Next
		If Not $s_ModKey Then Exit MsgBox(16, 'Ошибка', 'Не корректное значение горячей клавиши-модификатора.')
		$s_Key = StringLower($a_Tmp[2])
	Else
		$s_Key = StringLower($s_ReadIni)
	EndIf
	If $i_Index Then
		If $s_Key = 'esc' Then
			$s_Key = '{Esc}'
			$a_HotKeys[$i_Index][0] &= 'Esc'
		Else
			If Not StringRegExp($s_Key, '^[a-z]$') Then Exit MsgBox(16, 'Ошибка', 'Не корректное значение горячей клавиши.')
			$a_HotKeys[$i_Index][0] &= $s_Key
		EndIf
		If $a_HotKeys[1][0] = $a_HotKeys[0][0] Then Exit MsgBox(16, 'Ошибка', 'Горячие клавиши на разные действия совпадают.')
	Else
		If Not StringRegExp($s_Key, '^[a-z]$') Then Exit MsgBox(16, 'Ошибка', 'Не корректное значение горячей клавиши.')
		$a_HotKeys[$i_Index][0] &= $s_Key
	EndIf
;~ 	ConsoleWrite($s_ModKey & $s_Key & @LF)
	$aHotKeys[$i_Index][1] = $s_ModKey & $s_Key
	$aHotKeys[$i_Index][2] = '_' & $a_Info[$i_Index]
	HotKeySet($s_ModKey & $s_Key, '_' & $a_Info[$i_Index])
EndFunc   ;==>__HotKeySet

Func _GetPauseBetweenClicks(ByRef $i_RandomPause, ByRef $a_Pause, ByRef $i_Pause)
	Local $s_Ini = @ScriptDir & '\MouseClicker.ini', $i_ReadIni

	$i_ReadIni = Int(IniRead($s_Ini, 'PauseBetweenClicks', 'Random', '0'))
	If Not $i_ReadIni Then
		$i_RandomPause = 0
		$a_Pause = 0
		$i_Pause = Int(IniRead($s_Ini, 'PauseBetweenClicks', 'PauseMin', '50'))
		Switch $i_Pause
			Case 20 To 1000
			Case Else
				$i_Pause = 50
		EndSwitch
	Else
		$i_RandomPause = 1
		If IsArray($a_Pause) Then
			ReDim $a_Pause[2]
		Else
			Dim $a_Pause[2]
		EndIf
		$a_Pause[0] = Int(IniRead($s_Ini, 'PauseBetweenClicks', 'PauseMin', '50'))
		Switch $a_Pause[0]
			Case 20 To 900
			Case Else
				$a_Pause[0] = 50
		EndSwitch
		$a_Pause[1] = Int(IniRead($s_Ini, 'PauseBetweenClicks', 'PauseMax', '150'))
		Switch $a_Pause[1]
			Case $a_Pause[0] + 50 To 1000
			Case Else
				$a_Pause[1] = $a_Pause[0] + 100
		EndSwitch
	EndIf
	Return 1
EndFunc   ;==>_GetPauseBetweenClicks

Func _SetMouseClickDownDelay()
	Local $s_Ini = @ScriptDir & '\MouseClicker.ini', $i_MouseClickDownDelay

	$i_MouseClickDownDelay = Int(IniRead($s_Ini, 'MouseOptoin', 'ClickDownDelay', '10'))
	Switch $i_MouseClickDownDelay
		Case 10 To 50
			Opt('MouseClickDownDelay', $i_MouseClickDownDelay)
	EndSwitch
EndFunc   ;==>_SetMouseClickDownDelay

Func _KillTrayTip()
	AdlibUnRegister('_KillTrayTip')
	TrayTip('MouseClicker', '', 1)
EndFunc   ;==>_KillTrayTip

Func __LoadKeyboardLayoutEngSelf()
	Local Const $__KLF_ACTIVATE = 0x00000001, $__KLF_SETFORPROCESS = 0x00000100
	Local $a_Res = DllCall('user32.dll', 'long', 'LoadKeyboardLayoutW', 'wstr', '00000409', 'uint', BitOR($__KLF_ACTIVATE, $__KLF_SETFORPROCESS))
	If (@error) Or (Not $a_Res[0]) Or (Not StringInStr(Hex($a_Res[0]), '0409')) Then Return 0
	Return 1
EndFunc   ;==>__LoadKeyboardLayoutEngSelf

Func _OnExit()
	_UnHook($hHookEx, $hLowLevelMouseProc)
EndFunc   ;==>_OnExit

Func _Exit()
	Exit
EndFunc   ;==>_Exit
Скомпилированный скрипт, исходник, иконки и файл настроек лежат здесь: MouseClicker.
В файле MouseClicker.ini подробно расписано как настроить все опции. Могу добавить опцию кликов только в определенном окне.
 
Автор
I

innerscope

Новичок
Сообщения
9
Репутация
0
Спасибо всем,кто откликнулся.
Огромная благодарность вам,madmasles!
Но тут вот какой вопрос возник.Я только что протестировал кликер,и сделал 2 видео.

Вот на этом я стреляю без кликера,быстро нажимая и отпуская ЛКМ.Обратите внимание-все пули идут в одну точку,то есть клики четко одиночные,автомат не уходит вверх.
http://youtu.be/QEqbgXR2uJY

На втором видео стрельба при включенном созданном вами кликере.Посмотрите-пули постепенно идут вверх,это значит,что кликер не имитирует одиночные клики,а делает серию кликов,иначе оружие не заносило бы при стрельбе.Приблизительно так же автомат стреляет,если я зажму ЛКМ при выключенном кликере.
http://youtu.be/oEwRJR-IOqY
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
innerscope
Кликер работает быстрее ручных нажатий. Попробуйте увеличить время между нажатием-отпусканием и/или между кликами.

Кстати, мой скрипт работает? (просто интересно)
 
Автор
I

innerscope

Новичок
Сообщения
9
Репутация
0
Кстати, мой скрипт работает? (просто интересно)
[/quote]

так я его,к сожалению не тестировал,ибо,как я уже говорил выше,просто не знаю,как работать со скриптами,я полнейший нуб ))
кликер madmasles я смог запустить,потому что он как раз был рассчитан на простого юзера компа
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
innerscope
Скомпилированный скрипт. Пробуйте.
Код:
#include <Misc.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

HotKeySet("{PAUSE}", "Start")
HotKeySet("+{ESC}", "Quit")

$GUI = GUICreate("Кликер", 455, 105)
$InpDownUp = GUICtrlCreateInput("", 5, 5, 50, 20, 0x2000)
GUICtrlSetData(-1, Abs(Int(IniRead(@ScriptDir & "\DelaySets.ini", "Delay", "DownUpDelay", "5"))))
GUICtrlCreateLabel("задержка в миллисекундах между нажатием и отпусканием кнопки мыши", 60, 5, 380, 20, 0x0200)
$InpClicks = GUICtrlCreateInput("", 5, 30, 50, 20, 0x2000)
GUICtrlSetData(-1, Abs(Int(IniRead(@ScriptDir & "\DelaySets.ini", "Delay", "ClicksDelay", "30"))))
GUICtrlCreateLabel("задержка в миллисекундах между одиночными кликами", 60, 30, 380, 20, 0x0200)
GUICtrlCreateLabel("Pause  -  установка/снятие кликера с паузы", 5, 55, 230, 20, 0x0200)
GUICtrlCreateLabel("Shift+ESC  -  прекращение работы скрипта", 5, 80, 230, 20, 0x0200)
$BtnStart = GUICtrlCreateButton("Готово", 350, 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", "ClicksDelay", GUICtrlRead($InpClicks))
      ExitLoop
  EndSwitch
Until 0

Global $DownUpDelay =  GUICtrlRead($InpDownUp)
Global $ClicksDelay = GUICtrlRead($InpClicks)
Global $Start = True
GUIDelete($GUI)

Do
  If $Start Then
    If _IsPressed("01") Then
      Do
        $tPoint = _WinAPI_GetMousePos()
        $hWin = _WinAPI_WindowFromPoint($tPoint)
        _WinAPI_ScreenToClient($hWin, $tPoint)
        LeftDownUp($hWin, $tPoint.X, $tPoint.Y, $DownUpDelay)
        Sleep($ClicksDelay)
      Until Not _IsPressed("01")
    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
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
innerscope [?]
На втором видео стрельба при включенном созданном вами кликере.Посмотрите-пули постепенно идут вверх,это значит,что кликер не имитирует одиночные клики,а делает серию кликов,иначе оружие не заносило бы при стрельбе.Приблизительно так же автомат стреляет,если я зажму ЛКМ при выключенном кликере.
При нажатой кнопке мыши скрипт кликает одиночными кликами в соответствии с настройками.
Если игра это не воспринимает так, как нужно, то тут, ИМХО, два три варианта:
1. Поэкспериментировать с паузой между кликами (в MouseClicker.ini в секции [PauseBetweenClicks] Random установить в 1 и менять значения PauseMin и PauseMax с шагом 100 от 100 до 900 (1000), и с паузой ClickDownDelay в секции [MouseOptoin]. Если не поможет, то см. 2.
2. Заменить начало/конец кликов на удерживание какой-нибудь клавиши, а не кнопки мыши. Может быть игра отслеживает клики примерно таким же способом, как и в моем варианте.
3. Попробовать использовать функцию кликов от InnI (мне тоже интересно, работает ли должным образом его вариант).

PS
Могу еще добавить опцию случайного изменения времени удерживания мыши в нажатом состоянии при клике для каждого клика.
 
Автор
I

innerscope

Новичок
Сообщения
9
Репутация
0
Начну с кликера,любезно присланного мне InnI.
Я его включил,зашел в игру,тут мне пришлось срочно выходить,и...и я не смог его выключить.Несмотря на все команды к отключению,он продолжал кликать на все,что попадалось под маус.Пришлось перезагрузить компьютер,чтоб его успокоить.Но все равно спасибо ))
С вашим кликером,madmasles,путем проб и ошибок я пришел к более-менее годному результату.Правда,пока не решил задачу падения скорострельности автомата,думаю,надо поэкспериментировать со значениями.
 
Верх