查看: 55|回复: 0

[转载发布] 【不是创意的创意】显示当前播放的BGM和ME ver 20141127

[复制链接]
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元一千年八月六日(秋) | 显示全部楼层 |阅读模式
    感谢 @RyanBern 的那个脚本,精灵经过大量的测试把这个给糊弄出来了,而且亲测可行。
    原脚本见此链接:https://rpg.blue/thread-373864-1-1.html
    精灵增添功能:
    1.把Game_Temp下的东西挪到Game system下,以防止标题画面脚本异常。
    2.把设定统一的写在了module类里面。
    3.增加了标题画面,战斗画面,结束画面时的显示效果。
    4.拉宽了窗口为了显示长的BGM名字。
    5.可以自定义BGM和SE的字体颜色,还有是否显示的开关。
    11.25更新:
    1.修正一个方式:如果播放me的时候bgm为空的时候(这个时侯经常是放歌的时候),则一直用me的模式。否则只是用一次性模式
    2.修正一个播放me出现问题的时候的失误。
    3.增添新功能:BGM和ME同时为空的时候会不显示此窗口
    4.增添新功能:显示行数会和分割的字符行数有关。如果当行数等于1的时候,会关闭滚动功能。
    11.27更新
    1.更新地图事件播放BGM,BGS的时候没法及时更新的问题。
    2.发现有的时候没有代入BGM的问题,正在修正中。
    11.27更新
    播放完me之后没有显示BGM名称的问题,已经完美修正。
    12.19更新
    删去多余的行,修正F12的错误
    截图:
    脚本如下【请自动去掉解析字符】
    1. #==============================================================================# 本脚本来自[url=http://www.66RPG.com]www.66RPG.com[/url],使用和转载请保留此信息#==============================================================================#==============================================================================# ■ 播放BGM和ME的脚本 ver 20141127#------------------------------------------------------------------------------# 作者:精灵使者 &Ryanbarn# 用于显示正在播放的BGM和正在播放的ME(仅一次)。# 如果想分行显示(作者,轨道名)的时候,请用-分开。#==============================================================================#--------------------------------------------------------------------------# ● 设定部分#--------------------------------------------------------------------------module FAY  BGM_DISPLAY_BGM = true                      #是否显示BGM窗口  BGM_DISPLAY_ME = true                       #是否显示ME  BGM_DISPLAY_WORDS = "BGM:"                  #BGM显示用语  ME_DISPLAY_WORDS = "ME:"                    #ME显示用语  BGM_DISPLAY_X = 32                          #BGM窗口位置X坐标  BGM_DISPLAY_Y = 64                          #BGM窗口位置Y坐标  BGM_DISPLAY_Z = 300                         #BGM窗口位置Z坐标  WORD_SPLIT = /-/                            #分隔符,请修改反斜杠里里的东西  WAIT_FRAME = 40                             #等待时间  BGM_COLOR = Color.new(192,224,255,255)      #BGM的显示颜色  BGM_NAME_COLOR = Color.new(255,255,255,255) #BGM的名字显示颜色  BGM_DISPLAY_WIDTH = 500                     #BGM的宽度end#==============================================================================# ■ BGM_Display#------------------------------------------------------------------------------#  处理显示BGM的类。#==============================================================================class BGM_Display  #--------------------------------------------------------------------------  # ● 初始化对像  #--------------------------------------------------------------------------  def initialize    @bgm = nil    @me = nil    @waiting = 0    @bgm_need_refresh = false    @sprite1 = Sprite.new    @sprite2 = Sprite.new    @sprite1.bitmap = Bitmap.new(160, 32)    @sprite2.bitmap = Bitmap.new(FAY::BGM_DISPLAY_WIDTH, 224)    @sprite2.src_rect = Rect.new(0, 0, FAY::BGM_DISPLAY_WIDTH, 32)    @sprite1.visible = FAY::BGM_DISPLAY_BGM    @sprite2.visible = FAY::BGM_DISPLAY_BGM    self.x = FAY::BGM_DISPLAY_X    self.y = FAY::BGM_DISPLAY_Y    self.z = 300    @texts = []    refresh  end  #--------------------------------------------------------------------------  # ● 刷新部分  #--------------------------------------------------------------------------  def refresh    @sprite1.visible = FAY::BGM_DISPLAY_BGM    @sprite2.visible = FAY::BGM_DISPLAY_BGM    if @me != nil      #播放ME      if @me.name != ""       @sprite1.bitmap.clear       @sprite1.bitmap.font.color = FAY::BGM_COLOR       @sprite1.bitmap.draw_text(0, 0, FAY::BGM_DISPLAY_WIDTH, 32, FAY::ME_DISPLAY_WORDS)       @texts = []       @texts = @me.name.split(FAY::WORD_SPLIT)      end    elsif @bgm != nil      #播放BGM      if @bgm.name != ""       @sprite1.bitmap.clear       @sprite1.bitmap.font.color = FAY::BGM_COLOR       @sprite1.bitmap.draw_text(0, 0, FAY::BGM_DISPLAY_WIDTH, 32, FAY::BGM_DISPLAY_WORDS)       @texts = []       @texts = @bgm.name.split(FAY::WORD_SPLIT)      end    else     @sprite1.bitmap.clear     @sprite2.bitmap.clear     return    end    (0 ... @texts.size).each do |i|      draw_item(i)    end  end  #--------------------------------------------------------------------------  # ● 显示部分  #--------------------------------------------------------------------------  def draw_item(i)    x = 4    y = 32 * (2 * i + 1)    @sprite2.bitmap.fill_rect(x, y, FAY::BGM_DISPLAY_WIDTH, 32, Color.new(0,0,0,0))    @sprite2.bitmap.font.color = FAY::BGM_NAME_COLOR    @sprite2.bitmap.draw_text(x, y ,FAY::BGM_DISPLAY_WIDTH, 32, @texts[i])  end  def x=(x)    @sprite1.x = x    @sprite2.x = x  end  def y=(y)    @sprite1.y = y    @sprite2.y = y + 32  end  def z=(z)    @sprite1.z = z    @sprite2.z = z  end  def update    @sprite1.visible = FAY::BGM_DISPLAY_BGM    @sprite2.visible = FAY::BGM_DISPLAY_BGM     if $game_system.playing_me != nil      @me = $game_system.playing_me      $game_system.playing_me = nil      refresh      @sprite2.src_rect.y = @texts.size == 1 ? 32 : 0      return    end    if ($game_system.playing_bgm != @bgm or @bgm_need_refresh)      @bgm = $game_system.playing_bgm      refresh      @sprite2.src_rect.y = @texts.size == 1 ? 32 : 0      @bgm_need_refresh = false      return    end    if @texts.size == 1      if (@me != nil and @bgm != nil)        @me = nil        @bgm_need_refresh = true        refresh      end    else     if @waiting > 0       @waiting -= 1       return     end     @sprite2.src_rect.y += 1     if @sprite2.src_rect.y >= 64 * @texts.size       @sprite2.src_rect.y -= 64 * @texts.size       if (@me != nil and @bgm != nil)         @me = nil         @bgm_need_refresh = true         refresh       end     end     if @sprite2.src_rect.y % 64 == 32       @waiting = FAY::WAIT_FRAME     end    end  end  #--------------------------------------------------------------------------  # ● 释放的处理  #--------------------------------------------------------------------------  def dispose    @sprite1.bitmap.dispose    @sprite2.bitmap.dispose    @sprite1.dispose    @sprite2.dispose  endend#==============================================================================# ■ Game_System#------------------------------------------------------------------------------#  系统的必要更新。#   attr_accessor :playing_me  正在播放的ME#==============================================================================class Game_System  attr_accessor :playing_me  attr_accessor :playing_bgm  alias rb_me_play_20141124 me_play unless $@  alias rb_bgm_play_20141124 bgm_play unless $@  #--------------------------------------------------------------------------  # ● 演奏 BGM  #     bgm : 演奏的 BGM  #--------------------------------------------------------------------------  def bgm_play(bgm)   $game_system.playing_bgm = FAY::BGM_DISPLAY_BGM ? bgm : nil   rb_bgm_play_20141124(bgm)  end  def me_play(me)    $game_system.playing_me = FAY::BGM_DISPLAY_ME ? me : nil    rb_me_play_20141124(me)  endend#==============================================================================# ■ Scene_Map#------------------------------------------------------------------------------#  地图的处理部分#==============================================================================class Scene_Map  alias rb_main_20141122 main unless $@  def main    @bgm_display = BGM_Display.new     rb_main_20141122    @bgm_display.dispose  end  alias rb_update_20141122 update unless $@  def update    @bgm_display.update    rb_update_20141122  endend#==============================================================================# ■ Scene_Battle#------------------------------------------------------------------------------#  战斗的处理部分#==============================================================================class Scene_Battle  alias rb_main_20141125 main unless $@  def main    @bgm_display = BGM_Display.new    rb_main_20141125    @bgm_display.dispose  end  alias rb_update_20141125 update unless $@  def update    @bgm_display.update    rb_update_20141125  endend#==============================================================================# ■ Scene_Battle#------------------------------------------------------------------------------#  标题画面的处理部分#==============================================================================class Scene_Title  alias rb_main_20141126 main unless $@  def main    @bgm_display = BGM_Display.new     rb_main_20141126    @bgm_display.dispose  end  alias rb_update_20141126 update unless $@  def update    @bgm_display.update    rb_update_20141126  endend#==============================================================================# ■ Scene_Gameover#------------------------------------------------------------------------------#  结束画面的处理部分#==============================================================================class Scene_Gameover  alias rb_main_20141127 main unless $@  def main    @bgm_display = BGM_Display.new     rb_main_20141127    @bgm_display.dispose  end  alias rb_update_20141127 update unless $@  def update    @bgm_display.update    rb_update_20141127  endend#==============================================================================# 本脚本来自[url=http://www.66RPG.com]www.66RPG.com[/url],使用和转载请保留此信息#=============================================================================复制代码
    复制代码

                 本帖来自P1论坛作者chd114,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=374031  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-5-14 10:42 , Processed in 0.048074 second(s), 45 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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