Jump to content
Korean Random
kharlashkin

[Заказ] Разделенный экран или Split screen

Recommended Posts

"Это личное видео"

Прошу прощения, не изменил настройки после редактора...

Share this post


Link to post

Short link
Share on other sites

Отыграли сегодня 3 боя с сыном, все хорошо, кроме управления камерой (стрелками) - очень плохо и не удобно. Так как на стрелки в скрипте назначены стики - было бы хорошо придумать что-то типа коэфициентов, например возьмем дополнительные стрелки на цифровой клавиатуре и запилить следующий алгоритм стрелка обычная коэфициент 0,5, стрелка на цифровом блоке коэфициент 1 и нажатые одновременно стрелки и там и там, коэфициент 2,5. Я в AHK смогу так назначить на стики отправку нажатий кнопок.

 

Подскажет кто - это реально?

Share this post


Link to post

Short link
Share on other sites
//Up

Несовсем понятно. Можно поподробнее?

 

Offtop.Кстати написал на C++ при использовании SDL библиотеки управление мышкой с джойстика =) Радость до ушей. Вот хочу, что нибудь еще написать, больше практиковаться и учить язык.

 

У меня обработка клавиша нажата или нет идет в цикле. Так вот я там сделал mouse_boost переменную-коэфициент, который увеличивается если я зажму например клавишу 6 на джойстике. Также можно попробывать и на AHK скрипте. Тоесть если нажата эта клавиша, то коэф. увеличить. И мышка движется быстрее

Вот так примерно

while(1)
   {
		Sleep(10);//Задержка, разгрузка процессора

		SDL_PollEvent(&event);

		static int mouse_boost = 0;

		if(SDL_JoystickGetButton(joy, 5))
			mouse_boost = 2;
		else
			mouse_boost = 1;

		//Ось 1. Y инвертирована
		int xAxis1 = SDL_JoystickGetAxis(joy, 0);
		int yAxis1 = -SDL_JoystickGetAxis(joy, 1);

		//Ось 2. Y инвертирована
		int xAxis2 = SDL_JoystickGetAxis(joy, 4);
		int yAxis2 = -SDL_JoystickGetAxis(joy, 2);

		//Передвижение мыши с помощью Оси 1
		float speed_coef = 0.5;//коэфициент замедления скорости
		if((xAxis1 != 0) || (yAxis1 != 0))
		{
			POINT mouseCoord;
			GetCursorPos(&mouseCoord);
			//Иверт инвертированной оси -yAxis1, т.к. экран с лев. верх. угла. (* mouse_boost) - коэф ускорения
			SetCursorPos(mouseCoord.x + (xAxis1 / (15000 * speed_coef)) * mouse_boost, mouseCoord.y + (-yAxis1 / (15000 * speed_coef)) * mouse_boost);
		}
    }

Edited by cep62rus
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Несовсем понятно. Можно поподробнее?

Дело в том что в неактивное окно нет возможности отправлять перемещения мыши, а геймпады танки не понимают.

Стрелки же для движения камеры имеют заданный коэффициент в игре, соответственно нет возможности быстрее или медленнее двигать камерой. Вот и думаю добавить отдельный обработчик в игру, например кнопка влево - коэффициент 0,5 (сейчас в игре 1), кнопка влево на цифровой клавиатуре (NumpadLeft) - коэффициент 1. нажатые одновременно (Left + NumpadLeft) - коэффициент 2,5.

 

Не могу по-быстрому найти в каком из родных скриптов я видел коэффициенты.

 

Вот что-то похожее:

