Jump to content
Korean Random

Загрузка своего sound bank (wwise .bnk)


D2R52

Recommended Posts

Привет, подскажите что делаю не так

Хочу подгрузить свои звуки, вызываю

            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)

Edited by D2R52
Link to comment
Short link
Share on other sites

http://www.koreanrandom.com/forum/topic/18955-/?p=317523

 

 

import WWISE

def new_WG_loadBanks(xmlPath, banks, isHangar):
    banks += ';CustomSounds.bnk'
    return orig_WG_loadBanks(xmlPath, banks, isHangar)

orig_WG_loadBanks = WWISE.WG_loadBanks
WWISE.WG_loadBanks = new_WG_loadBanks
Edited by ShadowHunterRUS
  • Upvote 1
Link to comment
Short link
Share on other sites

 

Вот бы еще код на замену эвентов в sound_notifications.xml (я полагаю он давно существует, только мне не известен :))

 

ps. может я чего недопонимаю, но с этим кодом слышу только звуки из подгруженного банка, все остальное отключилось :((

 

поможете?

Edited by Kapany3uk
Link to comment
Short link
Share on other sites

Вот бы еще код на замену эвентов в sound_notifications.xml (я полагаю он давно существует, только мне не известен :))

 

 

Я пытаюсь делать так (для примера замена звука лампы)

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')

Link to comment
Short link
Share on other sites

ps. может я чего недопонимаю, но с этим кодом слышу только звуки из подгруженного банка, все остальное отключилось :((

поможете?

Исправил.
Edited by ShadowHunterRUS
Link to comment
Short link
Share on other sites

 

ps. может я чего недопонимаю, но с этим кодом слышу только звуки из подгруженного банка, все остальное отключилось :((

 

поможете?

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

Т.е. сначала загрузить свой банк, а потом вызвать сохраненную функцию. При этом музыка не отключается.

Link to comment
Short link
Share on other sites

фигня

Согласен, не работает... похоже вызов 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 
Link to comment
Short link
Share on other sites

Сначала нужно оригинал вызывать, потом свою, но это тоже фигня

У меня сделано в такой же функции, но работает сейчас по другому, не так как я тогда показал

  • Upvote 1
Link to comment
Short link
Share on other sites

Сначала нужно оригинал вызывать, потом свою, но это тоже фигня

У меня сделано в такой же функции, но работает сейчас по другому, не так как я тогда показал

Если сначала вызвать оригинал, а потом свою, то банки подгруженные оригиналом насколько я понял отключаются? 

При этом пропадает музыка в ангаре и на тех картах, в которых она погружается через arena_defs.

 

Поэтому я взял стандартную функцию из soundgroups и добавил туда свои банки. Т.о. они грузятся одновременно и музыка не пропадает.

Можно узнать, почему это тоже фигня?

Link to comment
Short link
Share on other sites

Разве, у меня все ок грузит, это потому что послденяя загрузка банки перекрывает загрузку пред банок

Я сегодня свои моды обновлю вот и посмотришь

Я пытаюсь делать так (для примера замена звука лампы)

 

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')

и что оно дает?

return 'Play_sonar' Что это, а то не понял

http://www.koreanrandom.com/forum/topic/18955-/?p=317523

import WWISE
import BigWorld
#from gui.app_loader.loader import g_appLoader
from SoundGroups import SoundGroups

def _SoundGroups_preloadSoundGroups(self, arenaName):
    result = orig_preloadSoundGroups(self, arenaName)
    #lobby = g_appLoader.getDefLobbyApp()
    #if lobby is not None:
    from Account import PlayerAccount
    isHangar = isinstance(BigWorld.player(), PlayerAccount)
    if isHangar:
        WWISE.WG_loadBanks('CustomSounds.bnk', True)
    else:
        WWISE.WG_loadBanks('CustomSounds.bnk', False)
    return result

orig_preloadSoundGroups = SoundGroups.preloadSoundGroups
SoundGroups.preloadSoundGroups = _SoundGroups_preloadSoundGroups
в чем отличие?

Просто есть прикол, если загрузка банки прописана в двух модах то будет грузить только из того мода который грузится последним

Link to comment
Short link
Share on other sites

и что оно дает?

return 'Play_sonar' Что это, а то не понял

 

Оно дает замену события wwise lightbulb на мое событие Play_sonar, и таким образом проигрывается нужный звук.

Link to comment
Short link
Share on other sites

http://www.koreanrandom.com/forum/topic/18955-/?p=317523

 

import WWISE

def new_WG_loadBanks(self, banks, isHangar):
    banks += ';CustomSounds.bnk'
    return orig_WG_loadBanks(self, banks, isHangar)

orig_WG_loadBanks = WWISE.WG_loadBanks
WWISE.WG_loadBanks = new_WG_loadBanks

Дает ошибку количества аргументов в WWISE.WG_loadBanks...

 

 

UPD: да, вижу изменение кода. Попробую.

 

UPD:UPD: Спасибо, всё получилось!

Edited by Naval_Bearded_Man
Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...