设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2420|回复: 5
打印 上一主题 下一主题

[已经解决] 音乐盒脚本怎么设置啊

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2012-10-3
帖子
25
跳转到指定楼层
1
发表于 2014-1-23 22:36:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
为什么这个音乐盒脚本不能显示我的音乐,请问该怎么设置啊


#==============================================================================
# +++ MOG - MUSIC BOX  (v1.1) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# Sistema que permite escutar as músicas tocadas durante o jogo.
#==============================================================================
#==============================================================================
# UTILIZAÇÃO
#
# 1 - Crie uma pasta com o nome MUSIC COVER
#     /Graphics/Music_Cover/
#
# 2 - Copie os seguintes arquivos contidos na Demo.
#     Layout.png
#     Layout2.png
#
#==============================================================================
# OPCIONAL
#
# Para adicionar imagens vinculadas as músicas nomeie as imagens da
# seguinte forma.
#
# FILE_NAME + _B1
# FILE_NAME + _B2
#
# Exemplo (eg)
#
# Nome da música
# Theme5.MP3 (Ogg/mid/etc...)
#
# Nome dos arquivos gráficos que ficarão na pasta /Graphics/Music_Cover/
# Theme5_B1.png
# Theme5_B2.png
#
# NOTA - O Sufixo _B1 é a imagem que terá o efeito scrolling, caso não queira
#        o efeito de deslizar a imagem basta criar apenas um arquivo de
#        imagem e nomea-lo com o sufixo _B2
#
#==============================================================================
# Para chamar o script use o comando abaixo.
#
# SceneManager.call(Scene_Music_Box)
#
#==============================================================================

#==============================================================================
# ● Histórico (Version History)
#==============================================================================
# v 1.1 - Melhoria no sistema de dispose.
#==============================================================================

module MOG_MUSIC_BOX
  # Posição da janela da lista de músicas.
  MUSIC_LIST_POSITION_TEXT = [0, 200]
  # Posição do layout da lista de músicas.
  MUSIC_LIST_POSITION_LAYOUT = [0, 195]
  # Tempo para ocultar a janela de lista de músicas.
  MUSICLIST_FADE_TIME = 2#(Sec)
  # Definição da velocidade de deslizar a imagem de fundo. [X,Y]
  BACKGROUND_SCROLL_SPEED = [2,0]  
  # Ativar a animação do gráfico do personagem. *(Não é obrigatório ser
  # a imagem de um personagem, você pode criar outros efeitos de animações
  # no lugar do personagem.
  CHARACTER_SPRITE = true
  # Velociadade da animação do personagem.
  CHARACTER_ANIMATION_SPEED = 30
  # Posição do personagem
  CHARACTER_POSITION = [300,140]
  # Definição da palavra Completado.
  COMPLETED_WORD =  "Completed"
  # Posição do texto de informação.
  INFO_POSITION = [0,373]  
  # Incluir músicas contidas no RTP.
  INCLUDE_RTP = true
  # Definição do diretório que foi instalado o RTP.
  # Por padrão o caminho do diretório foi baseado no Windows 7 (64Bits).
  # Outros sistemas operacionais o caminho do diretório é diferente.
  RTP_PATH = "C:/Program Files (x86)/Common Files/"
  # Ativar o comando Music Box no menu principal.
  MENU_COMMAND = true
  # Nome do comando
  MENU_COMMAND_NAME = "Music Box"  
end


#===============================================================================
# ■ Game System
#===============================================================================
class Game_System
  
  attr_accessor  :music_book_list

#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------                     
  alias mog_music_book_initialize initialize
  def initialize
      mog_music_book_initialize
      music_book_setup
  end

#--------------------------------------------------------------------------
# ● Music Book Setup
#--------------------------------------------------------------------------                  
  def music_book_setup
      return if !SceneManager.scene_is?(Scene_Title)
      @music_book_list = []
      @music_book_list.push([$data_system.title_bgm.name,true]) if $data_system.title_bgm.name != ""
      path = "Audio/BGM/"  
      make_music_list(path)  
      if MOG_MUSIC_BOX::INCLUDE_RTP
         path = MOG_MUSIC_BOX::RTP_PATH
         make_music_list(path)
      end
    end  
   
#--------------------------------------------------------------------------
# ● Make_Music_List
#--------------------------------------------------------------------------                       
  def make_music_list(path)
      return if !File.directory?(path)
      list = Dir.entries(path)
      for i in 2...list.size
          file_name = File.basename(list.to_s,  ".*")
          @music_book_list.push([file_name,false]) unless repeated_song?(file_name)
      end   
   end
  
