1 (изменено: Plumi4, 2017-08-04 17:26:46)

Тема: [DS3] Как заставить работать AHK с данной игрой?

Здравствуйте. Написал небольшой скриптик для DS3 что бы было проще использовать местный глич. Но скрипт просто отказывается работать в игре, в текстовых редакторах работает исправно.

Чтоб было более понятно, суть глича: при использовании заклинаний+одновременном усиленном касте заклинаний+переключении на другое заклинание срабатывает гилч позволяющий например накладывать усиление на оружие которое обычным способом не возможно усилить.
В игре изменено управление:
6-использование заклинаний;
7-усиленное использование заклинаний;
8-смена слота с заклинаниями.

Скрипт:

loop
{
if GetKeyState("vk35")
{
Send, {vk36}
sleep, 50
Send, {vk37}
sleep, 50
Send, {vk38}
sleep, 50
}
}
F10::
 If not Stop
 {
 Stop := True
 Pause
 }
Return
F11::
 If Stop
 {
 Stop := False
 Pause
 }
Return

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

2

Re: [DS3] Как заставить работать AHK с данной игрой?


stop := 0
5::
cp:
if stop = 0
{
Send {vk36}
sleep 50
Send {vk37}
sleep 50
Send {vk38}
sleep 50
goto cp
}
else
{
reload
}
Return
F10::
{
stop := 1
}
Return

Не знаю, насколько это правильный скрипт, но попробуйте

3

Re: [DS3] Как заставить работать AHK с данной игрой?

Не знаю, насколько это правильный скрипт, но попробуйте

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

4

Re: [DS3] Как заставить работать AHK с данной игрой?

stealzy пишет:

SendMode Play.

Так же не помогло, при этом скрипт даже в текстовике работать перестал (при значениях Input\InputThenPlay, в текстовиках и чатах работает).

5

Re: [DS3] Как заставить работать AHK с данной игрой?

В исключения антивируса скрипт добавьте. У меня такие ситуации бывали.

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

6

Re: [DS3] Как заставить работать AHK с данной игрой?

stealzy
Без успеха, да и не думаю что дело в паузе. Такое ощущение что игра не улавливает скрипт, если в настройках управления его запустить то назначенная клавиша срабатывает, хотя в текстовиках при тестах при нажатии на 5 она не пишется, а в текст сразу заносится 6.

belyankin12
не помогло.

7

Re: [DS3] Как заставить работать AHK с данной игрой?

Note: SendPlay may have no effect at all if UAC is enabled, even if the script is running as an administrator. For more information, refer to the FAQ.

https://autohotkey.com/docs/commands/Se … PlayDetail

8 (изменено: Plumi4, 2017-08-06 13:02:40)

Re: [DS3] Как заставить работать AHK с данной игрой?

Malcev UAC выключен.

9

Re: [DS3] Как заставить работать AHK с данной игрой?

Доброго времени суток . Попробуйте так.

loop
{
if GetKeyState("vk35")
{
DllCall("keybd_event", UInt, 0x36, Int, 0, Int, 0x0001, UInt, 0, Int, 0) 

DllCall("keybd_event", UInt, 0x36, Int, 0, Int, 0x0002, UInt, 0, Int, 0)

sleep, 50

DllCall("keybd_event", UInt, 0x37, Int, 0, Int, 0x0001, UInt, 0, Int, 0) 

DllCall("keybd_event", UInt, 0x37, Int, 0, Int, 0x0002, UInt, 0, Int, 0)

sleep, 50

DllCall("keybd_event", UInt, 0x38, Int, 0, Int, 0x0001, UInt, 0, Int, 0) 

DllCall("keybd_event", UInt, 0x38, Int, 0, Int, 0x0002, UInt, 0, Int, 0)

sleep, 50
}
}
F10::
 If not Stop
 {
 Stop := True
 Pause
 }
Return
F11::
 If Stop
 {
 Stop := False
 Pause
 }
Return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

10

Re: [DS3] Как заставить работать AHK с данной игрой?

