1 (изменено: amigos8572, 2014-04-24 15:11:30)

Тема: «AHK: Создание скрипта для игры на антиотдачу орудия».

Здравствуйте!
С помощью человека с Рубоард был написан следующий макрос, который мной был немного доретуширован под мои нужды:

toggleHotkeys := true
fireCorrectionMode := [[[0, 100, 100, 10000], [0, 100, 100, 10000]], [[0, 0, 0, 0], [0, 0, 0, 0]]] 
F12::ExitApp
F4::toggleHotkeys := !toggleHotkeys

#if toggleHotkeys 
    ~Xbutton1::gunType := 1
    ~sc002::gunType := 1
    ~Xbutton2::gunType := 2
    ~sc003::gunType := 2
    ~sc004::gunType := 0
    ~sc005::gunType := 0
    ~sc006::gunType := 0
    ~*WheelUp::gunType := 0
    ~*WheelDown::gunType := 0
    !Wheelup::gunType := 0

#if gunType && toggleHotkeys
    ~*LButton:: 
        Autofire() 
        return 
#if 
 
Autofire() 
{ 
    global gunType, fireCorrectionMode 
 
    while GetKeyState("LButton", "P") 
{ 
        mode := fireCorrectionMode[gunType, GetKeyState("LControl", "P")? 1 : 2]
    Click down
    Sleep mode[3]
        DllCall("mouse_event",uint,1,int,mode[1],int,mode[2],uint,0,int,0)  
    Click up
        Sleep mode[4] 
    } 
}

Смысл следующий: На боковые кнопки мышки и на кнопки 1 и 2 установлено 2 типа орудия.
Каждое из орудий имеет свою отдачу. Причем отдача отличается из того, в каком положении я стреляю (сидя - нажат Контрол) или стоя (ничего дополительно не нажимается).
Выполнен скрипт так: при нажатии кнопки клавы или мыши задается номер орудия (0 - ничего не задано, 1 - 1 орудие, 2 - 2 орудие). При нажатии Контрола выбирается подтип антиотдачи для соответствующего орудия.
При нажатии ЛКМ происходят выстрелы сколько-то сек, которые я задаю, потом отпускание кнопки мыши и пауза.
При этом в скрипте учитываются ситуации, что я могу сменить тип орудия и должна сменится антиотдача, могу встать и также должна антиотдача сменится.

В итоге в этом скрипте возникли 2 проблемы:
1) Отключение Антиодачи - нажатие кнопки F4 ни как не влияет на работу антиотдачи, она работает всегда.
2) После первого нажалтия ЛКМ и удержания ее, работает все как часы. Но если я отпускаю ЛКМ и потом вновь нажимаю, то выстрелы длятся больше положенного по мс. Например, тут задано 100мс на 1 орудие (его пока и тестю, настраиваю), а по факту выстрелы длятся сек 4-5, потом лишь происходит смещение на 100 вниз.
Понять с чем это связано не могу.
PS Есть предположение, что это связано с паузой после отпускания мышки в скрипте. Если выставляю не 5000, а 1000 - все работает как часы. Не понимаю этой зависимости.

Вопроса 2: Может как-то ввести повторную проверку по нажатию кнопки, чтобы не ждать 5 секунд при повтороном нажатии ЛКМ, пока скрипт сообразит, что ЛКМ зажата.
И 2 вопрос, почему же, когда F4 я нажимаю, реакции нет никакой на скрипт. Он также при повторном нажатии стреляет и через сек 5 делает смещение.
Есть ли в программе возможность отслеживания шаг за шагом, что происходит в скрипте, чтобы понять, где происходит сбой работы его?
Спасибо за внимание.
PPS Вопрос снимаю, т.к. экспериментальным путем выяснил, что время в команде Sleep влияет на работу скрипта целиком, и чем она меньше, тем меньше задержка между между выполнением скрипта ,и уже не эти 5 сек, а при установке паузы в 3 сек будет лишь 3 сек и т.д.

2

Re: «AHK: Создание скрипта для игры на антиотдачу орудия».

amigos8572, ознакомьтесь с этой темой, отредактируйте заголовок.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder