Chaos Project

RPG Maker => RPG Maker Scripts => Script Requests => Topic started by: DuongCool on July 08, 2012, 12:53:32 pm

Title: Help me for a ".dll" files of the Script "BGM continues after Battle"
Post by: DuongCool on July 08, 2012, 12:53:32 pm
In the default of RMXP, after a battle, the Map BGM will be re-played :( that's bad!
And this is an useful Script to make BGM can continue playing after battle of RMXP
But it needs a file called "Audio.dll", but I can't find out it
So someone know that file, please help me :(
Here is the Script :

#==============================================================================
# Não reinciar Música do mapa após uma batalha
# por Atoa
# Novo modulo de Audio por Poccil
#==============================================================================

class Win32API
@@RGSSWINDOW=nil
@@GetCurrentThreadId=Win32API.new('kernel32','GetCurrentThreadId', '%w()','l')
@@GetWindowThreadProcessId=Win32API.new('user32','GetWindowThreadProcessId', '%w(l p)','l')
@@FindWindowEx=Win32API.new('user32','FindWindowEx', '%w(l l p p)','l')
def Win32API.GetPrivateProfileString(section, key)
  val = "\0"*256
  gps = Win32API.new('kernel32', 'GetPrivateProfileString',%w(p p p p l p), 'l')
  gps.call(section, key, "", val, 256, ".\\Game.ini")
  val.delete!("\0")
  return val
end
end

class Thread
 def Thread.exclusive
   _old = Thread.critical
   begin
     Thread.critical = true
     return yield
   ensure
     Thread.critical = _old
   end
 end
end

class AudioContext
 attr_reader :context
 def initialize
   init = Win32API.new("audio.dll", "AudioContextInitialize", '', 'l')
   @context=init.call()
 end
 def dispose
   if @context!=0
      init = Win32API.new("audio.dll", "AudioContextFree", 'l', '')
      init.call(context)
      @context=0
   end
 end
end

$AtExitProcs=[] if !$AtExitProcs
def exit(code=0)
 for p in $AtExitProcs
   p.call
 end
 raise SystemExit.new(code)
end

def at_exit(&block)
 $AtExitProcs.push(Proc.new(&block))
end

module AudioState
 w32_LL = Win32API.new("kernel32.dll", "LoadLibrary", 'p', 'l')
 w32_FL = Win32API.new("kernel32.dll", "FreeLibrary", 'p', 'l')
 @handle = w32_LL.call("audio.dll")
 at_exit { w32_FL.call(@handle) }
 AudioContextIsActive=Win32API.new("audio.dll","AudioContextIsActive","l","l")
 AudioContextPlay=Win32API.new("audio.dll","AudioContextPlay","lpllll","")
 AudioContextStop=Win32API.new("audio.dll","AudioContextStop","l","")
 AudioContextFadeOut=Win32API.new("audio.dll","AudioContextFadeOut","ll","")
 AudioContextGetPosition=Win32API.new("audio.dll","AudioContextGetPosition","l","l")
 AudioContextFadeIn=Win32API.new("audio.dll","AudioContextFadeIn","ll","")
 AudioContextSetVolume=Win32API.new("audio.dll","AudioContextSetVolume","ll","")
 AudioContextSEPlay=Win32API.new("audio.dll","AudioContextSEPlay","lplll","")
 if !@MEContext
   @MEContext=AudioContext.new
   at_exit { @MEContext.dispose }
 end
 if !@BGMContext
   @BGMContext=AudioContext.new
   at_exit { @BGMContext.dispose }
 end
 if !@SEContext
   @SEContext=AudioContext.new
   at_exit { @SEContext.dispose }
 end
 @channel=nil
 @bgm=nil
 @name=""
 @pitch=100
 @bgmVolume=100.0
 @meVolume=100.0
 @seVolume=100.0
 def self.setWaitingBGM(bgm,volume,pitch,position)
   @waitingBGM=[bgm,volume,pitch,position]
 end
 def self.bgmActive?
   return (AudioContextIsActive.call(@BGMContext.context)!=0)
 end
 def self.meActive?
   return (AudioContextIsActive.call(@MEContext.context)!=0)
 end
 def self.waitingBGM
   @waitingBGM
 end
 def self.context
   @BGMContext.context
 end
 def self.system
   @system
 end
 def self.bgm
   @bgm
 end
 def self.name
   @name
 end
 def self.pitch
   @pitch
 end
 def self.volume
   @volume
 end
 def self.waitingBGM=(value)
   Thread.exclusive{@waitingBGM=value}
 end
 def self.volume=(value)
   @volume=value
 end
 def self.bgm=(value)
   @bgm=value
 end
 def self.name=(value)
   @name=value
 end
 def self.pitch=(value)
   @pitch=value
 end
end

def Audio_bgm_playing?
 AudioState.channel!=nil
end
def Audio_bgm_name
 AudioState.name
end
def Audio_bgm_pitch
 AudioState.pitch
end
def Audio_bgm_play(name, volume, pitch, position = 0)
 begin
   filename = canonicalize(rtpGetPath(name,[".mid",".mp3",".wma",".ogg",".wav",""]))
   if AudioState.meActive?
     AudioState.setWaitingBGM(filename,volume,pitch,position)
     return
   end
   AudioState::AudioContextPlay.call(AudioState.context,filename,volume,pitch,position,1)
   AudioState.name=filename
   AudioState.volume=volume
   AudioState.pitch=pitch
 rescue Hangup
 rescue
   p $!.message,$!.backtrace
 end
end
def Audio_bgm_stop()
 begin
   AudioState::AudioContextStop.call(AudioState.context)
   AudioState.waitingBGM=nil
   AudioState.name = ""
 rescue
   p $!.message,$!.backtrace
 end
end
def Audio_bgm_get_position
 return AudioState::AudioContextGetPosition.call(AudioState.context)
end
def Audio_bgm_fade(ms)
 AudioState::AudioContextFadeOut.call(AudioState.context,ms.to_i)
end
def Audio_bgm_fadein(ms)
 AudioState::AudioContextFadeIn.call(AudioState.context,ms.to_i)
end
def Audio_bgm_get_volume
 return 0 if !AudioState.bgmActive?
 return AudioState.volume
end
def Audio_bgm_set_volume(volume)
 return if !AudioState.bgmActive?
 AudioState.volume = volume * 1.0
 AudioState::AudioContextSetVolume.call(AudioState.context,volume.to_i)
end

module Graphics
 if !defined?(audiomodule_update)
   class << self
     alias audiomodule_update update
   end
 end
 def self.update
   Audio.update
   audiomodule_update
 end
end

module Audio
 @@musicstate=nil
 @@soundstate=nil
 def self.update
   return if Graphics.frame_count%10!=0
   if AudioState.waitingBGM && !AudioState.meActive?
     waitbgm=AudioState.waitingBGM
     AudioState.waitingBGM=nil
     bgm_play(waitbgm[0],waitbgm[1],waitbgm[2],waitbgm[3])
   end
 end
 def self.bgm_play(name,volume=80,pitch=100,position=nil)
   begin
     if position==nil || position==0
       Kernel.Audio_bgm_play(name,volume,pitch,0)
     else
       Kernel.Audio_bgm_play(name,volume,pitch,position)
       Kernel.Audio_bgm_fadein(500)
     end
   rescue Hangup
     bgm_play(name,volume,pitch,position)
   end
 end
 def self.bgm_fade(ms)
   Kernel.Audio_bgm_fade(ms)
 end
 def self.bgm_stop
   Kernel.Audio_bgm_stop()
 end
 def self.bgm_position
   ret=Kernel.Audio_bgm_get_position
   return ret
 end
end

module Win32
 class Registry
   module Constants
     HKEY_CLASSES_ROOT = 0x80000000
     HKEY_CURRENT_USER = 0x80000001
     HKEY_LOCAL_MACHINE = 0x80000002
     HKEY_USERS = 0x80000003
     HKEY_PERFORMANCE_DATA = 0x80000004
     HKEY_PERFORMANCE_TEXT = 0x80000050
     HKEY_PERFORMANCE_NLSTEXT = 0x80000060
     HKEY_CURRENT_CONFIG = 0x80000005
     HKEY_DYN_DATA = 0x80000006
     REG_NONE = 0
     REG_SZ = 1
     REG_EXPAND_SZ = 2
     REG_BINARY = 3
     REG_DWORD = 4
     REG_DWORD_LITTLE_ENDIAN = 4
     REG_DWORD_BIG_ENDIAN = 5
     REG_LINK = 6
     REG_MULTI_SZ = 7
     REG_RESOURCE_LIST = 8
     REG_FULL_RESOURCE_DESCRIPTOR = 9
     REG_RESOURCE_REQUIREMENTS_LIST = 10
     REG_QWORD = 11
     REG_QWORD_LITTLE_ENDIAN = 11
     STANDARD_RIGHTS_READ = 0x00020000
     STANDARD_RIGHTS_WRITE = 0x00020000
     KEY_QUERY_VALUE = 0x0001
     KEY_SET_VALUE = 0x0002
     KEY_CREATE_SUB_KEY = 0x0004
     KEY_ENUMERATE_SUB_KEYS = 0x0008
     KEY_NOTIFY = 0x0010
     KEY_CREATE_LINK = 0x0020
     KEY_READ = STANDARD_RIGHTS_READ |
       KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY
     KEY_WRITE = STANDARD_RIGHTS_WRITE |
       KEY_SET_VALUE | KEY_CREATE_SUB_KEY
     KEY_EXECUTE = KEY_READ
     KEY_ALL_ACCESS = KEY_READ | KEY_WRITE | KEY_CREATE_LINK
     REG_OPTION_RESERVED = 0x0000
     REG_OPTION_NON_VOLATILE = 0x0000
     REG_OPTION_VOLATILE = 0x0001
     REG_OPTION_CREATE_LINK = 0x0002
     REG_OPTION_BACKUP_RESTORE = 0x0004
     REG_OPTION_OPEN_LINK = 0x0008
     REG_LEGAL_OPTION = REG_OPTION_RESERVED |
       REG_OPTION_NON_VOLATILE | REG_OPTION_CREATE_LINK |
       REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK
     REG_CREATED_NEW_KEY = 1
     REG_OPENED_EXISTING_KEY = 2
     REG_WHOLE_HIVE_VOLATILE = 0x0001
     REG_REFRESH_HIVE = 0x0002
     REG_NO_LAZY_FLUSH = 0x0004
     REG_FORCE_RESTORE = 0x0008
     MAX_KEY_LENGTH = 514
     MAX_VALUE_LENGTH = 32768
   end
   include Constants
   include Enumerable
   class Error < ::StandardError
     FormatMessageA=Win32API.new('kernel32.dll','FormatMessageA','LPLLPLP','L')
     def initialize(code)
       @code = code
       msg = "\0" * 1024
       len = FormatMessageA.call(0x1200, 0, code, 0, msg, 1024, 0)
       super msg[0, len].tr("\r", '').chomp
     end
     attr_reader :code
   end
   class PredefinedKey < Registry
     def initialize(hkey, keyname)
       @hkey = hkey
       @parent = nil
       @keyname = keyname
       @disposition = REG_OPENED_EXISTING_KEY
     end
     def close
       raise Error.new(5)
     end
     def class
       Registry
     end
     Constants.constants.grep(/^HKEY_/) do |c|
       Registry.const_set c, new(Constants.const_get(c), c)
     end
   end
   module API
     [
       %w/RegOpenKeyExA    LPLLP        L/,
       %w/RegCreateKeyExA  LPLLLLPPP    L/,
       %w/RegEnumValueA    LLPPPPPP     L/,
       %w/RegEnumKeyExA    LLPPLLLP     L/,
       %w/RegQueryValueExA LPLPPP       L/,
       %w/RegSetValueExA   LPLLPL       L/,
       %w/RegFlushKey      L            L/,
       %w/RegCloseKey      L            L/,
       %w/RegQueryInfoKey  LPPPPPPPPPPP L/,
     ].each do |fn|
       const_set fn[0].intern, Win32API.new('advapi32.dll', *fn)
     end
     module_function
     def check(result)
       raise Error, result, caller(2) if result != 0
     end
     def packdw(dw)
       [dw].pack('V')
     end
     def unpackdw(dw)
       dw += [0].pack('V')
       dw.unpack('V')[0]
     end
     def packqw(qw)
       [ qw & 0xFFFFFFFF, qw >> 32 ].pack('VV')
     end
     def unpackqw(qw)
       qw = qw.unpack('VV')
       (qw[1] << 32) | qw[0]
     end
     def OpenKey(hkey, name, opt, desired)
       result = packdw(0)
       check RegOpenKeyExA.call(hkey, name, opt, desired, result)
       unpackdw(result)
     end
     def CreateKey(hkey, name, opt, desired)
       result = packdw(0)
       disp = packdw(0)
       check RegCreateKeyExA.call(hkey, name, 0, 0, opt, desired,
                                  0, result, disp)
       [ unpackdw(result), unpackdw(disp) ]
     end
     def EnumValue(hkey, index)
       name = ' ' * Constants::MAX_KEY_LENGTH
       size = packdw(Constants::MAX_KEY_LENGTH)
       check RegEnumValueA.call(hkey, index, name, size, 0, 0, 0, 0)
       name[0, unpackdw(size)]
     end
     def EnumKey(hkey, index)
       name = ' ' * Constants::MAX_KEY_LENGTH
       size = packdw(Constants::MAX_KEY_LENGTH)
       wtime = ' ' * 8
       check RegEnumKeyExA.call(hkey, index, name, size, 0, 0, 0, wtime)
       [ name[0, unpackdw(size)], unpackqw(wtime) ]
     end
     def QueryValue(hkey, name)
       type = packdw(0)
       size = packdw(0)
       check RegQueryValueExA.call(hkey, name, 0, type, 0, size)
       data = ' ' * unpackdw(size)
       check RegQueryValueExA.call(hkey, name, 0, type, data, size)
       [ unpackdw(type), data[0, unpackdw(size)] ]
     end
     def SetValue(hkey, name, type, data, size)
       check RegSetValueExA.call(hkey, name, 0, type, data, size)
     end
     def FlushKey(hkey)
       check RegFlushKey.call(hkey)
     end
     def CloseKey(hkey)
       check RegCloseKey.call(hkey)
     end
     def QueryInfoKey(hkey)
       subkeys = packdw(0)
       maxsubkeylen = packdw(0)
       values = packdw(0)
       maxvaluenamelen = packdw(0)
       maxvaluelen = packdw(0)
       secdescs = packdw(0)
       wtime = ' ' * 8
       check RegQueryInfoKey.call(hkey, 0, 0, 0, subkeys, maxsubkeylen, 0,
         values, maxvaluenamelen, maxvaluelen, secdescs, wtime)
       [ unpackdw(subkeys), unpackdw(maxsubkeylen), unpackdw(values),
         unpackdw(maxvaluenamelen), unpackdw(maxvaluelen),
         unpackdw(secdescs), unpackqw(wtime) ]
     end
   end
   def self.expand_environ(str)
     str.gsub(/%([^%]+)%/) { ENV[$1] || $& }
   end
   @@type2name = { }
   %w[
     REG_NONE REG_SZ REG_EXPAND_SZ REG_BINARY REG_DWORD
     REG_DWORD_BIG_ENDIAN REG_LINK REG_MULTI_SZ
     REG_RESOURCE_LIST REG_FULL_RESOURCE_DESCRIPTOR
     REG_RESOURCE_REQUIREMENTS_LIST REG_QWORD
   ].each do |type|
     @@type2name[Constants.const_get(type)] = type
   end
   def self.type2name(type)
     @@type2name[type] || type.to_s
   end
   def self.wtime2time(wtime)
     Time.at((wtime - 116444736000000000) / 10000000)
   end
   def self.time2wtime(time)
     time.to_i * 10000000 + 116444736000000000
   end
   private_class_method :new
   def self.open(hkey, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED)
     subkey = subkey.chomp('\\')
     begin
       newkey = API.OpenKey(hkey.hkey, subkey, opt, desired)
     rescue Error
       return nil
     end
     obj = new(newkey, hkey, subkey, REG_OPENED_EXISTING_KEY)
     if block_given?
       begin
         yield obj
       ensure
         obj.close
       end
     else
       obj
     end
   end
   def self.create(hkey, subkey, desired = KEY_ALL_ACCESS, opt = 0x0000)
     newkey, disp = API.CreateKey(hkey.hkey, subkey, opt, desired)
     obj = new(newkey, hkey, subkey, disp)
     if block_given?
       begin
         yield obj
       ensure
         obj.close
       end
     else
       obj
     end
   end
   @@final = proc { |hkey| proc { API.CloseKey(hkey[0]) if hkey[0] } }
   def initialize(hkey, parent, keyname, disposition)
     @hkey = hkey
     @parent = parent
     @keyname = keyname
     @disposition = disposition
     @hkeyfinal = [ hkey ]
     ObjectSpace.define_finalizer self, @@final.call(@hkeyfinal)
   end
   attr_reader :hkey, :parent, :keyname, :disposition
   def created?
     @disposition == REG_CREATED_NEW_KEY
   end
   def open?
     !@hkey.nil?
   end
   def name
     parent = self
     name = @keyname
     while parent = parent.parent
       name = parent.keyname + '\\' + name
     end
     name
   end
   def inspect
     "\#<Win32::Registry key=#{name.inspect}>"
   end
   def _dump(depth)
     raise TypeError, "can't dump Win32::Registry"
   end
   def open(subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED, &blk)
     self.class.open(self, subkey, desired, opt, &blk)
   end
   def create(subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED, &blk)
     self.class.create(self, subkey, desired, opt, &blk)
   end
   def close
     API.CloseKey(@hkey)
     @hkey = @parent = @keyname = nil
     @hkeyfinal[0] = nil
   end
   def each_value
     index = 0
     while true
       begin
         subkey = API.EnumValue(@hkey, index)
       rescue Error
         break
       end
       begin
         type, data = read(subkey)
       rescue Error
         next
       end
       yield subkey, type, data
       index += 1
     end
     index
   end
   alias each each_value
   def each_key
     index = 0
     while true
       begin
         subkey, wtime = API.EnumKey(@hkey, index)
       rescue Error
         break
       end
       yield subkey, wtime
       index += 1
     end
     index
   end
   def keys
     keys_ary = []
     each_key { |key,| keys_ary << key }
     keys_ary
   end
   def read(name, *rtype)
     type, data = API.QueryValue(@hkey, name)
     unless rtype.empty? or rtype.include?(type)
       string = "Type mismatch (expect #{rtype.inspect} but #{type} present)"
       raise TypeError, string
     end
     case type
     when REG_SZ, REG_EXPAND_SZ
       [ type, data.chop ]
     when REG_MULTI_SZ
       [ type, data.split(/\0/) ]
     when REG_BINARY
       [ type, data ]
     when REG_DWORD
       [ type, API.unpackdw(data) ]
     when REG_DWORD_BIG_ENDIAN
       [ type, data.unpack('N')[0] ]
     when REG_QWORD
       [ type, API.unpackqw(data) ]
     else
       raise TypeError, "Type #{type} is not supported."
     end
   end
   def [](name, *rtype)
     type, data = read(name, *rtype)
     case type
     when REG_SZ, REG_DWORD, REG_QWORD, REG_MULTI_SZ
       data
     when REG_EXPAND_SZ
       Registry.expand_environ(data)
     else
       raise TypeError, "Type #{type} is not supported."
     end
   end
   def read_s(name)
     read(name, REG_SZ)[1]
   end
   def read_s_expand(name)
     type, data = read(name, REG_SZ, REG_EXPAND_SZ)
     if type == REG_EXPAND_SZ
       Registry.expand_environ(data)
     else
       data
     end
   end
   def read_i(name)
     read(name, REG_DWORD, REG_DWORD_BIG_ENDIAN, REG_QWORD)[1]
   end
   def read_bin(name)
     read(name, REG_BINARY)[1]
   end
   def write(name, type, data)
     case type
     when REG_SZ, REG_EXPAND_SZ
       data = data.to_s + "\0"
     when REG_MULTI_SZ
       data = data.to_a.join("\0") + "\0\0"
     when REG_BINARY
       data = data.to_s
     when REG_DWORD
       data = API.packdw(data.to_i)
     when REG_DWORD_BIG_ENDIAN
       data = [data.to_i].pack('N')
     when REG_QWORD
       data = API.packqw(data.to_i)
     else
       raise TypeError, "Unsupported type #{type}"
     end
     API.SetValue(@hkey, name, type, data, data.length)
   end
   def []=(name, rtype, value = nil)
     if value
       write name, rtype, value
     else
       case value = rtype
       when Integer
         write name, REG_DWORD, value
       when String
         write name, REG_SZ, value
       when Array
         write name, REG_MULTI_SZ, value
       else
         raise TypeError, "Unexpected type #{value.class}"
       end
     end
     value
   end
   def write_s(name, value)
     write name, REG_SZ, value.to_s
   end
   def write_i(name, value)
     write name, REG_DWORD, value.to_i
   end
   def write_bin(name, value)
     write name, REG_BINARY, value.to_s
   end
   def flush
     API.FlushKey @hkey
   end
   def info
     API.QueryInfoKey(@hkey)
   end
   %w[
     num_keys max_key_length
     num_values max_value_name_length max_value_length
     descriptor_length wtime
   ].each_with_index do |s, i|
     eval <<-__END__
       def #{s}
         info[#{i}]
       end
     __END__
   end
 end
end

def getExistingPath(file,extensions=[])
 return file if FileTest.exist?(file)
 if extensions
   for ext in extensions
     fullfile=file+ext
     return fullfile if FileTest.exist?(fullfile)
   end
 end
 return nil
end

def rtpGetDirectory(key,rtpname)
 rtp=Win32API.GetPrivateProfileString("Game",rtpname)
 return nil if !rtp || rtp==""
 begin
   path=key.read_s(rtp)
   if path && path!=""
     return path
   end
   return nil
 rescue
   return nil
 end
end

def rtpGetPathHelper(key,rtpname,file,extensions)
 path=rtpGetDirectory(key,rtpname)
 return path ? getExistingPath(path+"\\"+file,extensions) : nil
end

def chdirRTP(rtpname)
 Win32::Registry.open(
 Win32::Registry::HKEY_LOCAL_MACHINE,"SOFTWARE\\Enterbrain\\RGSS\\RTP"){|key|
 path=rtpGetDirectory(key,rtpname)
 if path && path!=""
   if block_given?
     Dir.chdir(path){ yield }
   else
     Dir.chdir(path)
   end
 end
 }
end

def rtpGetPath(file,extensions=[])
 path=getExistingPath(file,extensions)
 if !path
   Win32::Registry.open(
   Win32::Registry::HKEY_LOCAL_MACHINE,"SOFTWARE\\Enterbrain\\RGSS\\RTP"){|key|
   path=rtpGetPathHelper(key,"RTP1",file,extensions)
   path=rtpGetPathHelper(key,"RTP2",file,extensions) if !path
   path=rtpGetPathHelper(key,"RTP3",file,extensions) if !path  }
 end
 return path
end


def getPlayMusic
 begin
   ret=true
   Win32::Registry.open(
   Win32::Registry::HKEY_CURRENT_USER,"SOFTWARE\\Enterbrain\\RGSS"){|key|
   ret=(key["PlayMusic"] == 1)}
   return ret
 rescue
   return true
 end
end

def getPlaySound
 begin
   ret=true
   Win32::Registry.open(
   Win32::Registry::HKEY_CURRENT_USER,"SOFTWARE\\Enterbrain\\RGSS"){|key|
   ret=(key["PlaySound"] == 1)}
   return ret
 rescue
   p $!.message,$!.class.name
   return true
 end
end

module FileTest
 Image_ext = ['.bmp', '.png', '.jpg', '.jpeg']
 Audio_ext = ['.mp3', '.mid', '.midi', '.ogg', '.wav', '.wma']
 def self.audio_exist?(filename)
   return !rtpGetPath(filename,Audio_ext).nil?
 end
 def self.image_exist?(filename)
   return !rtpGetPath(filename,Image_ext).nil?
 end
end

class Hangup < Exception
end

def strsplit(str,re)
 ret=[]
 tstr=str
 while re=~tstr
   ret[ret.length]=$~.pre_match
   tstr=$~.post_match
 end
 ret[ret.length]=tstr if ret.length
 return ret
end

def canonicalize(c)
 csplit=strsplit(c,/[\/\\]/)
 pos=-1
 ret=[]
 retstr=""
 for x in csplit
   if x=="."
   elsif x==".."
     if pos>=0
       ret.delete_at(pos)
       pos-=1
     end
   else
     ret.push(x)
     pos+=1
   end
 end
 for i in 0...ret.length
   retstr+="/" if i>0
   retstr+=ret[i]
 end
 return retstr
end

class Game_System
 attr_accessor :bgm_position
 def audioBgmPlay(str,vol,pitch,position)
   Audio.bgm_play(str,vol,pitch,position)
 end
 def audioBgmFade(time)
   Audio.bgm_fade(time)    
 end
 def audioBgmStop
   Audio.bgm_stop
 end
 def bgm_play_ex(bgm,volume,pitch,setplaying,position=0)
   if bgm.is_a?(String)
     bgm=RPG::AudioFile.new(bgm,volume,pitch)
   end
   if setplaying
     @playing_bgm = bgm==nil ? nil : bgm.clone
   end
   if bgm != nil and bgm.name != ""
     audioBgmPlay("Audio/BGM/" + bgm.name, bgm.volume, bgm.pitch,position) if !@defaultBGM
   else
     audioBgmStop if !@defaultBGM
   end
   if @defaultBGM
     audioBgmPlay("Audio/BGM/"+@defaultBGM.name, @defaultBGM.volume,@defaultBGM.pitch,position)
   end
   Graphics.frame_reset
 end
 def bgm_play(bgm,volume=100,pitch=100,position=0)
   bgm_play_ex(bgm,volume,pitch,true,position)
 end
 def bgm_stop
   @bgm_position=0
   @playing_bgm = nil
   audioBgmStop if !@defaultBGM
 end
 def bgm_fade(time)
   @playing_bgm = nil
   audioBgmFade((time * 1000).floor) if !@defaultBGM
 end
 def getPlayingBGM
   return @playing_bgm ? @playing_bgm.clone : nil
 end
 def bgm_memorize
   @memorized_bgm = @playing_bgm
 end
 def bgm_restore
   bgm_play(@memorized_bgm)
 end
 def setDefaultBGM(bgm,volume=100,pitch=100)
   if bgm.is_a?(String)
     bgm=RPG::AudioFile.new(bgm,volume,pitch)
   end
   if bgm != nil and bgm.name != ""
     @defaultBGM=bgm==nil ? nil : bgm.clone
     Audio.bgm_play("Audio/BGM/"+bgm.name)
   else
     @defaultBGM=nil
     self.bgm_play(@playing_bgm)
   end
 end
 def bgm_pause(fadetime=0.0)
   pos=Audio.bgm_position
   if fadetime>0.0
     bgm_fade(fadetime)
   end
   @bgm_position=pos
 end
 def bgm_unpause
   @bgm_position=0
 end
 def bgm_resume(bgm,volume=100,pitch=100);
   bgm_play(bgm,volume,pitch,@bgm_position)
   @bgm_position=0
 end  
end

#==============================================================================
# Scene_Map
#==============================================================================
class Scene_Map
def call_battle
   $game_temp.battle_calling = false
   $game_temp.menu_calling = false
   $game_temp.menu_beep = false
   $game_player.make_encounter_count
   $playingBGM=$game_system.playing_bgm
   $game_system.bgm_pause
   $game_system.se_play($data_system.battle_start_se)
   $game_system.bgm_play($game_system.battle_bgm)
   $game_player.straighten
   $scene = Scene_Battle.new
 end
end

#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
 #--------------------------------------------------------------------------
 alias battle_end_alias battle_end
 def battle_end(result)
   battle_end_alias(result)
   Audio.me_stop
   $game_system.bgm_resume($playingBGM)
 end
end


!
Title: Re: Help me for a ".dll" files of the Script "BGM continues after Battle"
Post by: ForeverZer0 on July 08, 2012, 01:26:18 pm
I think that's from the "Continuous Music" script. If there was not a link where the script was found, maybe try searching for it elsewhere. Usually scripts are posted all over different forums, and people use alternate links for the downloads/demos.