Jump to content
Korean Random

kharlashkin

User
  • Posts

    829
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by kharlashkin

  1. Там идей в загашниках хватит на год разработок ;) Где-то sirmax упоминал ещё динамическую мини-карту (наподобие навигатора).
  2. Ну выше sirmax поведал и новое тоже будет ;) Нужны комментарии гуру...
  3. Как бы на момент публикации наблюдал "наших" и там, и там; а что - не должны были?
  4. Вопрос решен, огромное спасибо всем участвовавшим! Отдельное огромное спасибо DrWebber!!!
  5. Сделал скрипт автозапускаемый игровым python, выход из скрипта когда закрывается окно танков. В архиве так же установочный AHK и нужная библиотека. Запуск и остановка автоактивации голосового чата клавишей "Q". Тестовый скрипт для определения фонового шума так же в архиве. Отпишитесь пожалуйста о работе скрипта кто будет пробовать. AutoVoice.7z
  6. Я не понял что там к чему, подробнее объяснили бы... Я попробовал модифицировать оригинальный скрипт, вот так в принципе, то что мне нужно: 'control_modes.py' Хотя проще и удобнее по нажатию кнопок ввести коэффициенты для dx/dy. Попробовал через коэффициенты - намного лучше, потому как работает смешивание (например средне вправо и быстро вниз или медленно вниз и быстро вправо). 'control_modes.py' Подсказал бы кто как этот код вставить вместо родного модом:)
  7. Тут дело в том, что я могу сделать как бы мод, который будет запускать этот скрипт напрямую из игры (я сейчас эмулятор для геймпада на AHK так запускаю). У Вас, я так понимаю, будет *.exe, что не есть гут для игры - я пробовал запускать экзешник из игрового питона и игра виснет. Моё мнение что если картоха добавит эту опцию в игру - олешки (или баранчики) в голосовом чате такой словесный срач разведут - мама не горюй. Язык же за зубами держать не умеют по поводу/без повода.
  8. Сам с собой проверил скрипт в тренировочной комнате, в принципе вот так очень даже неплохо: #SingleInstance, Force device := VA_GetDevice("capture") VA_IMMDevice_Activate(device, IID_IAudioClient:="{1CB9AD4C-DBFA-4c32-B178-C2F568A703B2}", 7, 0, audioClient) VA_IAudioClient_GetMixFormat(audioClient, format) VA_IAudioClient_Initialize(audioClient, 0, 0, 0, 0, format, 0) audioMeter := VA_GetAudioMeter(device) MeterLength = 30 VA_GetDevicePeriod("capture", devicePeriod) Loop { VA_IAudioMeterInformation_GetPeakValue(audioMeter, peakValue) if peakValue > 0.0075 ControlSend,, {vk51 Down}, WoT Client if peakValue < 0.0045 ControlSend,, {vk51 Up}, WoT Client Sleep, %devicePeriod% } Т.е. я указал как бы порог включения как обычно, но уровень отправки отжатия кнопки ниже, как бы для фонового шума. Получается первая мысль была правильной, второй и третий скрипт глючные. P.S. Как и в любой программе для голоса нужно говорить четко и связно, тогда работает без проблем. Откатал сегодня пяток командных боев с автоматическим голосовым чатом, жалоб не было от команды. Так что рекомендую - удобно;) Наверное нужно добавить активацию и приостановку автоматического голосового чата по кнопке ещё...
  9. Автоматическая активация голосового чата ;) http://www.koreanrandom.com/forum/topic/18132-активация-голосового-чата/

  10. Так как дома пока нет интернета, опять лежит. Пользуюсь по вечерам "сломанными" соседскими Wi-Fi, через репитер, а он по какой-то причине режет UDP-траффик и в игру зайти не могу. По логике скрипта мне кажется что он не правильный, потому как при проверке в цикле в игру постоянно отправляются сообщения что "Q" нажата но не отпущена. Надо немного поменять логику работы цикла. Вот этот скрипт логичен, но нужно проверять: #SingleInstance, Force device := VA_GetDevice("capture") VA_IMMDevice_Activate(device, IID_IAudioClient:="{1CB9AD4C-DBFA-4c32-B178-C2F568A703B2}", 7, 0, audioClient) VA_IAudioClient_GetMixFormat(audioClient, format) VA_IAudioClient_Initialize(audioClient, 0, 0, 0, 0, format, 0) audioMeter := VA_GetAudioMeter(device) MeterLength = 30 VA_GetDevicePeriod("capture", devicePeriod) Loop { VA_IAudioMeterInformation_GetPeakValue(audioMeter, peakValue) if (peakValue > 0.0055 and trig="") { Trig=1 ControlSend,, {vk51 down}, WoT Client } else if trig=1 { Trig= ControlSend,, {vk51 up}, WoT Client } Sleep, %devicePeriod% } P.S. Подсказали, что нужно сделать переключателем, изменил скрипт
  11. Позавчера ночью когда хотел зайти в командные бои, вспомнил - что у меня очень неудобно назначена кнопочка "Q" на геймпаде. Ранее когда я использовал Xpadder было удобнее. Так как в качестве эмулятора геймпада для игры в танки, я использую AutoHotkey (которая и предназначена для нажатия кнопок клавиатур по событиям), решил поискать решения нажатия кнопки активации голосового чата во взводном/командным боях. Решение нашлось, и вчера вечером был написан простенький скрипт: #SingleInstance, Force device := VA_GetDevice("capture") VA_IMMDevice_Activate(device, IID_IAudioClient:="{1CB9AD4C-DBFA-4c32-B178-C2F568A703B2}", 7, 0, audioClient) VA_IAudioClient_GetMixFormat(audioClient, format) VA_IAudioClient_Initialize(audioClient, 0, 0, 0, 0, format, 0) audioMeter := VA_GetAudioMeter(device) MeterLength = 30 VA_GetDevicePeriod("capture", devicePeriod) Loop { VA_IAudioMeterInformation_GetPeakValue(audioMeter, peakValue) if peakValue > 0.0055 ControlSend,, {vk51 Down}, WoT Client else ControlSend,, {vk51 Up}, WoT Client Sleep, %devicePeriod% } Что делает скрипт - когда вы начинаете что-то говорить в гарнитуру (я использую беспроводную от Xbox 360), AHK отправляет в игру нажатие клавиши "Q", чтобы активировать голосовой чат, когда вы прекращаете говорить (т.е. уровень сигнала в микрофоне падает), AHK отправляет отпускание клавиши "Q". Я пока не проверял в танках, нужно тестировать все. Но в блокноте буковки рисовал мне скрипт очень четко - как только я говорю так и идет строка символов. P.S. AutoHotkey нужно использовать отсюда, так же добавить библиотеку работы со звуком в папку "C:\Program Files\Autohotkey\Lib" P.P.S. Так же наверное нужно будет откорректировать эту строчку "if peakValue > 0.0055" - это уровень сигнала в микрофоне (максимальное значение = 1.0). Я делал каким образом - запускал проверочный скрипт и смотрел на уровень сигнала при обычной моей речи в микрофон. 'Проверочный скрипт'
  12. Успел до окончания боя - не-а, не работает, может у меня с игрой чего? Зато серебро, заработанное на Т1 растет ;)
  13. Я пробовал задавать нулевые значения dx = dy = 0.0, но сейчас попробую именно Ваш код :) Я вот думаю может - просто я не там копаю? Тем более этот непонятный глюк с мышью...
  14. Не-не-не, я смотрю оригинальные скрипты - которые нормально игрой кушаются. Про отступы в питоне - знаю, уже пару копей ломал...
  15. Не работает код от уважаемого DrWebber... Если честно я и не ожидал - в оригинальном скрипте как-то интересно расположены отступы...
  16. Ну так я в самом начале и написал, что довольно с меня копошения на месте с python, проще заплатить 5-10-100 $ за нужный функционал, расковырять код - чтобы примерно понимать что к чему, дабы не доставать потом создателя с обновами и пользоваться. Просто человеческое любопытство и постоянно новые советы дают толчки пробовать чего-то самому, хотя можно пойти х3 опыт посбивать вместо скриптов python :) За танки перед ТВ не садился уже дня 4-е... Хотя на постоянных пробах чего-то, на Т1 накатал 100к серебра. Я как то на подсознательном уровне догадывался, что как-то так нужно или с отступами были ошибки - сейчас попробую.
  17. Попробовал не помогло - вот код: Заметил интересный глюк - перестает работать мышь когда нажата любая клавиша.
  18. Так как в python совсем не силен, то иду методом проб и ошибок.... Примерно понимая что к чему. Код метода: 'control_modes.py' Ну Вы мне его и дали - код этот. Перепробовав много вариантов остановился пока на том что выше - потому как он ближе всего в реализации. Но отваливаются все остальные клавиши - кроме мыши. ХЗ почему. Попробую вставить этот код напрямую в оригинальные скрипты - посмотрим.
  19. Спасибо, конечно, но или я не понял что к чему или ошибка - потому как не сработало...
  20. Всю голову сломал уже, вот код: import BigWorld, Keys from AvatarInputHandler.control_modes import ArcadeControlMode from debug_utils import * orig_handleKeyEvent = ArcadeControlMode.handleKeyEvent def mod_handleKeyEvent(self, isDown, key, mods, event = None): orig_handleKeyEvent(self, isDown, key, mods, event = None) dx = dy = 0.0 if BigWorld.isKeyDown(Keys.KEY_NUMPAD4): dx = -4.0 if BigWorld.isKeyDown(Keys.KEY_NUMPAD6): dx = 4.0 if BigWorld.isKeyDown(Keys.KEY_NUMPAD8): dy = -4.0 if BigWorld.isKeyDown(Keys.KEY_NUMPAD2): dy = 4.0 self._ArcadeControlMode__cam.update(dx, dy, 0, True, True, False if dx == dy == 0.0 else True) return True if BigWorld.isKeyUp(Keys.KEY_NUMPAD4): dx = 0.0 if BigWorld.isKeyUp(Keys.KEY_NUMPAD6): dx = 0.0 if BigWorld.isKeyUp(Keys.KEY_NUMPAD8): dy = 0.0 if BigWorld.isKeyUp(Keys.KEY_NUMPAD2): dy = 0.0 self._ArcadeControlMode__cam.update(dx, dy, 0, True, True, False if dx == dy == 0.0 else True) return True ArcadeControlMode.handleKeyEvent = mod_handleKeyEvent Ошибок не сыпет, но никакие клавиши в бою не работают вообще кроме этих нумпадов...
  21. Ну логично, что нажатия отслеживает BigWorld. Надо порыскать - может есть BigWorld.isKeyUp(keyCode)...
  22. Попробовал if BigWorld.isKeyDown(Keys.KEY_NUMPAD4) - так лучше работает, все сразу, но как сказать что клавиша отпущена?
  23. Просидел пол-ночи сегодня, что-от наваял - но кнопки делают как надо, но в аркадном режиме больше никакие не работают вообще. from AvatarInputHandler.control_modes import ArcadeControlMode import Keys from debug_utils import * orig_handleKeyEvent = ArcadeControlMode.handleKeyEvent def mod_handleKeyEvent(self, isDown, key, mods, event = None): orig_handleKeyEvent(self, isDown, key, mods, event = None) if isDown: dx = dy = dz = 0.0 if key == Keys.KEY_NUMPAD4: dx = -4.0 if key == Keys.KEY_NUMPAD6: dx = 4.0 if key == Keys.KEY_NUMPAD8: dy = -4.0 if key == Keys.KEY_NUMPAD2: dy = 4.0 self._ArcadeControlMode__cam.update(dx, dy, dz, True, True, False if dx == dy == dz == 0.0 else True) return True elif key == Keys.KEY_NUMPAD4 or Keys.KEY_NUMPAD6 or Keys.KEY_NUMPAD8 or Keys.KEY_NUMPAD2: self._ArcadeControlMode__cam.update(0, 0, 0, False) return True return False ArcadeControlMode.handleKeyEvent = mod_handleKeyEvent Ткните носом где посмотреть что-то...
×
×
  • Create New...