#--------------------------------------------------------------------------
# ● Repeated Song?
#--------------------------------------------------------------------------                          
  def repeated_song?(file_name)
      for i in 0...@music_book_list.size         
         return true if @music_book_list.include?(file_name)
      end
      return false
  end  
   
end  

#===============================================================================
# ■ RPG AudioFile
#===============================================================================
class RPG::BGM < RPG::AudioFile
  
#--------------------------------------------------------------------------
# ● Play
#--------------------------------------------------------------------------                     
  alias mog_music_book_play play
  def play(pos = 0)
      mog_music_book_play(pos)
      check_music_book
  end
  
#--------------------------------------------------------------------------
# ● Check Music Book
#--------------------------------------------------------------------------                  
  def check_music_book
      return if $game_system.music_book_list == nil      
      return if @name.empty?
      for i in 0...$game_system.music_book_list.size
          if $game_system.music_book_list[0] == @name
             $game_system.music_book_list[1] = true
             break
          end  
      end  
  end  
  
end
  
#===============================================================================
# ■ RPG Cache
#===============================================================================
module Cache
  
  #--------------------------------------------------------------------------
  # ● Music Cover
  #--------------------------------------------------------------------------
  def self.music_cover(filename)
      load_bitmap("Graphics/Music_Cover/", filename)
  end
  
end  

#===============================================================================
# ■ RPG_FileTest
#===============================================================================
module RPG_FileTest
  
  #--------------------------------------------------------------------------
  # ● RPG_FileTest.music_cover_exist?
  #--------------------------------------------------------------------------
  def RPG_FileTest.music_cover_exist?(filename)
      return Cache.music_cover(filename) rescue return false
  end  
  
end

#==============================================================================
# ■ Window_Picture
#==============================================================================
class Window_Music_List < Window_Selectable
  
#------------------------------------------------------------------------------
# ● Initialize
#------------------------------------------------------------------------------   
  def initialize
      super(0, 0, 544, 160)
      self.opacity = 0
      @Index = -1
      @item_max = $game_system.music_book_list.size
      refresh
      select(0)
      activate
  end

#------------------------------------------------------------------------------
# ● Refresh
#------------------------------------------------------------------------------   
  def refresh
      if self.contents != nil
         self.contents.dispose
         self.contents = nil
      end
      if @item_max > 0         
         self.contents = Bitmap.new(width - 32, 24 * @item_max)
         for i in 0...@item_max
            draw_item(i)
         end
         return
      end
      self.contents = Bitmap.new(width - 32, 24)
      self.contents.draw_text(x,y,440,32,"No Data",0)   
  end
  
#------------------------------------------------------------------------------
# ● draw_item
#------------------------------------------------------------------------------   
  def draw_item(index)
      x = 0
      y = 24 * index
      if $game_system.music_book_list[index][1]
         change_color(normal_color,true)
         music = "N" + sprintf("%02d", index + 1).to_s +  " - "+ $game_system.music_book_list[index][0].to_s
      else
         change_color(normal_color,false)
         music = "N" + sprintf("%02d", index + 1).to_s +  " - Not Available"
      end  
      self.contents.draw_text(x,y,440,32,music,0)
  end
  
#------------------------------------------------------------------------------
# ● Col Max
#------------------------------------------------------------------------------      
  def col_max
      return 1
  end
   
#------------------------------------------------------------------------------
# ● Item Max
#------------------------------------------------------------------------------         
  def item_max
      return @item_max == nil ? 0 : @item_max
  end  
  
end

#===============================================================================
# ■ Scene Music Box
#===============================================================================
class Scene_Music_Box
include MOG_MUSIC_BOX

#--------------------------------------------------------------------------
# ● Main
#--------------------------------------------------------------------------               
  def main
      execute_dispose
      create_music_list
      create_layout
      create_sprite_now_playing
      create_character
      execute_loop
      execute_dispose      
  end

#--------------------------------------------------------------------------
# ● Execute Loop
#--------------------------------------------------------------------------                 
  def execute_loop
      Graphics.transition
      loop do
           Graphics.update
           Input.update
           update
           break if SceneManager.scene != self
     end        
   end  
  
#--------------------------------------------------------------------------
# ● Create Layout
#--------------------------------------------------------------------------                 
  def create_layout
      @background = Plane.new
      @background.z = 1
      @background2 = Sprite.new
      @background2.z = 2      
      @layout = Sprite.new
      @layout.bitmap = Cache.music_cover("Layout")
      @layout.z = 90
      @old_index = -1
  end
  
#--------------------------------------------------------------------------
# ● create Sprite now Playing
#--------------------------------------------------------------------------                  
  def create_sprite_now_playing
      @now_playing = Plane.new
      @now_playing.bitmap = Bitmap.new(544,416)
      @now_playing.z = 100
      check_completion
      make_now_playing(true)
  end  

#--------------------------------------------------------------------------
# ● Check Completion
#--------------------------------------------------------------------------                     
  def check_completion
      comp = 0
      for i in 0...$game_system.music_book_list.size
          comp += 1 if $game_system.music_book_list[1]        
      end
      if  $game_system.music_book_list.size > 0   
          @completed = "( " + COMPLETED_WORD + " " + (comp.to_f / $game_system.music_book_list.size * 100).truncate.to_s + "% )"
      else
          @completed = "( " + COMPLETED_WORD + " )"
      end  
  end
  
#--------------------------------------------------------------------------
# ● Create_Character
#--------------------------------------------------------------------------                       
  def create_character
      return if !CHARACTER_SPRITE
      @character_index = 0
      @character_animation_speed = 0
      @character = Sprite.new
      @character.z = 80
      @character_image = Cache.music_cover("Character")
      @character_frame_max = @character_image.width / @character_image.height
      @character_width = @character_image.width / @character_frame_max  
      @character.bitmap = Bitmap.new(@character_width,@character_image.height)
      @character.x = CHARACTER_POSITION[0]
      @character.y = CHARACTER_POSITION[1]     
      make_character_bitmap
  end
  
#--------------------------------------------------------------------------
# ● Make Now Playing
#--------------------------------------------------------------------------                     
def make_now_playing(init = false)
     @now_playing.bitmap.clear
     @now_playing.bitmap.font.size = 20
     @now_playing.bitmap.font.bold = true
     text = song_name + "   " + @completed
     text = @completed if init
     @now_playing.bitmap.draw_text(INFO_POSITION[0],INFO_POSITION[1], 544, 32, text.to_s,1)      
     @now_playing.opacity = 0
end

#--------------------------------------------------------------------------
# ● Make Background
#--------------------------------------------------------------------------                  
def make_background
     if @background.bitmap != nil
        @background.bitmap.dispose
        @background.bitmap = nil
     end  
     if RPG_FileTest.music_cover_exist?(song_name + "_B1")
        @background.bitmap = Cache.music_cover(song_name + "_B1")
     else
        @background.bitmap = Cache.music_cover("")
     end  
     @background.opacity = 0
     if @background2.bitmap != nil
        @background2.bitmap.dispose
        @background2.bitmap = nil
     end  
     if RPG_FileTest.music_cover_exist?(song_name + "_B2")
        @background2.bitmap = Cache.music_cover(song_name + "_B2")
     else
        @background2.bitmap = Cache.music_cover("")
     end  
     @background2.opacity = 0     
end

#--------------------------------------------------------------------------
# ● Song Name
#--------------------------------------------------------------------------                    
def song_name
     if $game_system.music_book_list.size == 0      
        return ""
     end  
     return $game_system.music_book_list[@music_list_window.index][0].to_s
end

#--------------------------------------------------------------------------
# ● Create_Music_List
#--------------------------------------------------------------------------                     
  def create_music_list
      @stop = true
      @layout2 = Sprite.new
      @layout2.bitmap = Cache.music_cover("Layout2")
      @layout_org_position = [MUSIC_LIST_POSITION_LAYOUT[0],MUSIC_LIST_POSITION_LAYOUT[1]]      
      @layout2.y = @layout_org_position[1]
      @layout2.z = 90   
      @music_list_window = Window_Music_List.new
      @music_list_window.z = 100
      @music_list_window_org = [MUSIC_LIST_POSITION_TEXT[0],MUSIC_LIST_POSITION_TEXT[1]]
      @music_list_window.y = @music_list_window_org[1]
      @music_index = @music_list_window.index
      @fade_max =  60 + 60 * MUSICLIST_FADE_TIME
      @fade_time = @fade_max
      @music_list_window.x = -544
      @music_list_window.contents_opacity = 0
      @layout2.x = -544
      @layout2.opacity = 0        
  end  
  
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------                  
  def initialize
      BattleManager.save_bgm_and_bgs
      RPG::BGM.fade(2 * 1000)
      RPG::BGS.fade(2 * 1000)
      @w_visible = true
  end
   
  
#--------------------------------------------------------------------------
# ● Execute Dispose
#--------------------------------------------------------------------------                  
  def execute_dispose
      return if @layout == nil
      Graphics.freeze
      @music_list_window.dispose
      if @background.bitmap != nil
         @background.bitmap.dispose
      end      
      @background.dispose
      if @background2.bitmap != nil
         @background2.bitmap.dispose
      end      
      @background2.dispose      
      @layout.bitmap.dispose
      @layout.dispose
      @layout = nil
      @layout2.bitmap.dispose
      @layout2.dispose      
      @now_playing.bitmap.dispose
      @now_playing.dispose
      if CHARACTER_SPRITE
         @character.bitmap.dispose
         @character.dispose
         @character_image.dispose
      end   
      RPG::BGM.stop
      BattleManager.replay_bgm_and_bgs
  end
  
#--------------------------------------------------------------------------
# ● Hide_Layout
#--------------------------------------------------------------------------                       
  def hide_layout
      Sound.play_ok
      @w_visible = @w_visible == true ? false : true
      @fade_time = @w_visible ? @fade_max : 0
      @layout.visible = @w_visible
      if CHARACTER_SPRITE
         @character.visible = @w_visible
      end  
  end   
  
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------                  
  def update
      update_commands
      update_animation
  end

#--------------------------------------------------------------------------
# ● Update Animation
#--------------------------------------------------------------------------                     
  def update_animation
      @now_playing.opacity += 2
      @now_playing.ox += 1
      update_list_fade
      update_character_animation
      update_background_animation
  end  

#--------------------------------------------------------------------------
# ● Update Background Animation
#--------------------------------------------------------------------------                       
  def update_background_animation
      @background.opacity += 1
      @background2.opacity += 1
      @background.ox += BACKGROUND_SCROLL_SPEED[0]
      @background.oy += BACKGROUND_SCROLL_SPEED[1]   
  end
      
#--------------------------------------------------------------------------
# ● Update Character Animation
#--------------------------------------------------------------------------                       
  def update_character_animation
      return if !CHARACTER_SPRITE or @stop
      @character_animation_speed += 1
      if @character_animation_speed > CHARACTER_ANIMATION_SPEED
         @character_animation_speed = 0
         @character_index += 1
         @character_index = 0 if @character_index >= @character_frame_max
         make_character_bitmap   
      end
  end

#--------------------------------------------------------------------------
# ● Make Character_bitmap
#--------------------------------------------------------------------------                        
  def make_character_bitmap
      @character.bitmap.clear
      src_rect_back = Rect.new(@character_width * @character_index, 0,@character_width,@character_image.height)
      @character.bitmap.blt(0,0, @character_image, src_rect_back)  
  end

#--------------------------------------------------------------------------
# ● Update List Fade
#--------------------------------------------------------------------------                       
  def update_list_fade
      @fade_time = @fade_max if moved?
      slide_speed = 5
      fade_speed = 3
      if @fade_time > 0
         @fade_time -= 1
         @layout2.opacity += fade_speed * 2
         @music_list_window.contents_opacity += fade_speed * 2
         if @music_list_window.x < @music_list_window_org[0]
            @music_list_window.x += slide_speed * 2
            @layout2.x += slide_speed * 2
            if @music_list_window.x >= @music_list_window_org[0]
               @music_list_window.x = @music_list_window_org[0]
               @layout2.x = @layout_org_position[0]
            end  
         end
      else
         @music_list_window.x -= slide_speed
         @music_list_window.contents_opacity -= fade_speed
         @layout2.x -= slide_speed
         @layout2.opacity -= fade_speed
         if @music_list_window.x < -544
            @music_list_window.x = -544
            @music_list_window.contents_opacity = 0
            @layout2.x = -544
            @layout2.opacity = 0         
          end  
      end
  end  

#--------------------------------------------------------------------------
# ● Moved?
#--------------------------------------------------------------------------                       
  def moved?
      return true if Input.trigger?(:C)
      return true if Input.trigger?(:B)
      return true if Input.trigger?(:X)
      return true if Input.trigger?(:R)
      return true if Input.trigger?(:L)
      return true if Input.press?(Input.dir4)
      return false
  end  
  
#--------------------------------------------------------------------------
# ● Update Commands
#--------------------------------------------------------------------------                     
  def update_commands
      @music_list_window.update
      if Input.trigger?(:B)
         return_to_scene
      elsif Input.trigger?(:C)
         play_song
      elsif Input.trigger?(:X)
         stop_song
      elsif Input.trigger?(:Y)
         hide_layout
      end  
  end
  
#--------------------------------------------------------------------------
# ● Return to Scene
#--------------------------------------------------------------------------                           
  def return_to_scene
      return if @fade_time == 0 and @layout2.opacity == 0
      Sound.play_cancel
      SceneManager.return
  end
      
