Jump to content
Korean Random
D2R52

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

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

Share this post


Link to post

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

Share this post


Link to post

Short link
Share on other sites

 

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

 

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

 

поможете?

Edited by Kapany3uk

Share this post


Link to post

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

Share this post


Link to post

Short link
Share on other sites

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

поможете?

Исправил. Edited by ShadowHunterRUS

Share this post


Link to post

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

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

Share this post


Link to post

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 

Share this post


Link to post

Short link
Share on other sites

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

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

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

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

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

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

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

 

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

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

Share this post


Link to post

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
в чем отличие?

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

Share this post


Link to post

Short link
Share on other sites

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

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

 

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

Share this post


Link to post

Short link
Share on other sites

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

тоесть на твой звук?

Share this post


Link to post

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

Share this post


Link to post

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...