1

Тема: AHK: Мышь в качестве геймпада

Доброго времени суток!
Такая проблема - в игре "Metal gear solid 2" отсутствует потдрежка мыши.Конкретнее,на кнопки мыши можно назначить какое либо действие а вот на её движение,назначить не возможно ничего...Тобишь наводить прицел в игре,комфортно либо с гейпада либо извращяться и прицеливаться - "WASD".Ввиду отсутствия геймпада и нежелания прицеливаться "WASD",хочу сделать скрипт который бы эмулировал наклон левой оси геймпада в зависимости от движения мыши.
---
В сети,нашёл допотопный скрипт который делает что то подобное...

; <COMPILER: v1.0.90.0>


Run, mgs2_sse.exe, , max

#persistent
#singleInstance force
CoordMode, Pixel, Mouse

homeX = 300
homeY = 300
fLeft = false
fRight = false
fUp = false
fDown = false
return

LButton::x
RButton::Numpad0
XButton1::f

WheelUp::
Send {b Down}
Send {b Up}
return

WheelDown::
Send {g Down}
Send {g Up}
return

PgUp::
Settimer, checkmouse, 10
return

checkmouse:
MouseGetPos, curX, curY

If (curX-homeX > 5)
{
fRight = true
Send {right Down}
Send {Numpad6 Down}
}
else if (fRight)
{
fRight = false
Send {right Up}
Send {Numpad6 Up}
}

If (curX-homeX < -5)
{
fLeft = true
Send {left Down}
Send {Numpad4 Down}
}
else if (fLeft)
{
fLeft = false
Send {left Up}
Send {Numpad4 Up}
}

If (curY-homeY > 5)
{
fDown = true
Send {down Down}
Send {Numpad5 Down}
}
else if (fDown)
{
fDown = false
Send {down Up}
Send {Numpad5 Up}
}

If (curY-homeY < -5)
{
fUp = true
Send {up Down}
Send {Numpad8 Down}
}
else if (fUp)
{
fUp = false
Send {up Up}
Send {Numpad8 Up}
}
MouseMove, %homeX%, %homeY% , 0
return

PgDn::Settimer, checkmouse, off

Esc::ExitApp

К сожалению играть с ним,сущий ад.
---
Ещё в сети нашёл,как я понял,что то вроде эмулятора действий геймпада посредствам библиотек...Но вот как им пользоваться,не приложу ума...
http://www.autohotkey.com/forum/topic52913.html

2 (изменено: Indomito, 2012-04-06 04:34:18)

Re: AHK: Мышь в качестве геймпада

По сути есть скрипт, точнее два, которые делают обратное, т.е. считывает положение оси геймпада и двигает курсор мышки.
Вот эти два скрипта - JoystickMouse.ahk и JoystickTest.ahk
Сделать обратное весьма просто, я бы написал, но занят.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

3

Re: AHK: Мышь в качестве геймпада

Не нужно писать полностью.Хватит всего лишь самой функции что наклоняет ось....
А дальше сам.

4

Re: AHK: Мышь в качестве геймпада

Кстати я тут посмотрел и не понял как послать скажем значение оси джойстика.
В справке (русской) всё ограничивается мышкой, а про оси ни слова, т.е. указатель мышки можно переместить, а вот эмуляция скажем JoyX не описана.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

5 (изменено: Gabe_#33, 2012-04-08 18:20:51)

Re: AHK: Мышь в качестве геймпада

http://www.autohotkey.com/forum/topic52913.html С помощью этого вроде как можно наклонять ось.Правда посредствам дополнительных Dllок,но всё же ничего страшного=)Там есть такая штука

PPJ_SetAxis(axis, value)
{
	DllCall("PPJoy\SetAxisPercent", "char", axis - 1, "char", value)
	DllCall("PPJoy\Update")
}

Я думаю она точно может сделать желаемое. Но пока не разобрался как пользоваться...
---
Ещё есть задумка,узнать адреса ячеек положения прицела в игре.Отслеживать положение мыши и напрямую писать значения в память.Плюсы этого способа,можно ограничиться одним лишь скриптом,в котором есть лишь пара действий - "Отследить"..."Вписать".... А минус в том что адреса этой ячейки может просто не быть,как и самой ячейки в общем.