-
Content Count
829 -
Joined
-
Last visited
-
Days Won
7
Posts posted by kharlashkin
-
-
Скрин настроек из игры
Если у кого есть вибронакидка объясните пожалуйста, каким образом игра понимает что накидка подключена? В саму игру вставлен модуль для работы накидки или же через ПО игра отправляет сигналы в неё.
Надо ли запускать ПО, идущее в комплекте с накидкой для определения её игрой?
-
Подробно объяснять сложно. Я дал направление, может кто-то, и откликнется, кто сможет сделать.
Код вроде нашел в фале vibromanager.pyc, геймпад готов подарить человеку. кто поможет. Дополнительно могу после выполнения работы заплатить обоснованную сумму денег. Под спойлером код, может закомментируете что откуда и куда. Я начал книгу читать по Python, но пока осилил треть, возможно к концу прочтения буду лучше понимать.
def launchQuickEffect(self, effectName, count = 1, gain = 100):if not self.canWork():
return
elif count is None:
return
else:
sourceEffect = None
if effectName in self.__quickEffects:
effectsPool = self.__quickEffects[effectName]
for effect in effectsPool:
if not effect.isRunning():
effect.setRelativeGain(gain)
self.startEffect(effect, count)
return
sourceEffect = effect
if sourceEffect is None:
effectToLaunch = self.loadEffectFromFile(effectName)
self.__quickEffects[effectName] = [effectToLaunch]
else:
effectToLaunch = VibroEffect(effectName, self.__vibrationObject.cloneEffect(sourceEffect.handle), sourceEffect.getPriority(), self.__vibrationObject, sourceEffect.group)
self.__quickEffects[effectName].append(effectToLaunch)
effectToLaunch.setRelativeGain(gain)
self.startEffect(effectToLaunch, count)
return
-
Направление правильное. Тебе необходимо переопределить метод VibroManager.launchQuickEffect(), это можно сделать, написав плагин к XPM.
Чтобы это сделать, необходимо иметь девайс для тестов, так что далеко не каждый сможет тебе помочь.
Сразу прошу прощения - я не программист и для меня все темный лес. Мои навыки программирования остались на школьном уровне в Бейсике 20-летней давности.
Про какой именно девайс идет речь? Гемпадов у меня более чем достаточно, вибронакидку покупать не хочется.
В SDK вибронакидки есть очень много всего (включая исходники для тестовых программок).
Можно поподробнее что значит написать плагин к XPM?
-
Прошло два дня - расскажу, что мне удалось, может кто-то меня подтолкнет к нужным мыслям.
Полазив в папках самой WoT нашел папку с скриптами, написанными на python, которые относятся именно к вибронакидке "X:\Games\World_of_Tanks\res\scripts\client\vibroeffects"
Декомпилировав файлы из папки, показал этот код программисту. Мне сказали - что так будет удобнее получить нужный мне функционал. Не подменой dll От вибронакидки, а непосредственным вызовом вибраций из игры.
Первое, что мне надо было сделать разобраться с вибрацией геймпада из python. В интернета нашелся нужный код. Из редактора IDLE все работает - то есть запуская этот модуль, геймпад действительно начинает вибрировать в зависимости от заданной скорости моторов.SDK для вибронакидки уже вдоль и поперек излазил, но понимание общей картины не получается.
-
Показал все что было мною найдено программисту, который очень хорошо разбирается в коде. Нужен человек имеющий навыки программирования на Python. Откликнитесь кто-нибудь!
-
Вышел на разрабочиков. Пробую у них попросить добавление данного функционала или хотя бы исходников ПО для накидки с целью добавить туда нужный функционал.
-
Покопав тему глубже, нашел следующие вводные данные:
1. На сайте производителей "виброжопки" есть SDK, т.е. очень просто понять что, как и почему работает.
2. Там же есть и стандартные эффекты для WoT, открывая которые обычным тестовым редактором понятно, как именно сделаны виброэффекты.
3. На сайте Microsoft, есть описание API для работы с геймпадом от Xbox 360.
Наверное будет очень проблематично добавить поддержку геймпада в саму игру WoT - для этого придется очень много перелопатить кода WoT. По моему мнению будет проще написать программу, которая будет перехватывать команды из WoT для виброжопки и отдавать их специальные аналоги посредством XInput в геймпад.
Прошу совета у сообщества - реально это сделать?
Так же прикладываю ссылку на проект где уже есть открытый код с использованием библиотеки libusb, для контроллера Xbox 360. От себя могу подтвердить, что данная модификация работает с эмулятором xpadder и позволяет играть в WoT на геймпаде.
- 1
-
Добрый день, уважаемые форумчане!
К сожалению, заказ мода на официальном форуме игры не привел ни к чему, публикую свои "хотелки" здесь.
Существуют специальные вибронакидки для игры в WoT, которые официально поддерживаются разработчиками. Соответственно, под эти вибронакидки есть уже готовый модуль в игре для передачи обратной связи.
Можно ли исправить этот модуль, находится вроде в папке World_of_Tanks\res\scripts\client\vibroeffects, для передачи данных не в вибронакидку а в контроллер от Xbox360? В нем так же два вибромотора.
P.S. Могу на данный момент заплатить 50$ хоть завтра, если будет правильное обоснование в сторону увеличения, можно увеличить бюджет. В принципе, довольно много есть интересующихся (кто играют на геймпадах), можно поднять вопрос и скинуться сообща.
P.P.S. Есть готовый мод, который берет данные для вибраций из файлов для вибронакидки .uwv, с помощью коэффициентов преобразовывает их и передает данные для двигателей xinput геймпада. Работают смешивание (одновременное воспроизведение нескольких эффектов), нет никаких задержек (все вибрации отрабатываются вовремя), я понял почему разработчики хвалятся тем, что эффекты делал звукорежиссер (пожар только чего стоит - как биение сердца), работают "ползунки" в настройках игры для вибронакидки (можно увеличить вибрации/уменьшить/отключить), настройки для передачи вибраций в геймпад вынесены в отдельный xml файл.
Теперь по порядку:
1. Необходимо установить Python версий 2.6.х (у меня стоит 2.6.1), в принципе можно перекомпилировать файлы под любую версию.
2. Установить Flask, качаем файл distribute_setup.py в папку "C:\temp" (например), запускаем консоль "Win+R" - cmd и выполняем команды:
C:\Python26\python.exe C:\temp\distribute_setup.py
C:\Python26\python.exe C:\Python26\Scripts\easy_install-2.6-script.py Flask
C:\Python26\python.exe C:\Python26\Scripts\easy_install-2.6-script.py Jinja2
C:\Python26\python.exe C:\Python26\Scripts\easy_install-2.6-script.py Werkzeug
C:\Python26\python.exe C:\Python26\Scripts\easy_install-2.6-script.py Virtualenv
3. Распаковать мод в нужную папку.
4. Играть.
В файле GPsettings.xml уже прописаны путь к системному python "c:/python26/pythonw.exe" со скрытым запуском, коэффициенты передачи эффекта, нужная dll ( для Windows 7/Vista), для XP нужно прописать xinput1_1, для 8-ки - XInput9_1_0.- 2
[Заказ] Обратная связь или ForceFeedback
in Paid Work
Posted · Edited by kharlashkin
Получилось с помощью вышеупомянутого скрипта на python задавать не только силу но и время работы вибрации в геймпаде (добавлением time.sleep ()). Соответственно можно теперь сопоставить необходимо время работы и силу двигателей для каждого эффекта (в документе от производителей их 24).
Подскажите куда их и каким образом вставлять эти скрипты.
Я и не думал что будет просто ;) Вопрос вот в чем - каким образом игра понимает что накидка подключена? Думаю что с помощью вот этой библиотеки в папке игры uwApi.dll.
Если не взлетит переписанный скрипт vibroeffect.pyc, из-за того что BigWorld.WGVibration() не будет видеть наличие вибронакидки и не выполнять скрипты. Можно попробовать через proxy.dll подсунуть нужное значение основному объекту. Я правильно понимаю?