Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 11, 2013 14:37:53

kharlashkin
Зарегистрирован: 2013-12-11
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи!

Доброе время суток всем форумчанам!

Итак, задался целью подключить вибрацию геймпада от Xbox 360 в одну известную игру, которая активно использует python скрипты. В игре используется функционал вибрации для своего специально спроектированного устройства. Де-компилировал код, отвечающий за вибрацию. Нашел соответствующий код, позволяющий передавать вибрацию в Xinput-совместимый геймпад.
Так как я не программист и никогда им не был, написание плагина на основе этих данных для меня большая проблема - прошу помощи у специалистов. Разумное вознаграждение гарантирую.

Офлайн

#2 Дек. 11, 2013 14:41:05

kharlashkin
Зарегистрирован: 2013-12-11
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи!

Ссылка на код, позволяющий передавать вибрацию в геймпад.
Во вложении папка скриптов из игры.

Прикреплённый файлы:
attachment uncompyle.7z (6,2 KБ)

Офлайн

#3 Дек. 13, 2013 13:37:10

kharlashkin
Зарегистрирован: 2013-12-11
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи!

Читаю Лутца “Изучаем Python”, появилось понимание кода, запустил код для геймпада.

import ctypes
# Define necessary structures
class XINPUT_VIBRATION(ctypes.Structure):
    _fields_ = [("vibration.wLeftMotorSpeed", ctypes.c_ushort),
                ("vibration.wRightMotorSpeed", ctypes.c_ushort)]
xinput = ctypes.windll.xinput1_3  # Load Xinput.dll
# Set up function argument types and return type
XInputSetState = xinput.XInputSetState
XInputSetState.argtypes = [ctypes.c_uint, ctypes.POINTER(XINPUT_VIBRATION)]
XInputSetState.restype = ctypes.c_uint
# You can also create a helper function like this:
def set_vibration(controller, left_motor, right_motor):
    vibration = XINPUT_VIBRATION(int(left_motor * 65535), int(right_motor * 65535))
    XInputSetState(controller, ctypes.byref(vibration))
# ... and use it like so
set_vibration(0, 1.0, 1.0)

Может кто-то подскажет как задавать время работы вибрации. в книге пока не дошел до этого места.

Офлайн

#4 Дек. 25, 2013 11:47:17

orondil
Зарегистрирован: 2013-12-24
Сообщения: 4
Репутация: +  1  -
Профиль   Отправить e-mail  

Прошу помощи!

import time
set_vibration(0, 0.5, 0.5)
time.sleep(5)
set_vibration(0, 0, 0)
Подробности тут:
http://stackoverflow.com/questions/20499946/xbox-360-vibrate-rumble

Офлайн

#5 Янв. 12, 2014 20:03:46

kharlashkin
Зарегистрирован: 2013-12-11
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Прошу помощи!

orondil
Это я видел, может есть более изящное решение?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version