查看: 83|回复: 0

[转载发布] 【加工】自动备份游戏数据库

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

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元一千年八月六日(秋) | 显示全部楼层 |阅读模式
    使用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
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-14 22:33 , Processed in 0.046648 second(s), 41 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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