设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2592|回复: 8
打印 上一主题 下一主题

[原创发布] Save模块 自动存档+手动永久保存变量

[复制链接]

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
跳转到指定楼层
1
发表于 2013-12-22 13:43:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x

  1. =begin

  2. by 薄凉看客

  3. Save模块

  4. 模块方法

  5. Save.save(index) 保存进度,index文档编号,默认为最后一次存档编号,
  6. 也可用此方法手动保存进度

  7. Save.wait 两次存档间隔帧(自动存档)

  8. Save.save_v(filename, variable_name) 保存变量值自动补后缀名,
  9. 如需改路径xxx/即可,用 load_data("路径+文件名") 读取值

  10. =end

  11. module Save
  12.   def self.save(index = nil)
  13.     if $game_temp.last_file_index != 0
  14.       @filename = "Save/Save#{$game_temp.last_file_index}.rxdata"
  15.     end
  16.     @filename = "Save/Save#{index}.rxdata" unless index.nil?
  17.     @filename = "Save/Save1.rxdata" if @filename.nil?
  18.     file = File.open(@filename, "wb")
  19.     characters = []
  20.     for i in 0...$game_party.actors.size
  21.       actor = $game_party.actors[i]
  22.       characters.push([actor.character_name, actor.character_hue])
  23.     end
  24.     Marshal.dump(characters, file)
  25.     Marshal.dump(Graphics.frame_count, file)
  26.     $game_system.save_count += 1
  27.     $game_system.magic_number = $data_system.magic_number
  28.     Marshal.dump($game_system, file)
  29.     Marshal.dump($game_switches, file)
  30.     Marshal.dump($game_variables, file)
  31.     Marshal.dump($game_self_switches, file)
  32.     Marshal.dump($game_screen, file)
  33.     Marshal.dump($game_actors, file)
  34.     Marshal.dump($game_party, file)
  35.     Marshal.dump($game_troop, file)
  36.     Marshal.dump($game_map, file)
  37.     Marshal.dump($game_player, file)
  38.     file.close
  39.   end
  40.   def self.wait
  41.     return 50
  42.   end
  43.   def self.save_v(*arg)
  44.     filename = arg[0] << ".rxdata"
  45.     file = File.open(filename, "wb")
  46.     Marshal.dump(arg[1], file)
  47.     file.close
  48.   end
  49. end

  50. class Scene_Map
  51.   alias update_save update
  52.   def update
  53.     @save_wait = 0 if @save_wait == nil
  54.     @save_wait += 1
  55.     Save.save if @save_wait % Save.wait == 0
  56.     update_save
  57.   end
  58. end
复制代码

评分

参与人数 1星屑 +225 收起 理由
怪蜀黍 + 225 发布奖

查看全部评分

Lv3.寻梦者

梦石
0
星屑
3583
在线时间
3065 小时
注册时间
2011-11-17
帖子
980
2
发表于 2013-12-22 22:47:34 | 只看该作者
有没有考虑到一种很特殊的情况 自动保存的时候 保存到一半突然死机 然后自动存档数据被破坏了(在数据量非常大的时候 保存需要的时间也不少的)
我觉得保存的时候应该保存到一个新档里 当保存完成后 删旧档 新档重命名 比较保险

点评

赞同 + 1  发表于 2013-12-22 22:49
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
发表于 2013-12-23 14:49:26 | 只看该作者
发现BUG!工程删了存档后存档次数没变,结果插了这个脚本就会因为找不到存档文件出错

点评

存档在Save文件夹内  发表于 2013-12-23 17:49
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42466
在线时间
7606 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

4
发表于 2013-12-25 14:00:33 | 只看该作者
yagami 发表于 2013-12-22 22:47
有没有考虑到一种很特殊的情况 自动保存的时候 保存到一半突然死机 然后自动存档数据被破坏了(在数据量非 ...

这种情况解决还是不太难的,保存的时候先保存一份备份文件(不以存档文件名保存,加个bak什么的)
保存完毕之后删掉原位,把bak移动过来。
在读档或者游戏开始的时候,检测有没有bak文件存在,存在的话尝试读取,读取失败就删掉他,读取成功就继续移动过去覆盖存档文件- -
读取失败的话原存档也在,至少保留了上一次的有效存档。
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
发表于 2013-12-28 16:31:23 | 只看该作者
fux2 发表于 2013-12-25 14:00
这种情况解决还是不太难的,保存的时候先保存一份备份文件(不以存档文件名保存,加个bak什么的)
保存完 ...

大游戏用这招可能会卡死不动,然后显示“脚本已备份”
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42466
在线时间
7606 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

6
发表于 2013-12-28 19:26:54 | 只看该作者
chd114 发表于 2013-12-28 16:31
大游戏用这招可能会卡死不动,然后显示“脚本已备份”

游戏大关存档个毛事情。
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

7
发表于 2013-12-28 19:52:45 | 只看该作者
fux2 发表于 2013-12-28 19:26
游戏大关存档个毛事情。

= =存档时间过长会挂点的···除非你机子配置特好
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42466
在线时间
7606 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

8
发表于 2013-12-28 20:23:13 | 只看该作者
chd114 发表于 2013-12-28 19:52
= =存档时间过长会挂点的···除非你机子配置特好

你啥游戏存档能存到挂起,来举个例子我看看。
为何chd大神就是这么屌?
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-1 02:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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