Crazyninjaguy 9 Posted February 7, 2012 Introduction The first real AEE script! This offers you a wide range of features, most of which are optional. Features Locking/Unlocking of tracks Cover art Locked cover art Allow unlocking of music by hearing it in the game Allow the player to hear the music on the map Ability to add tracks on the fly Ability to lock/unlock tracks on the fly Requirements Requires: AEE - Data Manager: http://www.planetdev....php?f=15&p=371 Place this music player script below AEE - Data Manager Screenshots Script #=============================================================================== # * AEE - Music Player # * By Crazyninjaguy # * http://www.planetdev.co.uk # * Part of Cng's Ace Engine Evolution # --------------------------------------------------------------------------- # * REQUIRES: AEE - Data Manager # http://www.planetdev.co.uk/viewtopic.php?f=15&p=371 # --------------------------------------------------------------------------- # * INSTALLATION: # Put this script below AEE - Data Manager. # --------------------------------------------------------------------------- # * USAGE: # Follow the instructions in script to set it up properly. # To call this from an event command, use SceneManager.goto(Scene_Music) # When AEE - Menu is finished, this script will have a menu option. # --------------------------------------------------------------------------- # * SCRIPT COMMANDS: # The following can be used as script commands: # # $game_music.lock("Track Name") # $game_music.unlock("Track Name") # $game_music.add("Track Name", unlocked, "Cover Art", "Locked Cover Art") # Set the unlocked value to true or false depending on whether you want them # to be able to access it straight away. # #=============================================================================== $imported = {} if $imported == nil $imported["AEE-MusicPlayer"] = true module AEE module Music # Icon ID of the icon relating to Unlocked Items UNLOCKED_ICON = 189 # Icon ID of the icon relating to locked Items LOCKED_ICON = 187 # Show locked tracks in the track selector? SHOW_LOCKED_ITEMS = true # Unlock music just by hearing it in game? UNLOCK_BY_HEARING = true # Keep playing the music when the player exits this scene? KEEP_PLAYING_ON_EXIT = true # Default Cover art filename in Graphics/Pictures 150 pixels x 150 pixels. # Used for tracks added by the system. DEFAULT_COVER = "Cover" # Default locked Cover art filename in Graphics/Pictures 150 pixels x 150 pixels. # Used for tracks added by the system. DEFAULT_LOCKED = "Cover_locked" # Leave the next line alone FILES = [] # These are the tracks available to the player by default. # FILES[index] = ["Filename", unlocked, "Cover Image", "Locked Cover Image"] # Set unlocked to true or false, depending on whether you want the player # to be able to access it straight away. FILES[0] = ["Battle1", true, "Cover", "Cover_locked"] FILES[1] = ["Battle2", true, "", "Cover_locked"] FILES[2] = ["Battle3", true, "", "Cover_locked"] FILES[3] = ["Battle4", true, "", "Cover_locked"] FILES[4] = ["Battle5", false, "", "Cover_locked"] FILES[5] = ["Battle6", false, "", "Cover_locked"] FILES[6] = ["Battle7", false, "", "Cover_locked"] FILES[7] = ["Battle8", true, "", "Cover_locked"] FILES[8] = ["Battle9", true, "", "Cover_locked"] end end class Game_Music include AEE::Music attr_accessor :files attr_accessor :filenames def initialize @files = [] @filenames = [] for i in 0...FILES.size @files.push(Game_MusicFile.new(FILES[i][0], FILES[i][1], FILES[i][2], FILES[i][3])) @filenames.push(FILES[i][0]) end end def unlock(name) for i in 0...@filenames.size if @filenames[i] == name @files[i].unlocked = true end end end def lock(name) for i in 0...@filenames.size if @filenames[i] == name @files[i].unlocked = false end end end def add(name, unlocked, image, locked_image) if !@filenames.include?(name) @filenames.push(name) @files.push(Game_MusicFile.new(name, unlocked, image, locked_image)) end end end class Game_MusicFile attr_accessor :filename attr_accessor :unlocked attr_accessor :image attr_accessor :unlocked_image def initialize(filename, unlocked, image, unlocked_image) @filename = filename @unlocked = unlocked @image = image @unlocked_image = unlocked_image end end class Scene_Music < Scene_Base include AEE::Music def start super create_command_window @index = 0 end def terminate super end def update super if @index != @command_window.index if SHOW_LOCKED_ITEMS @music_info.refresh($game_music.files[@command_window.index]) @index = @command_window.index else @music_info.refresh(@unlocked[@command_window.index]) @index = @command_window.index end end if Input.trigger?(: Sound.play_cancel if !KEEP_PLAYING_ON_EXIT Audio.bgm_stop end SceneManager.goto(Scene_Map) end end def create_command_window @command_window = Window_MusicCommand.new @command_window.height = Graphics.height / 2 @command_window.y = Graphics.height / 2 @music_info = Window_MusicInfo.new($game_music.files[@command_window.index]) if !SHOW_LOCKED_ITEMS @unlocked = [] for i in 0...$game_music.files.size if $game_music.files[i].unlocked @unlocked.push($game_music.files[i]) end end end end end class Window_MusicCommand < Window_Command include AEE::Music def initialize super(0, 0) end def window_width return Graphics.width end def visible_line_number item_max end def make_command_list add_main_commands end def col_max return 2 end def add_main_commands for i in 0...$game_music.files.size if SHOW_LOCKED_ITEMS add_command($game_music.files[i].filename, $game_music.files[i].filename, $game_music.files[i].unlocked) else if $game_music.files[i].unlocked add_command($game_music.files[i].filename, $game_music.files[i].filename, $game_music.files[i].unlocked) end end end end def draw_item(index) change_color(normal_color, command_enabled?(index)) temp = item_rect_for_text(index) temp.x += 24 draw_text(temp, command_name(index), alignment) if SHOW_LOCKED_ITEMS if $game_music.files[index].unlocked draw_icon(UNLOCKED_ICON, temp.x - 24, temp.y) else draw_icon(LOCKED_ICON, temp.x - 24, temp.y) end else draw_icon(UNLOCKED_ICON, temp.x - 24, temp.y) end end def call_ok_handler if handle?(current_symbol) call_handler(current_symbol) elsif handle?(:ok) super else activate Audio.bgm_play("Audio/BGM/#{$game_music.files[index].filename}", 100, 100) end end end class AEEDataManager alias aee_datamanager_musicplayer_createobjects create_extra_objects def create_extra_objects aee_datamanager_musicplayer_createobjects $game_music = Game_Music.new end alias aee_datamanager_musicplayer_getfilestosave get_files_to_save def get_files_to_save(contents) aee_datamanager_musicplayer_getfilestosave(contents) contents[:music] = $game_music end alias aee_datamanager_musicplayer_extractfiles extract_save_contents def extract_save_contents(contents) aee_datamanager_musicplayer_extractfiles(contents) $game_music = contents[:music] end end class Window_MusicInfo < Window_Base def initialize(song) super(0, 0, Graphics.width, Graphics.height / 2) @cover = Sprite_Cover.new(song) @cover.z = self.z + 1 refresh(song) end def refresh(song) self.contents.clear @cover.refresh(song) if song.unlocked self.contents.font.color = power_up_color else self.contents.font.color = power_down_color end self.contents.draw_text(0, 0, width - 32, 24, song.filename, 1) self.contents.font.color = normal_color end alias aee_musicinfo_musicplayer_dispose dispose def dispose aee_musicinfo_musicplayer_dispose @cover.dispose end end class Game_Map include AEE::Music alias aee_gamemap_musicplayer_autoplay autoplay def autoplay aee_gamemap_musicplayer_autoplay if UNLOCK_BY_HEARING if !$game_music.filenames.include?(@map.bgm.name) $game_music.files.push(Game_MusicFile.new(@map.bgm.name, true, "", "")) $game_music.filenames.push(@map.bgm.name) end end end end class Sprite_Cover < Sprite_Base def initialize(file) super(nil) refresh(file) end def dispose super self.bitmap.dispose end def refresh(file) if file.unlocked self.bitmap = Cache.picture(file.image) else self.bitmap = Cache.picture(file.unlocked_image) end self.x = (Graphics.width - self.bitmap.width) / 2 self.y = (((Graphics.height / 2) - self.bitmap.width) / 2) + 10 end end class Game_Interpreter include AEE::Music alias aee_interpreter_musicplayer_command241 command_241 def command_241 aee_interpreter_musicplayer_command241 if UNLOCK_BY_HEARING if !$game_music.filenames.include?(@params[0].name) $game_music.files.push(Game_MusicFile.new(@params[0].name, true, DEFAULT_COVER, DEFAULT_LOCKED)) $game_music.filenames.push(@params[0].name) end end end end class Scene_Map < Scene_Base include AEE::Music alias aee_scenemap_musicplayer_prebattlescene pre_battle_scene def pre_battle_scene aee_scenemap_musicplayer_prebattlescene if UNLOCK_BY_HEARING if !$game_music.filenames.include?($game_system.battle_bgm.name) $game_music.files.push(Game_MusicFile.new($game_system.battle_bgm.name, true, DEFAULT_COVER, DEFAULT_LOCKED)) $game_music.filenames.push($game_system.battle_bgm.name) end end end end Credits Credit me if used please! Not available for use in commercial projects unless i'm contacted about it. Thanks. 1 Share this post Link to post Share on other sites
ShinGamix 101 Posted February 8, 2012 (edited) I had always evented a Manic Mansion style CD player in my other projects. Now a new way to show of my project's music and the whole OST also! Will this do a CD player type feature while you are playing or can you add that feature? I should have read your post better the first time. Also how many songs can it max out to? Very Windows Media Player-ish too. Thank you a lot!! Edit - Anyway to have it have a separate style window file? EDIT2- I am not a member of PlanetDev. Can you post AEE - Data Manager here too? Edited February 8, 2012 by ShinGamix Share this post Link to post Share on other sites
Crazyninjaguy 9 Posted February 8, 2012 Hey, no problem! It shouldn't max out at any number of songs, as the window will scroll the options! And sure, here you go: http://www.rpgmakervxace.net/index.php?/topic/1262-aee-data-manager/ 1 Share this post Link to post Share on other sites
ShinGamix 101 Posted February 8, 2012 (edited) I have to keep a look out for your scripts from now on since your obviously reading my mind. lol jk EDIT-posted 2/25/2012 (didn't want to double post.) -Any way you would explain how to set this up because I just finally started messing with it today and I am at a idunno stage. DO I use an event or common event or what? Can I use it with a button input script or just add it to the menu as another command. i.e. need a little more info please. Id really like to get this working today. Edited February 25, 2012 by ShinGamix Share this post Link to post Share on other sites