1 (изменено: Dworkin, 2013-08-22 05:10:48)

Тема: AHK: Корректировка полета пуль

Здравствуйте!
Я читал правила поэтому старался придумать название темы как можно ближе к вопросу. Так что если что извиняюсь.

Нашел я этот скрипт на просторах интернета. Протестировал его и он почти подходит, но моих знаний не хватает что бы до конца его понять. Если бы я понял его до конца то знал бы как подкорректировать скрипт.

Вот сам скрипт

#IfWinActive, Blablabla
SetBatchLines, -1
SetMouseDelay, -1
SetKeyDelay, -1
Suspend, On
return

CapsLock::
Suspend, Toggle
if A_IsSuspended
{
    SetCapsLockState, Off
    SoundBeep, 500, 150
}
else
{
    SetCapsLockState, On
    SoundBeep, 1500, 150
}
return

*LButton::
Click Down
Loop
{
    GetKeyState, state, LButton, P
    if A_TimeSinceThisHotkey < 900
    {
        var1 := 1
        var2 := A_TimeSinceThisHotkey / 15
    }
    else
    {
        var1 := 0
        var2 := 60
    }
    if state = U
        break
    DllCall("mouse_event", uint, 1, int, 0, int, var1, uint, 0, int, 0)
    Sleep, 10
}
Click Up
DllCall("mouse_event", uint, 1, int, 0, int, -var2, uint, 0, int, 0)
return

Помогите пожалуйста и объясните построчно этот кусочек кода:

*LButton::
Click Down 
Loop
{
    GetKeyState, state, LButton, P
    if A_TimeSinceThisHotkey < 900               
    {
        var1 := 1                                              
        var2 := A_TimeSinceThisHotkey / 15  
    }
    else
    {
        var1 := 0
        var2 := 60
    }
    if state = U
        break
    DllCall("mouse_event", uint, 1, int, 0, int, var1, uint, 0, int, 0)
    Sleep, 10
}
Click Up
DllCall("mouse_event", uint, 1, int, 0, int, -var2, uint, 0, int, 0)
return

2 (изменено: serzh82saratov, 2013-08-31 20:12:48)

Re: AHK: Корректировка полета пуль

if A_TimeSinceThisHotkey < 900 ; что это?

Время в миллисекундах сколько нажат этот Hotkey.

Если нужно точное смещение на определённое кол-во пикселей, я бы как то так написал:


MaxStep := 60 

~*LButton:: 
    While GetKeyState("LButton", "P")   { 
        if (A_Index <= MaxStep)
            MouseMove, 0, 1, 0, R 
        var := A_Index >= MaxStep ? MaxStep : A_Index
    }
    MouseMove, 0, -var, 0, R  
    return    
SetMouseDelay

Лучше в этом случае установить в районе 15. Настройка с помощью SetMouseDelay более плавная чем использование Sleep, 10.

+ тоже с DllCall

MaxStep := 60  

~*LButton:: 
    While GetKeyState("LButton", "P")   { 
        if (A_Index <= MaxStep)
            DllCall("mouse_event", uint, 1, int, 0, int, 1, uint, 0, int, 0) 
        var := A_Index >= MaxStep ? MaxStep : A_Index
        Sleep, 10 
    }
    DllCall("mouse_event", uint, 1, int, 0, int, -var, uint, 0, int, 0) 
    return    
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui