1

Тема: Вопрос по игре Multi Theft Auto (MTA)

Приветствую, задумка такая - при запуске скрипта, нажимаются определенные кнопки. Всё функционирует в блокноте, в других играх. В MTA никакой реакции. Запуск от имени администратора так же не дал никаких результатов. Может в настройках что-то подкрутить, или попробовать другую программу. Буду рад любым советам и предложениям. Заранее Спасибо!

2 (изменено: stealzy, 2018-10-18 09:37:05)

Re: Вопрос по игре Multi Theft Auto (MTA)

Send/ControlSend (нажатие клавиш) не работает в программе/игре
Как минимум один из этих способов сможет решить эту проблему:

1) SetKeyDelay
Некоторые игры не улавливают быстрые нажатия, которое по-умолчанию использует AHK.
В этом случае помогает увеличение длительности нажатий и промежутков между нажатиями клавиш:

SetKeyDelay 50, 100 ; увеличение длительности зажатия до 50 мс, увеличение промежутка между нажатиями до 100 мс
Send {Left}{Right}
/* Код выше аналогичен следующему:
Send {Left Down}
Sleep 50
Send {Left Up}
Sleep 100
Send {Right Down}
Sleep 50
Send {Right Up}
*/

2) Запуск скрипта от администратора
* Только для тех случаев, когда программа с которой надо взаимодействовать сама запущена от админа, иначе это не поможет!!!
Сделать это можно любым из следующих способов:
• Правой кнопкой мыши по скрипту → выбрать пункт в меню
• Код ниже, вставленный вначале скрипта, перезапустит его от админа:

if not A_IsAdmin
{
   Run *RunAs "%A_ScriptFullPath%"  ; Requires v1.0.92.01+
   ExitApp
}

Для всех скриптов:
• Заходим с C:\Program Files\Autohotkey, заходим в свойства файла autohotkey.exe → Совместимость → Запускать от имени администратора.
• Полностью отключить UAC (см. пункт 3)

3) SendMode Play
Специальный режим работы Send, если обычный не работает.
Для включения нужно вставить строку SendMode Play вначале скрипта и сделать одно из двух: (на ХР работает без доп.действий)
• UI Access
При установке AutoHotkey отметить пункт про добавление в контекстное меню запуска с UI Access.
После установки запускать скрипт правой кнопкой мыши → UI Access.
https://autohotkey.com/docs/FAQ.htm#uac

+ Ручной патч .ехе с EnableUIAccess

https://github.com/Milly/AutoHotKey-scr … Access.ahk
Чтобы тот же .exe работал и на других компах, процедуру надо повторять, либо установить на них тот же сертификат, который установился на вашем.

• Отключить UAC в ОС (не рекомендуется из соображений безопасности в ОС)
Для Win 7 — пуск → панель управления → система и безопасность.

+ Для Win 8 или 10 — чтобы полностью отключить UAC нужна правка реестра:

1. Заходим в пуск и вводим: regedit (открываем его)
2. Там есть путь к папкам, в эту строку вводим: C:\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
3. Далее в правом столбике файлов ищем: "EnableLUA" нажимаем на него и меняем значение на 0. (То-есть: с 1 меняем до 0.)
4. Перезагружаем компьютер и запускаем АХК.
Побочный эффект — не будут работать плитки, все программы будут работать от имени админа.

4) Низкоуровневая эмуляция клавиатуры и мыши с помощью драйвера
Античит игры может ловить нажатия на уровне железа и отличать искусственные нажатия от настоящих.
В этом случае поможет имитация ввода с помощью одной из специальных библиотек:
AutoHotInterception / Interception - свободная библиотека с большими возможностями.
WinRing0 - только для PS/2 интерфейса, не поддерживает USB клавы.
Class_DD - бесплатная версия требует доступ в инет в момент запуска и имеет ограничение на кол-во одновременно запущенных экземпляров.


MouseMove не работает в игре:
LLMouse - библиотека для низкоуровнего перемещения курсора = обертка над вызовом DllCall("mouse_event", ...).
Ограничения: умеет перемещает курсор только относительно текущего положения (на х вправо, на у вниз), нельзя указать конкретную координату для перемещения (1280, 500).
Также мышь можно эмулировать с помощью библиотек из пункта 4.

