QuesTMajoR 4 Report post Posted April 14, 2013 (edited) Music Album with Previewsby : QuesTMajoRINTRODUCTIONWhat 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 #•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• #•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• #•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• CREDITSgame_guy - I got the pattern/structure of script from his Quest Log script Edited April 14, 2013 by QuesTMajoR Share this post Link to post Share on other sites
dolarmak 23 Report post Posted April 15, 2013 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