1 (изменено: skeleton, 2015-06-19 11:04:12)

Тема: MouseMove - неадекватные смещения курсора.

Столкнулся с такой бедой:
В игре MouseMove, 0, 4,  , R после нажатия ЛКМ смещаения курсора очень большие, с первого выстрела сразу под ноги и так далее... установка MouseMove, 0, 1,  , R не помогает хотя смещения поменьше но все равно очень сильные... установка MouseMove, 0, 0.9,  , R - вообще не работает... В чем причина? В системе отрабатывает нормально...

*~Lbutton::
Loop 
{ 
GetKeyState, state, LButton, P  ;проверяет нажатали лкм или нет
if state = U
break
    Sleep, 30
    MouseMove, 0, 4, , R
}
Return

2

Re: MouseMove - неадекватные смещения курсора.

CoordMode, Pixel, Screen
CoordMode, Mouse, Screen

3

Re: MouseMove - неадекватные смещения курсора.

Что мне сделать с этими волшебными строками?

4 (изменено: Nikva, 2015-07-14 13:14:53)

Re: MouseMove - неадекватные смещения курсора.

CoordMode, Pixel, Screen
CoordMode, Mouse, Screen

CoordMode - Устанавливает режим координат различных команд на соответствие активному окну или экрану.

Но мне в полноэкранных играх, это не помогло.
Я воспользовался кодом предложенным Irbis здесь.
Поиграв со скоростью и направлением перемещения, я смог добиться желаемого результата.

+ как пример кусок моего скрипта, в игре разворачивает на 180° в лево\право по очереди.
vk45sc12:: ; E
MouseGetPos,mgpX ; берёт координаты мыши
if (mgpX > A_ScreenWidth/2) : если мышь в правой половине монитора 
mouseXY(-545,0,100) ; двигает мышь в лево
Else if (mgpX < A_ScreenWidth/2) ; если в левой
mouseXY(545,0,100) ; то двигает мышь в право
KeyWait, vk45sc12 ; ждёт пока я не отпущу E
Return

; и функция Irbis
mouseXY(x,y,s) 
{
   dx:=0,dy:=0, dx0:=0, dy0:=0
   loop % s
   {
      DllCall("mouse_event",uint,1,int
              ,dx0:=Round(dx := dx+x/s - dx0),int
              ,dy0:=Round(dy := dy+y/s - dy0),uint,0,int,0) 
   }
}

5 (изменено: Ядрён, 2015-07-15 00:46:39)

Re: MouseMove - неадекватные смещения курсора.

Доброго времени суток . Вам нужно выставить задержку . Вместо значения "Speed" поставьте от 0 до 100. Два значения "Sleep" выравнивают курсор и избавляют его от дёрганий.

MouseMove, X, Y [, Speed, R]

Как то так.

~*$vk1::
while GetKeyState("LButton","P")
{
MouseMove, 0, 4, 0, R
Sleep, 20
Sleep, 20
}
Return

Можно попробовать в виндовс установить чувствительность мыши поменьше , где то на 4-е деление должно помочь.
Ну или так.

~*$vk1::
while GetKeyState("LButton","P")
{
DllCall("mouse_event",uint,1,int,0,int,4,uint,0,int,0)
DllCall("Sleep", UInt, 20)
}
Return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

6 (изменено: skeleton, 2015-07-19 10:15:58)

Re: MouseMove - неадекватные смещения курсора.

Хм... DllCall("mouse_event",uint,1,int,0,int,4,uint,0,int,0) работает!
Где здесь регулируется плавность? Как в MouseMove, 0, 4, 2, R цифра - 2?

Будет ли работать так?

~*$vk1::
while GetKeyState("LButton","P")
{
DllCall("mouse_event",uint,1,int,0,int,4,uint,0,int,0)
Sleep, 20
}
Return

7 (изменено: Ядрён, 2015-07-21 04:49:30)

Re: MouseMove - неадекватные смещения курсора.

Регулируется значением команды "Sleep". Чем больше значение тем медленее двигается курсор.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).