3 (изменено: svoboden, 2018-01-15 12:43:41)

Re: Вопрос по игре Multi Theft Auto (MTA)

Попробуй, например, так:

Send {Right Down}
Sleep 1000
Send {Right Up}
Sleep 1000

Вместо "Right" - нужная клавиша.

4

Re: Вопрос по игре Multi Theft Auto (MTA)

stealzy пишет:

Чтобы игра не смогла отличить искусственные нажатия от настоящих, необходимо использовать специальные библиотеки:
Low-level keyboard/mouse emulation:
Interception driver / library for capturing / emulation.
WinRing0 doesn't support USB keyboard.
Class_DD used to simulate keys/mouse in hardware driver level.


MouseMove не работает в игре:
LLMouse - библиотека для низкоуровнего перемещения курсора = обертка над вызовом DllCall("mouse_event", ...).
Поскольку mouse_event принимает только относительные координаты для перемещения курсора, нужно узнать:
• координаты пикселя куда перемещаем,
• координаты курсора,
• вычесть из первых вторые и передать их в mouse_event для перемещения.

Спасибо.
Проверил на AHKSpy - повороты колеса засчитываются как физические. А как можно проверить движения мыши на подобное?
И по клавишам - совсем не удалось разобраться. Скачал всё по ссылкам, даже внутрь заглянул, но понять как это всё использовать не сумел.
Помогите, пожалуйста!

5

Re: Вопрос по игре Multi Theft Auto (MTA)

В AHKSpy мышиные кнопки сделаны через горячие кнопки, а не через хук, соответственно проверка на физические сделана через GetKeyState, а он не в состоянии определять именно повороты колеса.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

6

Re: Вопрос по игре Multi Theft Auto (MTA)

То есть и тут никаких гарантий? Как же проверить?

7

Re: Вопрос по игре Multi Theft Auto (MTA)

Хочу пояснить, что я не какой-то чит для игры собираюсь писать, чтобы людям игру портить!
Просто хочу помочь своей хромающей координации. Например, для одних персонажей для подготовки атаки надо нажать "1", а для других "2". Зачастую я путаюсь, по привычке нажимаю "1" и там где нужна "2", и начинаю атаку безоружным. Что кончается предсказуемо плачевно.
Хотелось бы, чтобы автоматом в нужный момент при нажатии на "1" тут же отправлялась "2". Сам момент я научился распознавать, но боюсь, что обнаружив регулярную отсылку искусственных программных нажатий - игра меня заблокирует.  Слышал что из-за AHK-скриптов, правда другого назначения, людей уже банили.

8

Re: Вопрос по игре Multi Theft Auto (MTA)

Kurskador пишет:

То есть и тут никаких гарантий? Как же проверить?

В коллекции есть хук мыши, но если вы всю мышь эмулируете, то в AHKSpy можно посмотреть остальные кнопки мыши, а не только колёсико.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

9

Re: Вопрос по игре Multi Theft Auto (MTA)

Не смог разобраться как это работает.
Подскажите, как сделать "физическую" замену клавиши "1" на "2"?

10

Re: Вопрос по игре Multi Theft Auto (MTA)

Понятно. Сколько будет стоить заказать готовую функцию для имитации физического нажатия клавиш, кнопок мыши и движения мыши, чтобы простыми средствами AHK можно было вписывать только необходимые последовательности типа:

F1::
Send,{Numpad3}
Random,ps,10,100
Sleep,%ps%
Send,{Up}
Random,ps,10,100
Sleep,%ps%
Send,{Lshift}{Lbutton}
Return

F2::
MouseMove,100,200
Random,ps,0,25
Sleep,%ps%
Send,{Lbutton}
Return

  Ну, или в другом виде, но без отхода от самых простых операций.

11 (изменено: Malcev, 2018-07-26 02:42:52)

Re: Вопрос по игре Multi Theft Auto (MTA)

stealzy, предлагаю заменить вашу ссылку на Interception во втором посте на эту:
https://autohotkey.com/boards/viewtopic … mp;t=45307
Тут библиотека более доработанная.