Ядрён, так же без успехов. Что странно в оверлее стима (Shift+tab в игре) если запустить чат или открыть браузер, то там скрипт срабатывает на ура. А вот непосредственно в игре работать отказывается. До AHK пытался использовать другой кликер, он был супер простой, все его функции это просто запоминания действий, он так же отказывался работать с DS3 хоть и работал в чатах и ММО играх.
Походу все же не судьба использовать простые методы, в игре уже почти приучился использовать глич без скрипта. Огромное спасибо всем тем кто откликнулся.

11

Re: [DS3] Как заставить работать AHK с данной игрой?

Попробуйте посылать на железном уровне:
https://autohotkey.com/boards/viewtopic … amp;t=9009
https://autohotkey.com/boards/viewtopic … mp;t=27007

12

Re: [DS3] Как заставить работать AHK с данной игрой?

Malcev, спасибо вам, но в этом сам я никак не разберусь.

13 (изменено: powercat, 2017-08-09 19:42:55)

Re: [DS3] Как заставить работать AHK с данной игрой?

Взял библиотеки из 2 ссылки:
https://autohotkey.com/boards/viewtopic … mp;t=27007


#Include, class_DD.ahk

loop
{
if GetKeyState("vk35")
{
DD._key_press("6")
sleep, 50
DD._key_press("7")
sleep, 50
DD._key_press("8")
sleep, 50
}
}
F10::
 If not Stop
 {
 Stop := True
 Pause
 }
Return
F11::
 If Stop
 {
 Stop := False
 Pause
 }
Return

Обычный хук не может обнаружить эмуляцию. Спасибо Malcev за приведенные выше ссылки, мне они  помогли.

14

Re: [DS3] Как заставить работать AHK с данной игрой?

Огромное спасибо Malcev за ссылки и powercat за составление. Скрипт наконец откликнулся в игре, но вот проблема, со второй библиотекой в самой игре происходит хаос. Кнопки иногда или вообще не откликаются или поздно откликаются. По разному менял задержку, пробовал эмуляцию удержания. В итоге ничего нового не добился, все тот же хаос нажатий.
Пробовал разобраться сам в 1 библиотеке, там есть функция "WinRing0.KeyCombine" как я понял она позволяет задавать комбинацию из клавиш, как раз то что нужно. Но столкнулся с проблемой что просто не могу вообще ничего сделать с этой библиотекой. При обычном запуске *.ahk файла выдает ошибку и ссылку на определенную строку в файле "Class_WinRing0.ahk":


