public

Rpg Maker Developers Group

Simple enough for a child, powerful enough for a developer

2 Followers

VXACE[CloudTheWolf] Event Sounds

BMM Archive · July 15, 2026

Preserved forum archive. This topic stores the original first post and locally mirrored RPG Maker Web attachments when available. It is posted by the BMMPlay archive account, not by the original creator.

Original Source

  • Original title: [CloudTheWolf] Event Sounds
  • Original author: CloudTheWolf
  • Original date: June 18, 2023
  • Source thread: https://forums.rpgmakerweb.com/threads/cloudthewolf-event-sounds.158451/
  • Source forum path: Game Development Engines > Ruby Game System (RGSS) Scripts > RGSS3 Scripts (RMVX Ace)

Summary

Something I recently wanted to add to my project was Event sounds that get louder the closer you were to them. I found ways to do this in Event functions using regions, however this felt clunky and a pain to implement, so I turned to scripts. I couldn't seem to find any that would work so ended up having to make my own. After a lot of trial and error I managed to get it working with as much functionality as I could and thought other might want to have...

Archived First Post

Something I recently wanted to add to my project was Event sounds that get louder the closer you were to them.

I found ways to do this in Event functions using regions, however this felt clunky and a pain to implement, so I turned to scripts. I couldn't seem to find any that would work so ended up having to make my own.

After a lot of trial and error I managed to get it working with as much functionality as I could and thought other might want to have a similar system in their games.

All it needs is your event to have the following comment block:

[sound "SOUND_NAME" max_volume min_volume range]

Eg

[sound "Fire" 80 30 8]

Alternative Links:
Official Website: https://cloudthewolf.com/view-file/ctw-event-sounds-rb
GitHub: https://github.com/CloudTheWolf/rpg-maker-vx-ace-scripts/blob/master/audio/Clouds Event Sounds.rb
Ruby:
#===============================================================================
#
# CloudTheWolf Event Sounds
# Author: CloudTheWolf
# Date (18/06/2023)
# Version: (1.0.1) (VXA)
# Level: (Easy)
#
#
#===============================================================================
# Change Log:
#   - 1.0.0
#     Initial Release
#
#   - 1.0.1
#     Fix tranitioning from a map with an even sound to a map with a BGS set
#===============================================================================
#
# NOTES: 1) This script will only work with ace.
#        2) This will only work with the closest event.
#        3) This will not work if the map has a BGS Set
#
#===============================================================================
#
# Description: Adds a BGS Sound Source to an event
#
# Credits: Me (CloudTheWolf)
#
#===============================================================================
#
# Instructions
# Paste above ▼ Below and above ▼ Main Process.
#
# Add the following comment to your event:
# [sound "SOUND_NAME" max_volume min_volume range]
#
#  Eg.
#  [sound "Fire" 50 2 7]
#
#  This will play to firew BGS when the player is within the range.
#  Outside of the range it will play at the min_volume so set to 0 if you don't
#  want it on the while map
#
#  FAQ:
#
#  Q: Can I have more than 1 sound source on a map?
#  A: Yes, however, please not only 1 can play at a time.
#     This is based on which ever is closest to the player.
#  Q: The BGS Still plays even when leaving the map
#  A: In your Map Settings just enable "Change BGS" and set it to none.
#
#  Q: Does this work with X, Y or Z?
#  A: This has not been testing with other scripts so this may or may not work
#     
#===============================================================================
#
# Free for any use as long as I'm credited.
#
#===============================================================================


#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  This class handles maps. It includes scrolling and passage determination
# functions. The instance of this class is referenced by $game_map.
#==============================================================================

class Game_Map
 
  attr_accessor :custom_bgs_playing
 
  # Calculate the straight-line distance between two points
  def distance(x1, y1, x2, y2)
    Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
  end

# Update BGS settings for events on the map
  def update_event_sounds
    closest_event = nil
    closest_distance = Float::INFINITY
    closest_range = nil
    custom_bgs_name = nil

    events.each_value do |event|
      comment = event.list.select { |command| command.code == 108 || command.code == 408 }
      next unless comment

      sound_matches = comment.map { |command| command.parameters[0].match(/\[sound\s+"(.+)"\s+(\d+)\s+(\d+)\s+(\d+)\]/) }.compact

      sound_matches.each do |sound_match|
        bgs_name = sound_match[1]
        max_volume = sound_match[2].to_i
        min_volume = sound_match[3].to_i
        range = sound_match[4].to_i

        player = $game_player
        distance = distance(event.x, event.y, player.x, player.y)           
        
        if closest_event == nil || (distance <= range && distance < closest_distance)
          closest_event = event
          closest_distance = distance
          closest_range = range
          custom_bgs_name = bgs_name
        end
      end
    end

    if closest_event && custom_bgs_name 
        comment = closest_event.list.select { |command| command.code == 108 || command.code == 408 }
        sound_match = comment.map { |command| command.parameters[0].match(/\[sound\s+"(.+)"\s+(\d+)\s+(\d+)\s+(\d+)\]/) }.compact.first
        bgs_name = sound_match[1]
        max_volume = sound_match[2].to_i
        min_volume = sound_match[3].to_i     
        if closest_distance <= closest_range
          current_volume = $temp_bgs_volume || 0
          target_volume = max_volume - ((max_volume - min_volume) * closest_distance / closest_range).to_i

          if current_volume != target_volume || $temp_bgs_name != bgs_name
            Audio.bgs_stop if current_volume == 0 && $temp_bgs_name != bgs_name
            Audio.bgs_play("Audio/BGS/#{bgs_name}", target_volume, 100, 0)
            $temp_bgs_name = bgs_name
          end

          $temp_bgs_volume = target_volume
        else
          Audio.bgs_play("Audio/BGS/#{bgs_name}", min_volume, 100, 0) unless min_volume == 0
          self.custom_bgs_playing = bgs_name
        end
      else
        self.custom_bgs_playing = nil
    end
  end
 
  alias ces_setup setup
  def setup(map_id)
    # Stop only the custom BGS before changing maps
    if self.custom_bgs_playing
      Audio.bgs_stop
      self.custom_bgs_playing = nil
    end
    ces_setup(map_id)
  end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs the map screen processing.
#==============================================================================

class Scene_Map < Scene_Base
  # ...
 
  # Update scene (called every frame)
  alias ces_update update
  def update
    ces_update
    update_dynamic_sounds
    # ... Other update logic for the scene
  end
 
  # Update dynamic sound effects
  def update_dynamic_sounds
    $game_map.update_event_sounds
  end
 
  # ...
end

Downloads / Referenced Files

Log in to download

Log in, then follow the RPG Maker Developers Group to see these download links.

Log in to download

License / Terms Note

# Credits: Me (CloudTheWolf) # #=============================================================================== #

Creator Claims / Removal

If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.

#039#rgss3#script-archive

Replies (0)

No replies yet.

0 replies 1 view

Log in to reply.

User Avatar