'control_modes.pyc'

        elif cmdMap.isFiredList((CommandMapping.CMD_CM_CAMERA_ROTATE_LEFT,
         CommandMapping.CMD_CM_CAMERA_ROTATE_RIGHT,
         CommandMapping.CMD_CM_CAMERA_ROTATE_UP,
         CommandMapping.CMD_CM_CAMERA_ROTATE_DOWN,
         CommandMapping.CMD_CM_INCREASE_ZOOM,
         CommandMapping.CMD_CM_DECREASE_ZOOM), key):
            dx = dy = dz = 0.0
            if cmdMap.isActive(CommandMapping.CMD_CM_CAMERA_ROTATE_LEFT):
                dx = -1.0
            if cmdMap.isActive(CommandMapping.CMD_CM_CAMERA_ROTATE_RIGHT):
                dx = 1.0
            if cmdMap.isActive(CommandMapping.CMD_CM_CAMERA_ROTATE_UP):
                dy = -1.0
            if cmdMap.isActive(CommandMapping.CMD_CM_CAMERA_ROTATE_DOWN):
                dy = 1.0
            if cmdMap.isActive(CommandMapping.CMD_CM_INCREASE_ZOOM):
                dz = 1.0
            if cmdMap.isActive(CommandMapping.CMD_CM_DECREASE_ZOOM):
                dz = -1.0
            self.__cam.update(dx, dy, dz, True, True, False if dx == dy == dz == 0.0 else True)
            return True 

Edited by kharlashkin

Share this post


Link to post

Short link
Share on other sites

Как я понимаю AHK умеет отправлять сообщения окну своей функцие SendMessage. Тоесть вызывать ее из WinApi. параметры

SendMessageW(
    __in HWND hWnd,
    __in UINT Msg,
    __in WPARAM wParam,
    __in LPARAM lParam);

Вообщем надо "курить" Spy++ утилиту и формировать запрос окну с нужными параметрами. Имулировать движение мыши.

Также поискать можно Эмуляция движений мыши в неактивном окне C++ или вообще другой язык программирования. Тоесть там сводится все к вызову WinApi функции с нужными параметрами, тоесть

    __in HWND hWnd = хендл окна
    __in UINT Msg = тип сообщения(WM_MOUSEMOVE)
    __in WPARAM wParam = (не знаю, нужно капать)
    __in LPARAM lParam = (тут посмотрел при помощи Spy++ необходим парметр в котором lp = MAKELPARAM(х, у); координаты. формируется не знаю как, надо разбираться.)

 

Извиняюсь, что так резко набрасал. Пока что нашел. Самому аж интересно, сам в танчики не играю сейчас

 

 

//upd 23.04 09.06.2014

http://www.vsokovikov.narod.ru/New_MSDN_API/Mouse_input/notify_wm_nchittest.htm

http://www.vsokovikov.narod.ru/New_MSDN_API/Mouse_input/notify_wm_mousemove.htm

Edited by cep62rus

Share this post


Link to post

Short link
Share on other sites

 

 

Имулировать движение мыши.

Ну если у Вас получиться - я буду очень рад, потому как недельное гугление меня ни к чему не привело.

Share this post


Link to post

Short link
Share on other sites

Итак, тестил на Painte =D.

 

Так а курсор при выполнении скрипта где. т.е. реальная мышь? Очень-очень интересен Ваш опыт, чуть позже обязательно попробую в танки отправлять отклонения стиков как перемещения мыши в неактивное окно.

 

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

Edited by kharlashkin

Share this post


Link to post

Short link
Share on other sites

Так а курсор при выполнении скрипта где. т.е. реальная мышь? Очень-очень интересен Ваш опыт, чуть позже обязательно попробую в танки отправлять отклонения стиков как перемещения мыши в неактивное окно.

 

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

Дело в том, что сам курсор мыши не двигается (мы можем им двигать и работать в любом другом окне, а на фоне у нас скрипт будет слать просто послдовательность координат типа там мышь проходит), мышь лишь эмулируем его плавные движения, последовательно передавая окну мол вот курсор бежит, обработай сообщение. Очень красиво получилось с паинтом, особенно, если сделать задержку, будет красиво и плавно рисовать, курсор при этом даже не движется(само окно не активировано) и им можно управлять в другом окне например. Классная магия)

Edited by cep62rus

Share this post


Link to post

Short link
Share on other sites

Дело в том, что сам курсор мыши не двигается, мышь лишь эмулируем его плавные движения, последовательно передавая окну мол вот курсор бежит, обработай сообщение

Ага, так это то что надо!!! Буду пробовать, огромное спасибо Вам!!!

Share this post


Link to post

Short link
Share on other sites

"Вылюбил" себе мозг, но не могу понять почему скрипт даже не запускается:

'testmouse.ahk'

#SingleInstance
SetTimer, WatchJoystick, 10

JoyThresholdUpper := 50 + JoyThreshold
JoyThresholdLower := 50 - JoyThreshold
JoyMultiplier = 0.30
JoyThreshold = 3
InvertYAxis := false

if InvertYAxis
    YAxisMultiplier = -1
else
    YAxisMultiplier = 1

WatchJoystick:
MouseNeedsToBeMoved := false
SetFormat, float, 03
GetKeyState, joyx, 1JoyX
GetKeyState, joyy, 1JoyY
if joyx > %JoyThresholdUpper%
{
    MouseNeedsToBeMoved := true
    DeltaX := joyx - JoyThresholdUpper
}
else if joyx < %JoyThresholdLower%
{
    MouseNeedsToBeMoved := true
    DeltaX := joyx - JoyThresholdLower
}
else
    DeltaX = 0
if joyy > %JoyThresholdUpper%
{
    MouseNeedsToBeMoved := true
    DeltaY := joyy - JoyThresholdUpper
}
else if joyy < %JoyThresholdLower%
{
    MouseNeedsToBeMoved := true
    DeltaY := joyy - JoyThresholdLower
}
else
    DeltaY = 0

if MouseNeedsToBeMoved
{
MakeLong( LoWord, HiWord ) {
 return (HiWord << 16) | (LoWord & 0xffff)
}

lParam := MakeLong( DeltaX * JoyMultiplier, DeltaY * JoyMultiplier * YAxisMultiplier )
SendMessage, 0x200, 0, %lParam%,, WoT Client
}
return 

Share this post


Link to post

Short link
Share on other sites

//Ничайно удалил свой пост выше. Интернет лаганул.

Дело в том, что MakeLong должна быть отдельно функцией, не знаю как в AHK это делать, но выглядеть это дожно примерно так

 

 


//функция
MakeLong( LoWord, HiWord )
{
return (HiWord << 16) | (LoWord & 0xffff)
} 
//функция

//здесь блок, если нужно перемещать
if MouseNeedsToBeMoved
{
lParam := MakeLong( DeltaX * JoyMultiplier, DeltaY * JoyMultiplier * YAxisMultiplier ) // вызов
SendMessage, 0x200, 0, %lParam%,, WoT Client
}
return 

А ошибки выдает интерпритатор?

 

 

А также необходимо передавать координаты, тоесть получить при помощи GetCursorPos координаты мыши, прибавить к ним DeltaX, DeltaY и уже перемещать.

//offtop. Печаль, жалко ноутбук сломан, написал бы на C++ бы все, а на старом компьютере ничего не запустить

Edited by cep62rus

Share this post


Link to post

Short link
Share on other sites
А ошибки выдает интерпритатор?

В том то и дело что не выдает - тупо валится.

 

 

А также необходимо передавать координаты, тоесть получить при помощи GetCursorPos координаты мыши, прибавить к ним DeltaX, DeltaY и уже перемещать

А вот это имеет смысл, может поэтому и валится - нет начальных координат для функции.

 

P.S. Таак стоять, отредактированный скрипт перемещений стиком мыши так же валится без ошибок.

Edited by kharlashkin

Share this post


Link to post

Short link
Share on other sites

Вообще стоит пересмотреть и глянуть в сторону AutoIt 3. Просто AutoHotKey есть модификация AutoIt 2. У AutoIt есть свой редактор кода, и компилятор выдает допущеные ошибки

Share this post


Link to post

Short link
Share on other sites

Насколько мне известно что Autolt, что AHK выросли из одного проекта и имеют одинаковый функционал. Компилятор кода AHK так же выдает ошибки. На оф. форуме AHK подсказали что не так: "#Persistent", теперь скрипт не вылетает но и сообщения в окошко танков не приходят.


 

 

/del
 

Блин, а какой же хорошей шпаргалкой был пост.

Share this post


Link to post

Short link
Share on other sites

'Работа с окном'

#include <iostream>
#include <Windows.h>
#include <math.h>

using namespace std;

//MAKELONG MACRO
#define MAKELONG(a, b)      ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))

int main()
{
	setlocale(0, "russian");

	HWND hWnd = (HWND)0x000203EC;

	///Отправка на перемещение и нажатие кнопки мыши, потом запрос на отрисовку
	/*SendMessage(hWnd, WM_MOUSEMOVE, 0, MAKELONG (300, 300));
	SendMessage(hWnd, WM_LBUTTONDOWN, 0, MAKELONG (300, 300));
	SendMessage(hWnd, WM_LBUTTONUP, 0, MAKELONG (300, 300));
	SendMessage(hWnd, WM_PAINT, 0, 0);*/

	//А теперь прикол =) //рисует в паинте график cos
	int x, y;
	SendMessage(hWnd, WM_LBUTTONDOWN, 0, MAKELONG (100, 300));
	for(int i = 100; i < 500; i++)
	{
		x = i;
		y = 300 + cos((float)x/4)*70; // cos(х/a) /чем больше, тем функция в длинну растягивается
		SendMessage(hWnd, WM_MOUSEMOVE, 0, MAKELONG (x, y));
		Sleep(50);//Задержка
	}
	SendMessage(hWnd, WM_LBUTTONUP, 0, MAKELONG (x, y));
	SendMessage(hWnd, WM_PAINT, 0, 0);

	cout << "Готово!" << endl;

	system("pause");
	return 0;
}

'Работа с джоем'

#pragma comment (linker, "/ENTRY:mainCRTStartup")

#include <SDL.h>
#include <iostream>
#include <Windows.h>

#pragma comment(lib, "SDL2.lib")
#pragma comment(lib, "SDL2main.lib")
using namespace std;

#undef main
 
int main()
{
    // Переменная для нашего джойстика
    SDL_Joystick *joy;   
    SDL_Event event;
 
    // Инициализация SDL для использования джойстика, включение событий от джойстика и его открытие
    SDL_Init(SDL_INIT_JOYSTICK);
    SDL_JoystickEventState(SDL_ENABLE);
    joy = SDL_JoystickOpen(0);
 
   while(1)
   {
		Sleep(10);//Задержка, разгрузка процессора

		SDL_PollEvent(&event);

		static int mouse_boost = 0;

		if(SDL_JoystickGetButton(joy, 5))
			mouse_boost = 2;
		else
			mouse_boost = 1;

		//Значения по осям от -32768 до 32767.
		//Ось 1. Y инвертирована
		int xAxis1 = SDL_JoystickGetAxis(joy, 0);
		int yAxis1 = -SDL_JoystickGetAxis(joy, 1);

		//Передвижение мыши с помощью Оси 1
		float speed_coef = 0.5;//коэфициент замедления скорости
		if((xAxis1 != 0) || (yAxis1 != 0))
		{
			POINT mouseCoord;
			GetCursorPos(&mouseCoord);
			//Иверт инвертированной оси -yAxis1, т.к. экран с лев. верх. угла. (* mouse_boost) - коэф ускорения
			SetCursorPos(mouseCoord.x + (xAxis1 / (15000 * speed_coef)) * mouse_boost, mouseCoord.y + (-yAxis1 / (15000 * speed_coef)) * mouse_boost);
		}
    }
	return 0;
}

Edited by cep62rus
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Помогли мне со скриптом, который рисует в Paint, но блин в танки не отправляются движения мыши...

If !WinExist("ahk_class MSPaintApp")
   Run, mspaint.exe
WinWait, ahk_class MSPaintApp
WinGet, List, ControlList
Loop, parse, List, `n
   if RegExMatch(A_LoopField, "i)^Afx:[0-9A-F]+:8\d", Found)
      break

x := 10, y := 200
PostMessage, WM_LBUTTONDOWN := 0x201,, x|(y<<16), % Found
Loop 30
{
   x += A_Index
   PostMessage, WM_MOUSEMOVE := 0x200,, x|(y<<16), % Found
   Sleep, 10
}
PostMessage, WM_LBUTTONUP := 0x202,, x|(y<<16), % Found

Кнопки нажатия мыши отправляются, а вот движения нет. Может кто знает ещё какой способ?

Edited by kharlashkin

Share this post


Link to post

Short link
Share on other sites

 

 

Стрелки же для движения камеры имеют заданный коэффициент в игре, соответственно нет возможности быстрее или медленнее двигать камерой. Вот и думаю добавить отдельный обработчик в игру, например кнопка влево - коэффициент 0,5 (сейчас в игре 1), кнопка влево на цифровой клавиатуре (NumpadLeft) - коэффициент 1. нажатые одновременно (Left + NumpadLeft) - коэффициент 2,5.
 

Если не получиться с мышей - это реально сделать?


Есть в Windows функция - управление курсором с помощью цифрового блока клавиатуры, нельзя ли эту функцию запилить на python и добавить в игру? Таким образом можно попробовать реализовать 2-х ступенчатое управление курсором/камерой в игре.

Share this post


Link to post

Short link
Share on other sites

Доработал немного скрипт:

'wotsplitscreen.ahk'

#Persistent
SetTimer, WatchAxisFirstJoyMoveForward, 10
SetTimer, WatchAxisFirstJoyMoveRotate, 10
SetTimer, WatchAxisFirstJoyCameraRotateVert, 10
SetTimer, WatchAxisFirstJoyCameraRotateHoriz, 10
SetTimer, WatchAxisFirstJoyShoot, 10
SetTimer, WatchFirstJoyPOV, 10
return

;;;;;;;;;;;;

WatchAxisFirstJoyMoveForward:
GetKeyState, 1JoyY, 1JoyY
FirstJoyMoveForwardPrev = %FirstJoyMoveForward%

if 1JoyY > 70
    FirstJoyMoveForward = vk53
else if 1JoyY < 30
    FirstJoyMoveForward = vk57
else
    FirstJoyMoveForward =

if FirstJoyMoveForward = %FirstJoyMoveForwardPrev%
    return

SetKeyDelay -1
if FirstJoyMoveForward
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {%FirstJoyMoveForward% down}, WoT Client
    }
}
if FirstJoyMoveForwardPrev
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {%FirstJoyMoveForwardPrev% up}, WoT Client
    }
}
return

;;;;;;;;;;;;

WatchAxisFirstJoyMoveRotate:
GetKeyState, 1JoyX, 1JoyX
FirstJoyMoveRotatePrev = %FirstJoyMoveRotate%

if 1JoyX > 80
    FirstJoyMoveRotate = vk44
else if 1JoyX < 20
    FirstJoyMoveRotate = vk41
else
    FirstJoyMoveRotate =

if FirstJoyMoveRotate = %FirstJoyMoveRotatePrev%
    return

SetKeyDelay -1
if FirstJoyMoveRotate
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {%FirstJoyMoveRotate% down}, WoT Client
    }
}
if FirstJoyMoveRotatePrev
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {%FirstJoyMoveRotatePrev% up}, WoT Client
    }
}
return

;;;;;;;;;;;;

WatchAxisFirstJoyCameraRotateVert:
GetKeyState, 1JoyU, 1JoyU
FirstJoyCameraRotateVertPrev = %FirstJoyCameraRotateVert%

if 1JoyU > 70
    FirstJoyCameraRotateVert = Right
else if 1JoyU < 30
    FirstJoyCameraRotateVert = Left
else
    FirstJoyCameraRotateVert =

if FirstJoyCameraRotateVert = %FirstJoyCameraRotateVertPrev%
    return

SetKeyDelay -1
if FirstJoyCameraRotateVert
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {%FirstJoyCameraRotateVert% down}, WoT Client
    }
}
if FirstJoyCameraRotateVertPrev
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {%FirstJoyCameraRotateVertPrev% up}, WoT Client
    }
}
return

;;;;;;;;;;;;

WatchAxisFirstJoyCameraRotateHoriz:
GetKeyState, 1JoyR, 1JoyR
FirstJoyCameraRotateHorizPrev = %FirstJoyCameraRotateHoriz%

if 1JoyR > 70
    FirstJoyCameraRotateHoriz = Down
else if 1JoyR < 30
    FirstJoyCameraRotateHoriz = Up
else
    FirstJoyCameraRotateHoriz =

if FirstJoyCameraRotateHoriz = %FirstJoyCameraRotateHorizPrev%
    return

SetKeyDelay -1
if FirstJoyCameraRotateHoriz
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {%FirstJoyCameraRotateHoriz% down}, WoT Client
    }
}
if FirstJoyCameraRotateHorizPrev
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {%FirstJoyCameraRotateHorizPrev% up}, WoT Client
    }
}
return

;;;;;;;;;;;;

WatchAxisFirstJoyShoot:
GetKeyState, 1JoyZ, 1JoyZ
FirstJoyShootPrev = %FirstJoyShoot%

if 1JoyZ < 30
    FirstJoyShoot = vk01
else
    FirstJoyShoot =

if FirstJoyShoot = %FirstJoyShootPrev%
    return

SetKeyDelay -1
if FirstJoyShoot
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x201,,,, WoT Client
    }
}
if FirstJoyShootPrev
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x202,,,, WoT Client
    }
}
return

;;;;;;;;;;;;;

WatchFirstJoyPOV:
GetKeyState, 1JoyPOV, 1JoyPOV
FirstJoyPOVPrev = %FirstJoyPOV%

if 1JoyPOV = 0
    FirstJoyPOV = vk52
else if 1JoyPOV = 18000
    FirstJoyPOV = vk46
else if 1JoyPOV = 27000
    FirstJoyPOV = vk58
else if 1JoyPOV = 9000
    FirstJoyPOV = vk43
else FirstJoyPOV = 


if FirstJoyPOV = %FirstJoyPOVPrev%
return

SetKeyDelay -1
if FirstJoyPOV
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {%FirstJoyPOV% down}, WoT Client
    }
}
if FirstJoyPOVPrev
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {%FirstJoyPOVprev% up}, WoT Client
    }
}
return

;;;;;;;;;;;;

1Joy10::
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {vkA0 Down}, WoT Client
    KeyWait, 1Joy10
    ControlSend,, {vkA0 Up}, WoT Client
    }
}
Return

;;;;;;;;;;;;

1Joy9::
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {vk20 Down}, WoT Client
    KeyWait, 1Joy9
    ControlSend,, {vk20 Up}, WoT Client
    }
}
Return

;;;;;;;;;;;;

1Joy1::
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {vk54 Down}, WoT Client
    KeyWait, 1Joy1
    ControlSend,, {vk54 Up}, WoT Client
    }
}
Return

;;;;;;;;;;;;

1Joy3::
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {vk31 Down}, WoT Client
    KeyWait, 1Joy3
    ControlSend,, {vk31 Up}, WoT Client
    }
}
Return

;;;;;;;;;;;;

1Joy4::
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {vk32 Down}, WoT Client
    KeyWait, 1Joy4
    ControlSend,, {vk32 Up}, WoT Client
    }
}
Return

;;;;;;;;;;;;

1Joy2::
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {vk33 Down}, WoT Client
    KeyWait, 1Joy2
    ControlSend,, {vk33 Up}, WoT Client
    }
}
Return

;;;;;;;;;;;;

1Joy6::
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x204, 1,,, WoT Client
    KeyWait, 1Joy6
    SendMessage, 0x205, 1,,, WoT Client
    }
}
Return

;;;;;;;;;;;;

1Joy8::
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {vk1B Down}, WoT Client
    KeyWait, 1Joy8
    ControlSend,, {vk1B Up}, WoT Client
    }
}
Return

;;;;;;;;;;;;

1Joy7::
{
IfWinNotActive, WoT Client
    {
    SendMessage, 0x06, 1,,, WoT Client
    ControlSend,, {vk4D Down}, WoT Client
    KeyWait, 1Joy7
    ControlSend,, {vk4D Up}, WoT Client
    }
}
Return 

За основу взял управление WoT Xbox360:

fb

 

Добавил обработчик, так как если скрипт предназначенный для неактивного окна, работает в активном окне - вешается игра.

Edited by kharlashkin
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...