Ensure_Admin_And_Compiled() {
		if !A_IsCompiled {
			throw, "Need to run in compiled EXE!"
		}
		if !A_IsAdmin {
			Run *RunAs "%A_ScriptFullPath%"  ; Requires v1.0.92.01+
			ExitApp
		}

Как я понял для работы необходима компиляция в *.exe, переписал скрипт для теста:

#Include, Class_WinRing0.ahk

loop
{
if GetKeyState("5")
{
WinRing0.KeyPress("6")
sleep 100
WinRing0.KeyPress("7")
sleep 100
WinRing0.KeyPress("8")
sleep 100
}
}
F10::
 If not Stop
 {
 Stop := True
 Pause
 }
Return
F11::
 If Stop
 {
 Stop := False
 Pause
 }
Return

После компиляции в *.exe и запуске, запускается AHK но походу без скрипта, т.е. ничего при нажатии клавиши 5 не происходит.

15

Re: [DS3] Как заставить работать AHK с данной игрой?

http://forum.script-coding.com/viewtopi … 78#p105878

16 (изменено: svoboden, 2017-08-20 19:59:55)

Re: [DS3] Как заставить работать AHK с данной игрой?

У самого так же, кнопки откликаются, но не всегда, думаю, надо как-то забиндить кнопку на низком уровне в этой библиотеки. Нашел такой способ: "скачиваешь это, и там есть плагин Button to Button, там определишь нажатия на 6+7+8 (у меня в играх работает).

17

Re: [DS3] Как заставить работать AHK с данной игрой?

svoboden пишет:

надо как-то забиндить кнопку на низком уровне в этой библиотеки

Зачем? У вас при активном приложении, такой код не реагирует?

f1::msgbox

18 (изменено: svoboden, 2017-08-10 14:49:34)

Re: [DS3] Как заставить работать AHK с данной игрой?

Malcev, в играх? Нет, конечно.

19

Re: [DS3] Как заставить работать AHK с данной игрой?

В каких именно?
У других же в этом подфоруме как-то работает.

20 (изменено: svoboden, 2017-08-20 20:02:35)

Re: [DS3] Как заставить работать AHK с данной игрой?

Malcev пишет:

В каких именно?

Не буду перечислять игры, в которые я играю, смеяться будете. А по вопросу, то в таких играх, как у топикстартера обычные бинды не проходят. В играх, хорошо работает GetKeyState, но после посыл клавиш на низком уровне не всегда срабатывает.
P.S. В принципе, я уже дал правильный ответ. Там только задержки надо выставить, и можно еще подключить библиотеку Class_DD в плагин Code Runner.

21

Re: [DS3] Как заставить работать AHK с данной игрой?

То есть в этой игре ни при нажатии f1 ни при нажатии f2 msgbox не появится?

f1::msgbox
$f2::msgbox

22 (изменено: svoboden, 2017-08-10 16:47:27)

Re: [DS3] Как заставить работать AHK с данной игрой?

Нет. Хотя, только что проверил, такой вариант работает: "$f2::msgbox". Но все равно плохо работает Class_DD, только если повторов 100 поставишь, то откликнется. Или это зависит от умений им пользоваться, не знаю.

23

Re: [DS3] Как заставить работать AHK с данной игрой?

svoboden пишет:

такой вариант работает: "$f2::msgbox"

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

	; Example: _key_press("F11")
	;          _key_press("Ctrl", "A")
	_key_press(sKey*) {
		arr_ddCode := []

		for i, k in sKey {
			arr_ddCode[i] := this.todc( GetKeyVK(k) )

			this.key(arr_ddCode[i], 1) ; Down
sleep 1000
		}


		for i, ddCode in arr_ddCode {
			this.key(ddCode, 2) ; Up
		}
	}

Ну и в самом коде, чтобы поток не прерывался прописать:

f1::
Critical
DD._key_press("a")
return

24

Re: [DS3] Как заставить работать AHK с данной игрой?

Никто не знает, как можно пофиксить Class_DD ? Он почему-то через какое-то время начинает ошибки лепить, так и на китайском еще. Может есть какой-то аналог? WinRing0 не устраивает так как там нет работы с мышкой ( перемещение + нажатие кнопок/колеса ).

25

Re: [DS3] Как заставить работать AHK с данной игрой?

Дело явно не в Class_DD, а в дллке.
Делайте скрины, отсылайте автору dll.

26 (изменено: svoboden, 2017-08-11 11:17:24)

Re: [DS3] Как заставить работать AHK с данной игрой?

Malcev пишет:

чтобы поток не прерывался

Так это если на одно нажатие, а если надо нажать несколько разных клавиш через class_DD, то получается никак?

27

Re: [DS3] Как заставить работать AHK с данной игрой?

У каждой горячей клавиши пропишите Critical.

28 (изменено: svoboden, 2017-08-11 13:00:54)

Re: [DS3] Как заставить работать AHK с данной игрой?

Я имею в виду, что-то типо этого:

$1::
DD._key_press("Right")
sleep, 500
DD._key_press("Right")
sleep, 500
DD._key_press("Right")
sleep, 500
return

В играх не работает.

29 (изменено: Malcev, 2017-08-11 13:08:52)

Re: [DS3] Как заставить работать AHK с данной игрой?

А почему у вас Critical не стоит?
И sleep в функцию вставляли из 25 поста?
Если да, то не знаю в чем может быть причина.
Единственный вариант - писать автору библиотеки с конкретными примерами и играми.

30 (изменено: svoboden, 2017-12-14 10:07:34)

Re: [DS3] Как заставить работать AHK с данной игрой?

В общем, все работает:

$1::
DD._key("Right", "Down") 
sleep, 800
DD._key("Right", "Up") 
sleep 800
DD._key("Right", "Down") 
sleep, 800
DD._key("Right", "Up") 
sleep 800
DD._key("Right", "Down") 
sleep, 800
DD._key("Right", "Up") 
sleep 800
return
powercat пишет:

Никто не знает, как можно пофиксить Class_DD ?

Ошибку Class_DD выдает, если нет подключения к интернету.