#--------------------------------------------------------------------------
# ● index_changed?
#--------------------------------------------------------------------------                        
  def index_changed?
      if @old_index != @music_list_window.index
         @old_index = @music_list_window.index
         return true
      end  
      return false
  end  
  
#--------------------------------------------------------------------------
# ● Play Song
#--------------------------------------------------------------------------                       
  def play_song
      return if $game_system.music_book_list.size == 0
      return if @fade_time == 0 and @layout2.opacity == 0
      if $game_system.music_book_list[@music_list_window.index][1]
         if index_changed? or @stop
            Sound.play_ok            
            @stop = false
            Audio.bgm_play("Audio/BGM/" +  song_name, 100, 100) rescue nil
            make_background
            make_now_playing
          end  
      else
         Sound.play_buzzer
      end      
  end  
  
#--------------------------------------------------------------------------
# ● Stop Song
#--------------------------------------------------------------------------                        
  def stop_song
      Sound.play_ok
      @stop = true
      RPG::BGM.fade(3 * 1000)
      make_now_playing(true)   
  end  
end

if MOG_MUSIC_BOX::MENU_COMMAND
#==============================================================================
# ■ Window Menu Command
#==============================================================================
class Window_MenuCommand < Window_Command  
  
#------------------------------------------------------------------------------
# ● Add Main Commands
#------------------------------------------------------------------------------     
  alias mog_musicbox_add_main_commands add_main_commands
  def add_main_commands
      mog_musicbox_add_main_commands
      add_command(MOG_MUSIC_BOX::MENU_COMMAND_NAME, :musicbox, main_commands_enabled)
  end
end   

#==============================================================================
# ■ Scene Menu
#==============================================================================
class Scene_Menu < Scene_MenuBase
  
#------------------------------------------------------------------------------
# ● Create Command Windows
#------------------------------------------------------------------------------      
   alias mog_musicbox_create_command_window create_command_window
   def create_command_window
       mog_musicbox_create_command_window
       @command_window.set_handler(:musicbox,     method(:Music_Box))
   end
   
#------------------------------------------------------------------------------
# ● Music Box
#------------------------------------------------------------------------------        
   def Music_Box
       SceneManager.call(Scene_Music_Box)
   end

end   

end

$mog_rgss3_music_box = true

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21701
在线时间
9422 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

2
发表于 2014-1-23 23:31:53 | 只看该作者
脚本貌似只支持放在你游戏工程目录下的那些音乐,
修改80行的RTP_PATH为你系统的RTP目录后支持RTP包含的音乐
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2012-10-3
帖子
25
3
 楼主| 发表于 2014-1-24 09:25:49 | 只看该作者
喵呜喵5 发表于 2014-1-23 23:31
脚本貌似只支持放在你游戏工程目录下的那些音乐,
修改80行的RTP_PATH为你系统的RTP目录后支持RTP包含的音 ...

这个位置我也改过几次,但没成功,您能说得具体一点吗?我改的是安装目录下bgm所在的文件位置还改过工程文件下的bgm所在文件夹,但都不行,这个应该怎么改啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
476 小时
注册时间
2011-3-22
帖子
46
4
发表于 2014-1-24 11:04:43 | 只看该作者
这个脚本显示当前工程BGM文件夹下的音乐,但一开始的时候全是无法播放的,名字也不会显示,你在游戏中每播放一首它就解锁一首,但就我自已的使用情况看,它只能自动解锁文件名为英文的音乐,反正中文和日文是绝对读不出来的,要手动解锁。

评分

参与人数 1星屑 +132 收起 理由
熊喵酱 + 132 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
33 小时
注册时间
2012-10-3
帖子
25
5
 楼主| 发表于 2014-1-24 22:02:38 | 只看该作者
muyumuyulnny 发表于 2014-1-24 11:04
这个脚本显示当前工程BGM文件夹下的音乐,但一开始的时候全是无法播放的,名字也不会显示,你在游戏中每播 ...

您能说一下手动解锁的方法吗?,如果智能识别英文,那改个名字倒是可以了吧
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
476 小时
注册时间
2011-3-22
帖子
46
6
发表于 2014-1-25 00:07:56 | 只看该作者
palpal5 发表于 2014-1-24 22:02
您能说一下手动解锁的方法吗?,如果智能识别英文,那改个名字倒是可以了吧 ...

解锁所有音乐 ,用脚本
  1. for i in 0...$game_system.music_book_list.size
  2.     $game_system.music_book_list[i][1] = true
  3.     end
  4.     SceneManager.call(Scene_Music_Box)
复制代码
脚本和事件脚本都可以这样用。
如果是解锁某一首的话,
  1. $game_system.music_book_list[你要解锁的音乐ID][1] = true
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-29 07:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表