【脚本】随游戏进度修改标题画面

本脚本需要搭配我的全局变量脚本共同使用
本脚本的使用范例:http://pan.baidu.com/s/1sj5SQkP
能够增强本脚本功能的插件(点击查看):
插件1-兼容薄雾年代记标题脚本

=begin
===============================================================================
  随游戏进度修改标题画面 By喵呜喵5
===============================================================================

  【说明】

  随着游戏的进行,实时修改标题画面的音乐、选项框的位置等内容
  需要搭配我的全局变量脚本共同使用

  在游戏进行中,在事件指令的脚本里输入

    m5t20150320(某个设置的名称)

  标题画面的设置便将转变为该名称所对应的设置

  (在脚本中更改某个设置后需要再次执行该指令更改的设置才会生效)

=end
$m5script ||= {};$m5script[:M5TC20150320] = 20151106
raise "需要喵呜喵5全局变量脚本的支持" unless $m5script[:M5GV20140811]
raise "喵呜喵5全局变量脚本版本过低" unless $m5script[:M5GV20140811] >= 20151106
module M5TC20150320
  SETTING = {
#==============================================================================
#  设定部分
#==============================================================================

  "DEA" =>
  {
    :x => 0,
    :y => 240,
    :opa => 0,
    :opt_draw_title => false,
  },

  "第一章" =>
  {
    :opa => 255,
    :game_title => "饭粒工程 - 第一章",
    :opt_draw_title => true,
    :title_bgm => 'Theme2',
    :title1_name => '',
    :title2_name => 'Mist',
    :y => 128,
  },

  "第二章" =>
  {
    :game_title => "饭粒工程 - 第二章",
    :opt_draw_title => true,
    :title_bgm => 'Theme3',
    :title_pitch => 120,
    :title1_name => 'Book',
    :title2_name => 'Fire',
    :x => 120,
  },

  # 在这里添加标题画面的设置,设置的格式如下:
  #
  #  "该设置的名称" =>
  #     {
  #       要设置的属性1 => 设置的内容,
  #       要设置的属性2 => 设置的内容,
  #       ...
  #     },
  #
  #(不要忘记前后的中括号以及中间和结尾的英文冒号、英文逗号、英文引号)
  #
  # 可以设置的属性如下(未设置的属性将使用默认的内容):
  #
  # :game_title       设置标题画面的游戏标题
  # :opt_draw_title   设置是否要绘制游戏标题,true 为绘制,false 为不绘制
  #
  # :title1_name 设置标题画面背景图片的文件名
  # :title2_name 设置标题画面前景图片的文件名
  #
  # :title_bgm    设置标题画面的音乐
  # :title_volume 设置标题画面音乐的音量
  # :title_pitch  设置标题画面音乐的音量
  #
  # :x    设置标题画面选择窗口的 X 坐标
  # :y    设置标题画面选择窗口的 Y 坐标
  # :opa  设置标题画面选择窗口背景的透明度
  #
  #
  # 例如,在上方增加这样一个设置
  #
  #   "miaowm5" =>
  #     {
  #       :x => 233,
  #     }
  #
  # 之后,在游戏的事件指令中执行命令:m5t20150320("miaowm5")
  # 标题画面中选择窗口的 X 坐标便会移动到 233 这个位置
  #
  # 另外,名为 "DEA" 的设置为标题画面的默认设置,
  # 修改 DEA 中的内容可以设置默认情况下标题画面选择框的位置等属性
  # 当某个名称对应的设置不存在时也将优先使用 DEA 中的设置

#==============================================================================
#  设定结束
#==============================================================================
  }
end
class Window_TitleCommand
  alias m5_20140118_initialize initialize
  def initialize
    m5_20140118_initialize
    data = M5GV20140811.get_ext[:M5TC20150320]
    self.opacity = data[:opa] if data[:opa]
    self.x = data[:x] if data[:x]
    self.y = data[:y] if data[:y]
  end
end
class RPG::System
  m5_20150320_method_name = [
    :game_title, :title1_name, :title2_name, :opt_draw_title,:title_bgm
  ]
  m5_20150320_method_name.each do |name|
    alias_name = "m5_20150320_#{name}"
    alias_method alias_name,name
    define_method name do
      value = M5GV20140811.get_ext[:M5TC20150320][name]
      if name == :title_bgm && value && value.is_a?(String)
        set = M5GV20140811.get_ext[:M5TC20150320]
        return RPG::BGM.new(value, set[:title_volume], set[:title_pitch])
      else
        return value ? value : send(alias_name)
      end
    end
  end
end
class Game_Interpreter
  def m5t20150320(name)
    setting = {
      :setting_name => name,
      :game_title => $data_system.m5_20150320_game_title,
      :opt_draw_title => $data_system.m5_20150320_opt_draw_title,
      :title1_name => $data_system.m5_20150320_title1_name,
      :title2_name => $data_system.m5_20150320_title2_name,
      :title_bgm => $data_system.m5_20150320_title_bgm,
      :title_volume => 100,
      :title_pitch => 100,
      :x => nil,
      :y => nil,
      :opa => nil,
    }
    set = M5TC20150320::SETTING["DEA"] || {}    
    setting.merge!(set)
    set = M5TC20150320::SETTING[name] || {}
    setting.merge!(set)
    M5GV20140811.set_ext(:M5TC20150320, setting)    
  end
end
M5GV20140811.get_ext[:M5TC20150320] ||= M5TC20150320::SETTING["DEA"] || {}

发表评论

电子邮件地址不会被公开。 必填项已用*标注