Ответить в теме
Страница 1 из 3
1 2 3 ‌

Тема: BF2: Конфигтвикинг и макросы

  1. #1
    Аватар для Antieverything
    Регистрация
    23.02.2010
    Возраст
    36
    Сообщений
    8,354
    Поблагодарили 7,670 раз(а)
    Вес репутации: 100

    BF2: Конфигтвикинг и макросы


    Все ссылки видны только участникам конференции

    BF2: Конфигтвикинг и макросы

    Возглавляющие рейтинг вопросов и всевозможных холиваров темы про пинг, рег и "я в него весь рожек выпустил ©", подробно освещены в Теории большого рега. В рамках же конфигтвикинга, нам интересны механизмы корректировки сетевой части игры, о которых понятно изложено в этой выдержке:

    Чтобы не было читеров и подмены информации о попаданиях и повреждениях, вся информация подобного рода подсчитывается сервером. Из-за того, что между ним и клиентом существует задержка в передачи информации, используют 3 основных механизма корректировки. Это компенсация задержки, интерполяция и экстраполяция.

    GSDefaultLatencyCompensation – значение по умолчанию 0.100000

    Вы посылаете пакет на сервер о том, что выстрелили игроку, бегущему за угол прямо перед самым углом, в голову. Сервер получил от этого игрока (бегущего за угол) информацию о его положении раньше вашей, т.к. у него лучше пинг. Однако, благодаря компенсации "лагов", сервер берёт из текущего положения спрятавшегося за углом чела, вычитает время компенсации и определяет где он был в прошлом, в момент вашего выстрела. Таким образом, сервер откатывает реальное положение бедолаги за углом и засчитывает попадание. Т.е. игрок с плохим пингом, при правильной настройке компенсации получается попадает в того у кого пинг лучше. Это вызывает парадокс для игрока с хорошим пингом, который спрятался за угол и он в шоке от того, что его убили, а для игрока с плохим пингом всё вроде бы и в норме - он убил гопника ещё до угла. Отсюда вывод - это значение должно быть равно вашему пингу.
    Работу этого параметра явно видно из всем известного ролика, где бегущие параллельно игроки среляют друг в друга слегка сзади и убивают. Это значит, что они снимали этот ролик на серваке, где имеют пинг меньший 100, а это значит, что исходя из дефолтного конфига сервак делает откат модели игрока в прошлое на 100мс но! в реале надо было сделать откат не так сильно, а допустим на 60мс (при пинге 60) - вот и получается что игрок стрелять должен чуть назад.

    GSExtrapolateFrame Значение 0 или 1

    1 - включить учёт экстраполяции, а 0 - забить на неё.

    GSExtrapolationTime – значение по умолчанию 1200

    Это метод борьбы с потерями пакетов. Допустим, вы при игре лаганули и ваш комп недополучил пакетик с координатами врагов и их моделями на карте. Тогда включается механизм экстраполяции и ваш клиент пытается достроить положение врага методом предсказания его перемещений, основываясь на последних пакетах полученных с сервака (координаты, скорость , вектор движения и тд). Думаю, многие замечали, как при зависании коннекта машинка вылетает за область дороги и взлетает в небеса. Когда те или иные объекты, основываясь на своём предыдущем движении, начинают двигаться по той траектории, куда они двигались раньше (клиент при этом, даже не подозревает, что танк не может летать =). Значение данного параметра говорит о том, что в течение определенного периода времени в мс, ваша машина будет предсказывать будущее положение объектов на карте. Ставить много, равносильно тому, что ваш компьютер, при больших лагах в коннекте, предскажет вам, что ваш враг улетел на танке в облака. Маленькое значение не вызовет таких глюков, но тогда будут лаги, связанные с потерей пакетов и картинка на вашей машине уже будет обновлятся только после получения инфы с сервака т.е. рывками.

    GSInterpolationTime – значение по умолчанию 100

    Компы, как правило держат фпс на высоком уровне ( к примеру 50фпс что соответствует 50 обновлениям в секунду) и канал инета не поспевает за этим. Получается, что для фпс 50 надо иметь пинг в 50 обновлений в секунду т.е. 20мс. а если у меня видео легко держит 100фпс то пинг равен 1мс =). Отсюда следует, применение интерполяции, т.е. предсказание положения врагов для сглаживания картинки. Т.е. получается, что прежде чем вам видюха определит модель игрока, ваш комп 2 раза обратится к серваку и потом ваш проц просчитает промежуточное положение модели между двумя обращениями, которое ваша видюха собственно и отрендерит. Получается, что реально вы получили все данные о игроке в моент времени Х, потом получили данные в момент времени Х + дельта (дельта равная времени задержки через которое пришёл второй пакет). Потом, основываясь на этих данных, ваш проц предсказывает плавную траекторию модели игроков врага на серваке и их движение. Этот параметр должен быть как минимум равен вашему пингу или меньше той планки до которой может ваш пинг упасть. Ставить параметр ещё ниже не имеет смысла, т.к. ваш пинг не даст вам возможность сократить время между двумя пакетами (время интреполяции) менее чем на время прохождения пакетов физически. В идеале, должно совпадать с вашим пингом и с DefaultLatencyCompensation. Если пакет всё же теряется, то врубается компенсация данных потерянных, а именно механизм экстраполяции - предсказания содержимого потерянного пакета. После получения очередного пакета ошибки, предсказания будут устранены сервером. Наверное замечали, как вроде бы вы прошли вперёд как вдруг, при лагах, вас сервак возвращает почти в ту же позицию, где вы и были. Все это происходит при резком подскоке пинга, сопровождается лагами и дёрганьями (каждый раз ваш клиент основываясь на корректировках серваком ваших неверных предсказаний, правит положение моделей).

    Мне не понятно, почему при дефолтном GSExtrapolateFrame 0 всё равно есть экстраполяция - те неверные предсказания объектов на карте при проблеме с коннектом. Возможно либо существуют ещё и другие скрытые механизмы в бф2 отвечающие за это, либо я не верно понял смысл этого параметра. Второе, что меня смущает это почему при подскоке пинга и лагах идёт корректировка именно вашей модели тоже и вы видете лаги и дёрганья - мне казалось что экстраполируются все модели, кроме ваших т.к. о вашей модели сервак узнаёт от вас и ваших командах отданных ему. Возможно, это связанно с тем, что сервак просто не может так резко переместить вашу модель вперёд ( к примеру вы шли вперёд в момент подскока пинга) и основываясь на последних данных от вас и новых данных, корректирует ваше положение в промежуточное между тем, что было до подскока пинга и тем что вы видели на вашей стороне клинета.©
    Значения эти берутся клиентом игры из файла \Battlefield 2\mods\bf2\Settings\Usersettings.con, где их в основном и редактируют.

    От себя скажу, что на патче 1.4, когда я играл с пингом ~40мс, эти твики сильно выручали практически во всех аспектах геймплея, сейчас на патче 1.5 и почти "локальном" пинге, не могу сказать, что ощущаю какую-то разницу.
    Вторым способом редактировать параметры Usersettings прямо "на лету" является консоль игры (открывается кнопкой ~ ). Таким образом можно вводить на исполнение практически любые команды. Поскольку вручную печатать в консоли такой объем текста достаточно обременительно, мы можем упростить себе задачу и автоматизировать этот процесс, тут нам на помощь придет программа AutoHotkey.

    AutoHotkey

    бесплатная программа с открытым исходным кодом для создания макросов и автоматизации, позволяющая упростить повторяющиеся задачи ©

    AutoHotkey использует глобальный перехват устройств ввода (клавиатура, мышь, джойстик итп) для переназначения действий. Так, например, вы можете заменить одну клавишу на другую, назначить одной кнопке несколько чередующихся действий, или повесить на нажатие целый "сценарий". В рамках Battlefield самые популярные темы - это настройка джойстика, нивелирование отдачи оружия, эмуляция "баннихопинга", использование "ускоренной стрельбы", плавное и более точное управление ТВ ракетой, сценарии для вертолета, самолета, игры снайпером, авто наведение артиллерии, автоспот, команды игрового меню, авто написание сообщений в чат итд. Существует три версии программы, однако большинству лучше подойдет последняя, которая в свою очередь бывает 32\64-битной (лучше производительность на 64-битных ОС) и ANSI версия для лучшей совместимости с некоторыми старыми скриптами. С последних версий утилита была полностью переписана на другом языке программирования, поэтому некоторые специфические вещи от первых релизов в ней не поддерживаются.







    Итак мы можем начать с того, что откроем автоматически консоль, сэмулировав нажатие клавиши "тильда" и сделаем несколько нажатий клавиши "Backspace", чтобы стереть возможный "мусор", который случайно мог там быть. На AutoHotkey это будет выглядеть так:

    1. Sleep 110
    2. Send {Down}
    3. Sleep 110
    4. Send {Up}
    5. Sleep 10
    6. Send {Backspace}
    7. Sleep 10
    8. Send {Backspace}
    9. Send {Backspace} 

    Теперь мы можем вводить наши новые значения Usersettings, например такие (под пинг ~40мс):

    1. Send,SettingsManager.U32Set GSPerfLogAtPlayerCount 70{Enter}
    2. Sleep 2
    3. Send,SettingsManager.boolSet GSShowNetGraph 0{Enter}
    4. Sleep 2
    5. Send,SettingsManager.boolSet GSUseObjectCache 1{Enter}
    6. Sleep 2
    7. Send,SettingsManager.boolSet GSExtrapolateFrame 0{Enter}
    8. Sleep 2
    9. Send,SettingsManager.floatSet GSDefaultLatencyCompensation 0.040000{Enter}
    10. Sleep 2
    11. Send,SettingsManager.U32Set GSExtrapolationTime 450{Enter}
    12. Sleep 2
    13. Send,SettingsManager.U32Set GSInterpolationTime 40{Enter}  


    И при желании, мы также можем автоматически закрыть консоль этим же скриптом:

    1. Sleep 110
    2. Send {Down}
    3. Sleep 110
    4. Send {Up}


    Чтобы "повесить" весь этот сценарий на нажатие кнопки "А", мы должны вставить весь код выше внутрь такой конструкции:

    1. $A::
    2.  
    3. ;Весь код здесь
    4.  
    5. Return

    Чтобы скрипты работали, нужно установить AutoHotkey на компьютер, а текст скрипта сохранять любым текстовым редактором с расширением ahk. Такие файлы теперь будут запускаться по двойному клику. AutoHotkey умеет компилировать скрипты в исполняемые exe файлы и в этом виде они будут работать на любой машине без необходимости устанавливать саму программу.

    Вот в общем-то и все про доступные средства влияния на сетевую часть игры через ее движек. Если вы захотите самостоятельно глубже изучить этот аспект, то можете обратить внимание также на дополнительные параметры:

    1. SettingsManager.boolSet GSClPunkBuster 1
    2. SettingsManager.floatSet GSDefaultLatencyCompensation X.XXXXXX
    3. SettingsManager.boolSet GSExtrapolateFrame XX
    4. SettingsManager.U32Set GSExtrapolationTime XXXX
    5. SettingsManager.U32Set GSInterpolationTime XXX
    6. SettingsManager.U32Set GSPerfLogAtPlayerCount XX
    7. SettingsManager.stringSet GSPlayerName "YourNick"
    8. SettingsManager.boolSet GSShowNetGraph 0
    9. SettingsManager.boolSet GSUseObjectCache 1
    10. SettingsManager.boolSet GSUseLatencyCompensation 1
    11. SettingsManager.boolSet GSDisableShaderCache 0
    12. SettingsManager.boolSet GSQuickShaderPermutation 1
    13. SettingsManager.boolSet GSOptimizeGeomOnDemand 0
    14. SettingsManager.U32Set GSMaxValidation XX
    15. SettingsManager.U32Set GSMinValidation 0
    16. SettingsManager.boolSet GSDeffaredShaderPermutation 1
    17. SettingsManager.floatSet GSOptimizeYThreshold X.XXXXXX
    18. SettingsManager.intSet GSDefaultJitterCompensation XXX
    19. SettingsManager.boolSet GSAlternativeExtrapolation 1
    20. SettingsManager.U32Set GSPredictionTime XXX
    21. Settingsmanager.U32Set GSApproximationTime XXX
    22. SettingsManager.intSet GSMinimumInterpolationTime XX
    23. SettingsManager.intSet GSMaximumInterpolationTime XXX  

    Консольные твики

    Как я уже говорил, в консоль можно отправлять на исполнение множество разных команд, притом ими можно настолько менять геймплей, что это будут в прямом смысле читы. Например через консоль можно включить неймтаги врага на любом расстоянии, отключить туман, изменить текстуры. Все это запрещено, поэтому разработчики закрыли доступ к подобного рода командам. Однако если вам в мирных целях нужно отключить небо и покрасить его в зеленый, например для хромакея, как в этом моем интро, то вы можете разлочить консоль с помощью программы Console Unlocker

    Энтузиасты могут посмотреть все (~4000) команды поддерживаемые игрой

    Несмотря на ограничения доступа, некоторые команды в консоли Battlefield нам доступны и по сути даже полезны, вот так мы можем включить отображение FPS в игре средствами движка:
    1. Renderer.drawfps 1
    или потюнить античит игрушки (подробности см в FAQ)
    1. pb_sleep 500
    2. pb_system 1
    3. pb_SsSave 1
    4. pb_writecfg


    Автокликеры

    Данный вид ПО пользуется такой большой популярностью в BF2 в основном благодаря вертолетам, а именно TV ракетам, для управления которыми, нужно часто кликать в направлении полета. Программы этого класса исполняют одну простую функцию - имитация частых кликов ЛКМ. Есть масса готовых решений на всевозможных языках, но нас, как обычно, интересуют лучшие из них. Что касается готовых продуктов, думаю самым производительным и настраиваемым можно назвать SpeedAutoClicker





    Так для примера, на моей машине, он выдает по дефолту в среднем около 6800 - 7000 к\с


    От себя могу отметить, что версия 1.3.5 в отличии от той же 1.3.4, на моей машине бывает глючит. А если вам интересно, что это за мишень на скриншоте, то это ClickerTune - утилита для тестирования кликеров, написанная мной, по причине отсутствия адекватных аналогов. Помимо стабильности измерений, она может "обманывать" макросы, требующие запущенную BF2 для своей работы, подменяя заголовок окна, для тех же макросов, что проверяют наличие процесса, можно просто переименовать файл программы в BF2.exe


    Скачать ClickerTune






    Что же касается любимых всеми скриптов кликера на AHK, то вот оптимальная база скрипта:

    1. Process, Priority,, H
    2. #UseHook, On 
    3. #NoEnv
    4. #SingleInstance force
    5. SetMouseDelay, 0 
    6. SetKeyDelay, 0
    7.  
    8. ~LShift & LButton::
    9. loop
    10. {
    11. MouseClick, left,,, 10, D 
    12. Sleep, 1
    13. MouseClick, left,,, 10, U
    14. GetKeyState, LButtonState, LButton, P
    15. If LButtonState = U
    16. break 
    17. }
    18. Return 


    Что интересно, Battlefield позволяет "написать" кликер прямо внутри конфига управления! В этом случае вам не нужно будет использовать никаких сторонних программ, все изменения производятся в конфигурационных файлах игры.

    Конфигтвики

    Конфигтвикинг в Battlefield в основе своей сводится к модификации файлов Profiles.con и Controls.con, они находятся в директории документов пользователя в папке каждого профиля (игрового аккаунта).
    После редактирования файла необходимо поставить ему атрибут "только чтение".

    Profiles.con

    Альтернативно вы можете вписывать сюда все кастомные твики из набора игры втч и строки Usersettings.con, который может проверяться на дефолтность по контрольной сумме файла. Весь "con" синтаксис здесь будет работать. Тюнингу Punkbuster (см. выше) здесь самое место. И несмотря на то, что этот файл позволяет менять геймплей за рамками дозволенного, вы должны знать, что такая шалость может вам стоить вечного бана подсетей.
    Псевдоволхаки через TweakNearPlane, отключение/изменение текстуры неба, туман, увеличение радиуса обзора, неймтаги в любом режиме, - запрещены, попадетесь с отключенной травой, или измененным FOV, админ может забанить вас на свое усмотрение.

    Что можно:
    Привередливые пилоты могут приглушить солнце, оно перестанет слепить, при добавлении:
    1. renderer.drawSunFlare 0
    2. renderer.AmbientSun 0
    3. renderer.Glowenabled 0

    Как уже упоминалось, Usersettings настройки и Punkbuster. Визуальная антиотдача и антиразброс чуть более, чем бесполезны. Если нервы уже пошаливают, можете юзать саундтвик, - это измененный конфиг файла настроек звука игры, позволяющий слышать практически через всю карту итп, здоровым людям не рекомендуется.
    Открыть код

    А вот эти строки могут помочь от неприятного мерцания текстур (листья деревьев итп)
    1. renderer.tweakfarplane1p 10000001
    2. renderer.tweaknearplane 0.08


    Controls.con

    Чтобы прицел не разваливался в положении лежа, находим в файле эту строку:
    1. ControlMap.addKeyToTriggerMapping c_PILie IDFKeyboard IDKey_Z 0 0
    2. // меняем на
    3. ControlMap.addKeyToTriggerMapping c_PILie IDFKeyboard IDKey_Z 10000 0



    Банихоп-твик, постоянный прыжок позволяет легко забираться на горы итп, находим в файле эту строку:
    1. ControlMap.addKeyToTriggerMapping c_PIAction IDFKeyboard IDKey_Space 10000 0
    2. // меняем на
    3. ControlMap.addKeyToTriggerMapping c_PIAction IDFKeyboard IDKey_Space 0 0
    В случае установленного прыжка на вращение колеса мыши работать не будет.


    Встроенный автокликер на TV ракету.
    Находим в файле эту строку:
    1. ControlMap.addButtonToTriggerMapping c_GIOk IDFMouse IDButton_0 0 0
    2. // меняем на
    3. ControlMap.addButtonToTriggerMapping c_GIOk IDFMouse IDButton_0 0.0334 0
    0.0334 - максимально возможная скорость, увеличивайте число для замедления


    Блок настроек вертолета с пересадкой сразу в визор TV ракеты по ПКМ

    Открыть код
    Пересадка за стрелка\пилота - колесико мыши, ПКМ - сразу ТВ


    Автоспот (по одной кнопке)
    1. // Найдите эти две строки
    2. ControlMap.addButtonToTriggerMapping c_GIOk IDFMouse IDButton_0 0 0
    3. ControlMap.addKeyToTriggerMapping c_GIRadioComm IDFKeyboard IDKey_Q 0 0
    4. // И замените на эти
    5. ControlMap.addKeyToTriggerMapping c_GIOk IDFKeyboard IDKey_Q 0 0
    6. ControlMap.addButtonToTriggerMapping c_GIOk IDFMouse IDButton_0 0 1
    7. ControlMap.addKeyToTriggerMapping c_GIRadioComm IDFKeyboard IDKey_Q 0 0
    8. ControlMap.addKeyToTriggerMapping c_GIRadioComm IDFKeyboard IDKey_G 0 1
    Замените Q (auto spotting) и G (commo rose) любыми другими кнопками. Насколько это удобно сосуществует с дефолтом я не знаю, т.к. этот твик не пробовал сам, поэтому тестируйте, находите лучшие варианты и рассказывайте нам.


    Внешние твики


    Тут речь пойдет о твикерах - программах, изменяющих геймплей в "законных" рамках. Как пример подобного функционала можно привести функцию DIESoft открытия всех анлоков в одиночном режиме для ознакомления, что помогало вам определиться с выбором, когда оружие еще было закрыто.

    Не так давно, по многочисленным просьбам раздраженных игроков, я написал мини-твикер SpotSilencer, который отключает звуки всех "холостых" спотов у всех юнитов в игре, это значит, что не будет больше несносных командиров, да и в целом мощный шумовой фон игры (состоящий по большей части из не информативных ложных спотов) нивелируется и BF2 станет более комфортной. Работает софт предельно просто, - нужно запустить файл перед логином в игре. И как обычно с подобного рода программами, если не работает, значит антивирус все еще блокирует :)






    Как вы могли заметить, основная масса заготовок и макросов была выпилена из темы, дабы не создавать больше сумбура, чем есть. Если вы считаете, что что-то нужно вернуть - пишите. Если есть пожелания, аналогично. Пароль к архивам, как обычно bf2.su

  2. 34 сказали спасибо
  3. #2
    Аватар для Antieverything
    Регистрация
    23.02.2010
    Возраст
    36
    Сообщений
    8,354
    Поблагодарили 7,670 раз(а)
    Вес репутации: 100
    Смена камер вида.Рабочий макрос для X7 755

    1. <Root>
    2. <DefaultMacro>
    3. <Major></Major>
    4. <Description></Description>
    5. <Comment></Comment>
    6. <GUIOption>
    7. <RepeatType>0</RepeatType>
    8. </GUIOption>
    9. <KeyUp>
    10. <Syntax></Syntax>
    11. </KeyUp>
    12. <KeyDown>
    13. <Syntax>
    14. KeyDown 68 1
    15. Delay 40 ms
    16. KeyUp 68 1
    17. Delay 700 ms
    18. KeyDown 66 1
    19. Delay 40 ms
    20. KeyUp 66 1
    21. Delay 65 ms
    22. KeyDown 66 1
    23. Delay 40 ms
    24. KeyUp 66 1
    25. Delay 40 ms</Syntax>
    26. </KeyDown>
    27. <Software>Cameraview
    28. </Software></DefaultMacro>
    29. </Root>


    Для F12 код клавиши 69 соответственно.

  4. #3
    Аватар для Devil
    Регистрация
    14.04.2011
    Адрес
    NeverLand
    Возраст
    24
    Сообщений
    251
    Поблагодарили 222 раз(а)
    Вес репутации: 33
    Цитата Сообщение от Sushka
    а как получить название положожения хатки на джое? бф2 определяет как joy button 15, скрипт же на эту кнопку не реагирует
    я тоже думаю об этом :) пробовал через прогу ЛогитекПрофайлер писать макрос - не получается. Можно попробывать написать JoyPOVUp, либо joyPovNorth, не знаю
    Скоф, ты не знаешь как это сделать? :)
    кто не понял, обясняю на рисунке :)



    rudder имеет 8 положений, 4 основных ( лево/право/вверх/вниз)
    в настройках самой игры кнопки обозначить не проблема, но вот написание макросов - это проблема...

    В ЛогитекПрофайлере верхнее положение обозначается кнопкой N, то бишь North


    Возможно, можно взять значение из скрипта Full.ahk (всеми известного :) ), но у меня что-то все равно не выходит :(
    В общем, ждем Скофа ^^

  5. #4
    Аватар для Sushka
    Регистрация
    05.04.2010
    Адрес
    Смоленск
    Возраст
    28
    Сообщений
    303
    Поблагодарили 91 раз(а)
    Вес репутации: 40
    вообщем наковырял что-то типо этого. хатка вниз - вид fly by , хатка влево - вид спереди
    Для просмотра скрытого содержимого - нажмите сюда

    диаганальные блоки удалил, блоки вправо и вверх оставил, мб потом понадобятся
    Последний раз редактировалось Sushka; 22.07.2011 в 16:40.

  6. #5

    Регистрация
    17.04.2012
    Возраст
    92
    Сообщений
    10
    Поблагодарили 1 раз
    Вес репутации: 0
    Я лично "за" саундтвик, тока тупо потому, что Дайс, несмотря на все заверения, к 1.5 так и не пофиксили баг с невозможностью настройки громкости голосовых команд. Слушать спам от ручного споттинга коммандера не всем по кайфу, а нормальные коммандеры спамят дай Боже! Хотя этот твик, конечно, даёт очень большие преимущества начиная с избавления от эффектов оглушения и контузии, кончая возможностью слышать как стреляет артиллерия на другом конце карты и резким с*ёбом в укрытие.
    Насчёт Usersettings.con бабка надове сказала. Может рег у меня и улучшился, но всё равно проблему дырявых хитбоксов(особенно у танков), пыльных облачков, странных зон повреждения у тушки, и прочей лажи, созданной программерским гением сотрудников Дайса, правка usersetting не решила.

  7. #6

    Регистрация
    07.01.2011
    Адрес
    1
    Сообщений
    8,441
    Поблагодарили 5,098 раз(а)
    Вес репутации: 133

    может кому пригодиться, замена Track IR. Камера сканирует положение лица, не надо никаких ИК диодов. Возможно пригодиться на самолетах и вертолетах башкой вертеть. Я испробовал на автосимуляторе вроде ниего так, только все надо настраивать, мертвые зоны побольше иначе башкой крутит от малейшего движения.

  8. #7
    Аватар для Zheka17
    Регистрация
    17.09.2011
    Адрес
    Ultima Thule
    Сообщений
    2,070
    Поблагодарили 932 раз(а)
    Вес репутации: 45
    Нужен твик на прозрачный ТВ-прицел.

  9. #8
    Аватар для dovot_by
    Регистрация
    10.06.2013
    Адрес
    Belarus, Minsk
    Возраст
    24
    Сообщений
    91
    Поблагодарили 9 раз(а)
    Вес репутации: 0
    Знает кто-нибудь можно ли в ahk поставить бинд на колесо вверх или вниз? Или только по нажатию?

  10. #9
    Аватар для Antieverything
    Регистрация
    23.02.2010
    Возраст
    36
    Сообщений
    8,354
    Поблагодарили 7,670 раз(а)
    Вес репутации: 100
    1. WheelUp::
    2. Send {F1}
    3. return
    4.  
    5. WheelDown::
    6. Send {F2}
    7. return  

  11. Пользователь сказал cпасибо:
  12. #10
    Аватар для Antieverything
    Регистрация
    23.02.2010
    Возраст
    36
    Сообщений
    8,354
    Поблагодарили 7,670 раз(а)
    Вес репутации: 100
    Обновил первый пост темы, добавил пару печенекъ.

  13. 3 сказали спасибо
Ответить в теме
Страница 1 из 3
1 2 3 ‌