Форум сайта python.su
Доброе время суток всем форумчанам!
Итак, задался целью подключить вибрацию геймпада от Xbox 360 в одну известную игру, которая активно использует python скрипты. В игре используется функционал вибрации для своего специально спроектированного устройства. Де-компилировал код, отвечающий за вибрацию. Нашел соответствующий код, позволяющий передавать вибрацию в Xinput-совместимый геймпад.
Так как я не программист и никогда им не был, написание плагина на основе этих данных для меня большая проблема - прошу помощи у специалистов. Разумное вознаграждение гарантирую.
Офлайн
Ссылка на код, позволяющий передавать вибрацию в геймпад.
Во вложении папка скриптов из игры.
Прикреплённый файлы: uncompyle.7z (6,2 KБ)
Офлайн
Читаю Лутца “Изучаем 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)
Офлайн
import time
set_vibration(0, 0.5, 0.5)
time.sleep(5)
set_vibration(0, 0, 0)
Офлайн
orondilЭто я видел, может есть более изящное решение?
Офлайн