Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
QuesTMajoR

RMXP Music Album with Previews

Recommended Posts

Music Album with Previews
by : QuesTMajoR

INTRODUCTION
What is this script really all about?
-It lists Musics that you want and whether you like it or not, it will Preview/Play the Music.
You can also Use Pictures if you want.

This script can very be useful for music based games.

DEMO

Not Available



SCRIPT

#===============================================================================

# • Music Album • 
# • with Previews v1 •                             
# By: QuesTMajoR
#
# I get the script structure and pattern from game_guy's Quest Log script. 
#===============================================================================
# WHAT IS THIS SCRIPT?
# ~This script allows you to store Musics with Previews. You can also attach
# pictures of the Composer or the Album maybe.
#
# Import Musics using the Import Manager of RPG Maker XP
# Import it by BGM . BackGround Music.
#
# Commands:
# Music.add(id)    = ADDS MUSIC TO THE ALBUM where (id) - id = Music ID
# Music.remove(id) = REMOVES MUSIC FROM THE ALBUM where (id) - id = Music ID
#
#
# CALL THE SCENE by Using:
# $scene = Scene_Musics.new
#
#===============================================================================
module MusicAlbum
#•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••#
#                                                                             #
#                                                                             #
#                        BEGINNING OF CONFIGURATION                           #
#                                                                             #
#                                                                             #
#                                                                             #
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
 
#DO YOU WANT TO USE PICTURE?
#Make This True if you want to attach Music Album Picture
AlbumPicture   = true
 
 
 
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
# THE TITLE OF THE MUSIC
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
# Setup: 
# when MUSIC ID then return "THE TITLE OF THE MUSIC"
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
  def self.title(id)
    case id
    when 1 then return "Symphony 34 in G-Minor"
    when 2 then return "Symphony 55 in E-Major"
    when 3 then return "Symphony 23 in G-Major"
    end
    return " "
  end
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
  
  
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
# THE MUSIC'S ALBUM PICTURE
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
# Setup: 
# when PICTURE ID then return "PICTURE'S FILENAME"
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
  def self.albumpic(id)
    case id
    when 1 then return "Symphony 123"
    when 2 then return "Symphony 123"
    when 3 then return "Symphony 123"
    end
    return nil
  end
#•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 
 
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
# COMPOSER
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
# Setup: 
# when MUSIC ID then return "COMPOSER"
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
  def self.composer(id)
    case id
    when 1 then return "Ludwig Van Beethoven"
    when 2 then return "Pytor Illych Tchaikovsky"
    when 3 then return "Hector Berlioz"
    end
    return " "
  end
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
 
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
# PREVIEW MUSIC
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
# Setup: 
# when MUSIC ID then return "Audio/BGM/MUSIC FILENAME"
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
  def self.music(id)
     case id
      when 1 then return "Audio/BGM/BSymphony1"
      when 2 then return "Audio/BGM/BSymphony2"
      when 3 then return "Audio/BGM/BSymphony3"
      end
      return
     end
#•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• 
 
 
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
# MUSIC'S DESCRIPTION
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
# Setup: 
# when MUSIC ID then return "DESCRIPTION"
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
  def self.description(id)
    case id
    when 1 then return "Symphony 45 in G-Minor"
    when 2 then return "Symphony 55 in E-Major"
    when 3 then return "Symphony 23 in G-Major"
    end
    return ""
  end
end
 
 
#•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••#
#                                                                             #
#                                                                             #
#                           END OF CONFIGURATION                              #
#                                                                             #
#                                                                             #
#                                                                             #
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
module Music
  def self.add(id)
    $game_party.add_music(id)
  end
    def self.remove(id)
    $game_party.remove_music(id)
  end
end
 
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
class Game_Party
  
  attr_accessor :musics
  
  alias ma_musics_lat initialize
  def initialize
    @musics = []
    ma_musics_lat
  end
  
  def add_music(id)
    unless @musics.include?(id)
      @musics.push(id)
    end
  end
  
  
  def remove_music(id)
    @musics.delete(id)
  end
  
end
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
 
class Scene_Musics
  def main
    @musics = []
    for i in $game_party.musics
      @musics.push(MusicAlbum.title(i))
    end
    @map = Spriteset_Map.new
    @music2 = []
    for i in $game_party.musics
      @music2.push(i)
    end
    @musics_window = Window_Command.new(220, @musics)
    @musics_window.height = 480
    @musics_window.width = 220
    @musics_window.back_opacity = 110
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    @musics_window.dispose
    @music_info.dispose if @music_info != nil
    @map.dispose
  end
  def update
    @musics_window.update
    if @musics_window.active
      update_musics
      return
    end
    if @music_info != nil
      update_info
      return
    end
  end
  def update_musics
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @music_info = Window_MusicsInfo.new(@music2[@musics_window.index])
      @music_info.back_opacity = 110
      @musics_window.active = false
      return nil
    end
  end
  
  def update_info
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @musics_window.active = true
      @music_info.dispose
      @music_info = nil
      Audio.bgm_stop
      return
    end
  end
end
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
class Window_MusicsInfo < Window_Base
  def initialize(music)
    super(220, 0, 420, 220)
    self.contents = Bitmap.new(width - 32, height - 32)
    @music = music
    refresh
  end
  def refresh
    self.contents.clear
    if MusicAlbum::AlbumPicture
      pic = MusicAlbum.albumpic(@music)
      bitmap = RPG::Cache.picture(MusicAlbum.albumpic(@music)) if pic != nil
      rect = Rect.new(0, 0, bitmap.width, bitmap.height) if pic != nil
      self.contents.blt(420-bitmap.width-32, 0, bitmap, rect) if pic != nil
    end
    Audio.bgm_play(MusicAlbum.music(@music))
    self.contents.font.color = system_color
    self.contents.font.size = 18
    self.contents.draw_text(0, 90, 480, 32, "Composer:")
    self.contents.font.color = crisis_color
    self.contents.font.size = 30
    self.contents.draw_text(0, 60, 480, 32, MusicAlbum.title(@music))
    self.contents.font.color = system_color
    self.contents.font.size = 18
    self.contents.draw_text(0, 120, 480, 32, "Description:")
    self.contents.font.color = normal_color
    self.contents.font.size = 30
    self.contents.draw_text(100, 120, 480, 32, MusicAlbum.description(@music))
    self.contents.font.color = knockout_color
    self.contents.font.size = 20
    self.contents.draw_text(100, 90, 480, 32, MusicAlbum.composer(@music))
  end
end
 
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
class Bitmap
  
  def slice_text(text, width)
    words = text.split(' ')
    return words if words.size == 1
    result, current_text = [], words.shift
    words.each_index {|i|
        if self.text_size("#{current_text} #{words}").width > width
          result.push(current_text)
          current_text = words
        else
          current_text = "#{current_text} #{words}"
        end
        result.push(current_text) if i >= words.size - 1}
    return result
  end
  
end
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
#••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••



CREDITS
game_guy - I got the pattern/structure of script from his Quest Log script

Edited by QuesTMajoR

Share this post


Link to post
Share on other sites

If you could post a demo with it I think you would get a better response. People like to see how something works before adding it to their games.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...