| 
 使用RMXP时,有极低的几率出现游戏数据库损毁,从而导致制作进度完全丢失。所以我们要时刻记得备份游戏数据库。 
但是毕竟有的时候会忘记,这样的话,如果出现游戏数据库损毁的情况就跪了。 
所以,写这个脚本以防数据库突然损毁,在测试的时候实时备份。防患于未然。 
RUBY 代码 
[code]#============================================================================= 
# 自动备份游戏数据 Ver 1.1 
#----------------------------------------------------------------------------- 
# By : RyanBern 
#----------------------------------------------------------------------------- 
# 说明: 
# 这是一个自动备份游戏 Data 文件夹的脚本,以防止 Data 文件夹突然损坏而造成 
# 制作进度的大量损失。 
# 备份的时机为使用 RMXP 进行游戏测试的时候,每开一次游戏就会备份一次数据, 
# 如果正常打开游戏不会备份数据。具体设置请在下面的 RB::Data_Backup 进行设置。 
#============================================================================= 
module RB 
end 
moduleRB::Data_Backup 
  # 备份文件夹,可使用绝对路径或相对路径,不可设置为"Data" 
  Backup_Dir = "Backup" 
  # 启用备份,设置为 true 时自动备份 
  Activated = false 
  # 是否仅备份数据(而不备份地图) 
  Data_Only = false 
  # 最大备份数量 
  Max_Backup = 3 
end 
 
class Window_Backup < Window_Base 
  def initialize 
    super(0, 0, 240, 96) 
    self.contents = Bitmap.new(width - 32, height - 32) 
    self.x = 320 - width / 2 
    self.y = 240 - height / 2 
    @max = 1 
    @current = 0 
    refresh 
  end 
  def refresh 
    self.contents.clear 
    self.contents.draw_text(4, 0, 192, 32, "正在备份数据..") 
    self.contents.draw_text(4, 32, 64, 32, "进度") 
  end 
  def draw_bar 
    self.contents.fill_rect(64, 32 + 4, 144, 24, Color.new(255, 255, 255, 255)) 
    self.contents.fill_rect(64 + 1, 32 + 5, 142, 22, Color.new(0, 0, 0, 0)) 
    w = @max == 0 ? 140 : Integer(140.0 * @current / @max) 
    self.contents.fill_rect(64 + 2, 32 + 6, w, 20, Color.new(255, 255, 255, 255)) 
  end 
  def set(num, max) 
    @max = max 
    @current = num 
    draw_bar 
  end 
end 
 
class Scene_Title 
  def backup_data 
    unless$DEBUG && RB::Data_Backup::Activated 
      return 
    end 
    dir_name = RB::Data_Backup::Backup_Dir 
    data_dir = "Data" 
    if dir_name == data_dir 
      print"目标文件夹和原文件夹相同。无法备份。" 
      @backup_window.visible = false 
      return 
    end 
    unlessFile.exists?(dir_name) 
      Dir.mkdir(dir_name) 
    end 
    dirnames = [] 
    Dir.foreach(dir_name)do |s| 
      dirnames   |