Soll der Sound sofort auf konstanter Lautstärke hörbar sein, oder langsam lauter werden, je näher man kommt?

In ersterem Fall kann dir Folgendes nur bedingt helfen (man kann das sicher noch entsprechend umschreiben, aber dafür bin ich nicht wirklich kompetent), in zweiterem wird es dein Problem lösen:

Code:
#==============================================================================
# ** Sound Effekt Script
#------------------------------------------------------------------------------
#
# # Leif / f0tz!baerchen
# v1.0
# 20.02.2011
#
#-------------------------------------------------------------------------------
#
# Was tut dieses Script?
# Dieses Script ermöglichst es, verschiedene Soundquellen (z.B. Feuer, Tiere)
# auf der Map zu platzieren. Diese Quellen geben Geräusche von sich, sobald sich
# der Spieler in ihrer Nähe befindet. Je näher er an der Quelle ist, desto
# lauter der Sound.
#
#-------------------------------------------------------------------------------
#
# Wie kann ich eine neue Soundquelle erstellen?
# Grundsätzlich gibt es zwei Arten von Quellen: SE Soundquellen für kurze,
# wiederkehrende Geräusche und BGS Soundquellen, für konstante Geräusche. 
# SE können gleichzeitig abgespielt werden, von den BGS wird immer der
# Lauteste abgespielt. Beide werden erstellt, indem man ein Event auf der Karte
# an entsprechender Stelle platziert, welches oben einen Kommentar enthält, 
# der folgendermaßen aussieht:
#
#   BGS:Sound,Entfernung,Volume,Pitch
# oder
#   SE:Sound,Entfernung,Volume,Pitch,Frames
#
#     *Sound: der Name der Sounddatei (ohne Endung)
#     *Entfernung: die maximale Entfernung in Tiles, aus der das Geräusch noch
#     *hörbar ist
#     *Volume, Pitch: max. Volume und Pitch des Geräuschs
#     *Frames: Anzahl Frames, nachdem das Geräusch wiederholt wird (nur für SE)
#
#==============================================================================

#==============================================================================
# class for sounds
#==============================================================================
class Game_Sound
  attr_reader :current_volume
  attr_reader :type
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(type, event, name, distance, volume, pitch, count=10)
    @type = type
    @event = event
    @name = name
    @distance = distance
    @count = count
    @volume = volume
    @current_volume = volume
    @pitch = pitch
    @last_count = 0
  end
  #--------------------------------------------------------------------------
  # * Object update
  #--------------------------------------------------------------------------
  def update
    add = @type == 'BGS' ? 0 : @event.id * @count / 5
    #return false if Graphics.frame_count - @last_count <= @count
    return false if (Graphics.frame_count + add) % @count != 0
    p_x = $game_player.x
    p_y = $game_player.y
    dist = Math.sqrt((@event.x - p_x) ** 2 + (@event.y - p_y) ** 2)
    @current_volume = [@volume - dist * @volume / @distance, 0].max.round
    @last_count = Graphics.frame_count if @current_volume > 0 or @type == 'BGS'
    return true
  end
  #--------------------------------------------------------------------------
  # returns audio file
  #--------------------------------------------------------------------------
  def audio
    return RPG::AudioFile.new(@name, @current_volume, @pitch)
  end
end

#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
#  This class deals with events. It handles functions including event page 
#  switching via condition determinants, and running parallel process events.
#  It's used within the Game_Map class.
#==============================================================================
class Game_Event < Game_Character
  attr_reader :event
end

#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  This class handles the map. It includes scrolling and passable determining
#  functions. Refer to "$game_map" for the instance of this class.
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # * Setup
  #     map_id : map ID
  #--------------------------------------------------------------------------
  if !method_defined?(:sound_script_game_map_setup)
    alias sound_script_game_map_setup setup
  end
  def setup(map_id)
    sound_script_game_map_setup(map_id)
    # sounds settings
    @sounds = []
    for event in @events.values
      i = 0
      while event.event.pages[0].list[i].code == 108 or 
      event.event.pages[0].list[i].code == 408
        list = event.event.pages[0].list[i]
        if list.parameters[0][0..2] == 'SE:'
          param = list.parameters[0].downcase.split(':')[1].split(',')
          sound = Game_Sound.new('SE', event, param[0], param[1].to_i, 
                                 param[2].to_i, param[3].to_i, param[4].to_i)
          @sounds.push(sound)
          break
        elsif list.parameters[0][0..3] == 'BGS:'
          param = list.parameters[0].downcase.split(':')[1].split(',')
          sound = Game_Sound.new('BGS', event, param[0], param[1].to_i, 
                                 param[2].to_i, param[3].to_i)
          @sounds.push(sound)
          break
        end
        i += 1
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  if !method_defined?(:sound_script_game_map_update)
    alias sound_script_game_map_update update
  end
  def update
    # updates sounds
    self.sound_update
    sound_script_game_map_update
  end
  #--------------------------------------------------------------------------
  # updates sounds effects
  #--------------------------------------------------------------------------
  def sound_update
    list = []
    @sounds.each do |sound|
      next if !sound.update
      if sound.type == 'SE'
        next if sound.current_volume == 0
        $game_system.se_play(sound.audio)
        next
      end
      next if list.size > 0 and sound.current_volume <= list.last.current_volume
      list.push(sound)
    end
    if list.size > 0
      $game_system.bgs_play(list.last.audio)
    end
  end
end