Project1

标题: 【RGSS1~3】简易数据文件备份脚本 [打印本页]

作者: RaidenInfinity    时间: 2017-3-29 15:46
标题: 【RGSS1~3】简易数据文件备份脚本
本帖最后由 RaidenInfinity 于 2020-3-29 18:09 编辑

身为RM-er,最怕的事情就是数据文件损毁而损失非常多的进度。
RPGMaker XP, VX, VA 编辑器都有一个让人诟病的"BUG",就是会自爆。
如果编辑器程序崩溃或因为电脑死机而异常关闭,使用中的数据文件会因为写入一大堆异常数值而永久损毁。
解决方法?当然只有从备份中恢复。如果没有备份呢?GG思密达。节哀顺变。
当然备份的方法有很多种。同步网盘,拷进U盘,直接复制到硬盘的某个地方之类的。
同步网盘好是好,但是据说你们百毒实在毒得不行,没钱买SVIP连下载速度都被砍成渣渣,外面MEGA盘谷歌盘还都被墙了。
手动备份呢?嘛,如果你三天前备份了一次,那么你文件损毁了你就拿出三天前的档出来咯。三天的进度就这样没了咯。

好那么,现在我们遇到的问题就是RM编辑器会在异常退出时“销毁”数据文件。
因此,这里附上一个能自动备份数据文件的脚本。“简易数据文件备份脚本"。
运作原理嘛,就是在游戏测试运行的时候,将Data文件夹里面的所有文件复制到Data_Backup文件夹里面。
复制不是直接复制,而是先检查是否可以读取,否则坏档盖过好档可就惨了呢。

RUBY 代码复制
  1. #简易数据文件备份脚本 by RaidenInfinity
  2.  
  3. PERFORM_BACKUP = true #将此常量更改为: true - 开启备份,false - 关闭备份
  4.  
  5. #以下的代码,除非你知道你在做啥,否则别碰。
  6.  
  7. module AutoBackup
  8.  
  9.   def self.perform_backup
  10.     if Dir.glob("Data_Backup").empty? #如果检测到Data_Backup文件夹不存在
  11.       Dir.mkdir("Data_Backup") #创建Data_Backup文件夹
  12.     end  
  13.     Dir.foreach("Data/") do |item| #遍历所有Data文件夹内的文件
  14.       next if item == "." || item == ".." #如果不是文件就跳过
  15.       File.open("Data/"  + item,"rb") do |file|
  16.         begin
  17.           m = Marshal.load(file)
  18.           File.open("Data_Backup/" + item,"wb") do |sfile|
  19.             Marshal.dump(m,sfile)
  20.           end  
  21.         rescue
  22.           p (item + "读取失败!请从备份中恢复!") #显示讯息(VA需开控制台才能看到)
  23.         end
  24.       end
  25.     end
  26.   end
  27.  
  28. end
  29.  
  30. AutoBackup.perform_backup if PERFORM_BACKUP && ($DEBUG || $TEST) #如果开启备份而且是测试运行模式中,就执行备份


请参考我签名档内的插件脚本安装教程。XP,VX,VA都差不多的。
安装了此脚本之后,只要测试运行游戏就能启动备份。
如果有很多个地图导致每次备份都需要很长的一段时间,请按照脚本内的指示,设置关闭或开启备份。
发布游戏时,可以移除这个脚本,毕竟这脚本只对制作过程起到帮助。

注意:如果第一次执行备份跳出读取失败(文件没问题),而且Data_Backup文件夹并未创建,请手动创建该文件夹再继续。

还有就是,这只能避免因为编辑器异常退出而销毁数据文件造成的进度损失。
网盘或U盘上的备份还是得做的,以防电脑或硬盘出事又没备份结果工程毁于一旦。





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1