查看: 4485|回复: 6

[原创发布] 可以用事件直接存/读档(理论上支持无限存档)

[复制链接]
梦石
0
星屑
1044
在线时间
750 小时
注册时间
2013-2-15
回帖
82

开拓者

发表于 2014-6-2 15:34:20 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 九幽鬼少 于 2014-6-5 20:24 编辑

直接用事件脚本来存/读档
使用方法
存档(直接用事件脚本):
Save.save(存档位置)
读档(直接用事件脚本):
Load.load(存档位置)

[pre lang="ruby" line="1"]=begin

By   九幽鬼少

使用方法

存档(直接用事件脚本):

Save.save(存档位置)

读档(直接用事件脚本):

Load.load(存档位置)

=end

module Save     
  def self.save(index = nil)
    @filename = "Save#{index}.rxdata" unless index.nil?
    file = File.open(@filename, "wb")
    characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      characters.push([actor.character_name, actor.character_hue])
    end
    Marshal.dump(characters, file)
    Marshal.dump(Graphics.frame_count, file)
    $game_system.save_count += 1
    $game_system.magic_number = $data_system.magic_number
    Marshal.dump($game_system, file)
    Marshal.dump($game_switches, file)
    Marshal.dump($game_variables, file)
    Marshal.dump($game_self_switches, file)
    Marshal.dump($game_screen, file)
    Marshal.dump($game_actors, file)
    Marshal.dump($game_party, file)
    Marshal.dump($game_troop, file)
    Marshal.dump($game_map, file)
    Marshal.dump($game_player, file)
    file.close
  end
end
module Load   
  def self.load(index = nil)
    @filename = "Save#{index}.rxdata" unless index.nil?
    file = File.open(@filename, "rb")
    characters = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables     = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
    if $game_system.magic_number != $data_system.magic_number
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    $game_party.refresh
    file.close
    $game_system.bgm_play($game_system.playing_bgm)
    $game_system.bgs_play($game_system.playing_bgs)
    $game_map.update
    $scene = Scene_Map.new
  end
end


[/pre]

评分

参与人数 2星屑 +17 收起 理由
1341093574 + 10 精品文章
欠K罗琳 + 7 好用

查看全部评分

梦石
0
星屑
8026
在线时间
1051 小时
注册时间
2012-4-3
回帖
1270

开拓者

发表于 2014-6-2 18:27:13 来自手机 | 显示全部楼层
很好用的说,不错不错,在某些重要的操作之后存读档就有意思了。
回复

使用道具 举报

老黄鸡

梦石
4
星屑
45707
在线时间
7948 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2014-6-2 18:38:12 | 显示全部楼层
save和load的所属模块不应该相同吗……为什么会用上2个命名空间。

评分

参与人数 1星屑 +5 收起 理由
九幽鬼少 + 5 塞糖

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
1044
在线时间
750 小时
注册时间
2013-2-15
回帖
82

开拓者

 楼主| 发表于 2014-6-2 19:04:51 | 显示全部楼层
save和load的所属模块不应该相同吗……为什么会用上2个命名空间。

嗯嗯 分开来有助于记忆 Save.save括号内再加个存档位置 方便额
不过 fux2版主 说了 我就改改{:6_403:}
[pre lang="ruby" line="1"]=begin

By   九幽鬼少

使用方法

存档(直接用事件脚本):

System.save(存档位置)

读档(直接用事件脚本):

System.load(存档位置)

=end

module System     
  def self.save(index = nil)
    @filename = "Save#{index}.rxdata" unless index.nil?
    file = File.open(@filename, "wb")
    characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      characters.push([actor.character_name, actor.character_hue])
    end
    Marshal.dump(characters, file)
    Marshal.dump(Graphics.frame_count, file)
    $game_system.save_count += 1
    $game_system.magic_number = $data_system.magic_number
    Marshal.dump($game_system, file)
    Marshal.dump($game_switches, file)
    Marshal.dump($game_variables, file)
    Marshal.dump($game_self_switches, file)
    Marshal.dump($game_screen, file)
    Marshal.dump($game_actors, file)
    Marshal.dump($game_party, file)
    Marshal.dump($game_troop, file)
    Marshal.dump($game_map, file)
    Marshal.dump($game_player, file)
    file.close
  end
  
  def self.load(index = nil)
    @filename = "Save#{index}.rxdata" unless index.nil?
    file = File.open(@filename, "rb")
    characters = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables     = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
    if $game_system.magic_number != $data_system.magic_number
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    $game_party.refresh
    file.close
    $game_system.bgm_play($game_system.playing_bgm)
    $game_system.bgs_play($game_system.playing_bgs)
    $game_map.update
    $scene = Scene_Map.new
  end
end
[/pre]
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-6-2 20:23:11 | 显示全部楼层
感叹一下VA的DataManager是如此方便的一个东西呢~

也许可以用DataManager作为命名空间?(我瞎说的……)
回复

使用道具 举报

梦石
0
星屑
487
在线时间
908 小时
注册时间
2009-10-12
回帖
1702
发表于 2014-6-3 18:13:08 | 显示全部楼层
有那么点意思。。。

对于事件标题,事件菜单应该有点用?
回复

使用道具 举报

梦石
0
星屑
60
在线时间
257 小时
注册时间
2012-7-16
回帖
66
发表于 2016-1-10 10:44:17 | 显示全部楼层
你的脚本有个问题。
我做了个事件标题,当打开读档界面的时候没有使用过的存档位置它会出现提示,说什么找不到什么s什么的文件。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部