Jump to content
Korean Random

D2R52

User
  • Content Count

    57
  • Joined

  • Last visited

Everything posted by D2R52

  1. Короткий ответ - нет. Длинный ответ: В файле .bnk нет файлов в обычном понимании, там есть события и звуковые потоки. И те и другие хранятся без имени, хранится только номер. Когда игре надо проиграть некий звук, например звук лампы с именем "lightbulb" она вычисляет хэш от этого имени, и говорит звуковому движку вызвать событие с номером 2031596562 Движок находит событие с кодом 2031596562 и видит что у события есть действие Play с кодом 123456, которое ссылается на звуковой поток с кодом 234567, который находится в .bnk файле по смещению 987656.
  2. Оно дает замену события wwise lightbulb на мое событие Play_sonar, и таким образом проигрывается нужный звук.
  3. Если сначала вызвать оригинал, а потом свою, то банки подгруженные оригиналом насколько я понял отключаются? При этом пропадает музыка в ангаре и на тех картах, в которых она погружается через arena_defs. Поэтому я взял стандартную функцию из soundgroups и добавил туда свои банки. Т.о. они грузятся одновременно и музыка не пропадает. Можно узнать, почему это тоже фигня?
  4. Согласен, не работает... похоже вызов WWISE.WG_loadBanks() перекрывает предыдущие. В таком случае бесполезно пытаться вызвать предыдущую версию функции. Почему бы не сделать так: import WWISE from SoundGroups import SoundGroups def new_preloadSoundGroups(self, arenaName): settings = ResMgr.openSection('scripts/arena_defs/' + arenaName + '.xml/preloadSoundBanks') banks = '' if settings is not None: banks = settings.asString #TODO load from configuration banks='mysounds01.bnk;mysounds02.bnk;mysounds03.bnk;' + banks; from Account import PlayerAccount isHangar = isinstance(BigWorld.player(), PlayerAccount) if isHangar: WWISE.WG_loadBanks(self.defaultGroupList + ';' + banks, True) else: WWISE.WG_loadBanks(banks, False) import MusicController MusicController.g_musicController.init(arenaName) return SoundGroups.preloadSoundGroups = new_preloadSoundGroups
  5. import WWISE from SoundGroups import SoundGroups from gui.app_loader.loader import g_appLoader def new_preloadSoundGroups(self, arenaName): lobby = g_appLoader.getDefLobbyApp() if lobby is not None: WWISE.WG_loadBanks('CustomSounds.bnk', True) else: WWISE.WG_loadBanks('CustomSounds.bnk', False) old_preloadSoundGroups(self, arenaName) old_preloadSoundGroups = SoundGroups.preloadSoundGroups SoundGroups.preloadSoundGroups = new_preloadSoundGroups Т.е. сначала загрузить свой банк, а потом вызвать сохраненную функцию. При этом музыка не отключается.
  6. Я пытаюсь делать так (для примера замена звука лампы) import SoundGroups def newcheckAndReplace(self, event): if event == 'lightbulb': return 'Play_sonar' else: return oldcheckAndReplace(self,event) oldcheckAndReplace = SoundGroups.SoundGroups.checkAndReplace SoundGroups.SoundGroups.checkAndReplace = newcheckAndReplace #test SoundGroups.g_instance.playSound2D('lightbulb')
  7. В gui.bnk не только сирена, а лампа и много чего прочего. Там звуки в двух форматах - wwise vorbis и adpcm. gui_bnk_all_decoded.zip C eng_hetzer.pck тоже вроде проблем нет - извлекается все например quickbms.exe с скриптом borderlands2_pck.bms, декодируется ww2ogg.exe eng_hetz_ogg.zip
  8. Привет, подскажите что делаю не так Хочу подгрузить свои звуки, вызываю bank = 'CustomSounds.bnk' WWISE.WG_loadBanks(bank, False) Ничего не происходит, в логе сообщения об ошибке нет, но звуков новых тоже нет. Вариант на котором остановился # -*- coding: utf-8 -*- import WWISE import ResMgr from SoundGroups import SoundGroups from debug_utils import * def new_preloadSoundGroups(self, arenaName): settings = ResMgr.openSection('scripts/arena_defs/' + arenaName + '.xml/preloadSoundBanks') banks = '' if settings is not None: banks = settings.asString mybanks = '' mysettings = ResMgr.openSection('scripts/mod_SoundBankLoader.xml/preloadSoundBanks') if mysettings is not None: mybanks = mysettings.asString #TODO load from configuration banks=mybanks + banks; from Account import PlayerAccount isHangar = isinstance(BigWorld.player(), PlayerAccount) if isHangar: WWISE.WG_loadBanks(self.defaultGroupList + ';' + banks, True) LOG_NOTE('[SOUND]: Load banks['+self.defaultGroupList+';'+banks+']') else: WWISE.WG_loadBanks(banks, False) LOG_NOTE('[SOUND]: Load banks['+banks+']') import MusicController MusicController.g_musicController.init(arenaName) return mybanks = '' mysettings = ResMgr.openSection('scripts/mod_SoundBankLoader.xml/preloadSoundBanks') if mysettings is not None: mybanks = mysettings.asString.strip() if mybanks: SoundGroups.preloadSoundGroups = new_preloadSoundGroups BigWorld.logInfo('SoundBankLoader', 'SoundBankLoader mod by D2R52 loaded', None) else: BigWorld.logInfo('SoundBankLoader', 'SoundBankLoader mod by D2R52 not loaded - missing configuration', None)
×
×
  • Create New...