Project1

标题: 可以用事件直接存/读档(理论上支持无限存档) [打印本页]

作者: 九幽鬼少    时间: 2014-6-2 15:34
标题: 可以用事件直接存/读档(理论上支持无限存档)
本帖最后由 九幽鬼少 于 2014-6-5 20:24 编辑

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

RUBY 代码复制
  1. =begin
  2.  
  3. By   九幽鬼少
  4.  
  5. 使用方法
  6.  
  7. 存档(直接用事件脚本):
  8.  
  9. Save.save(存档位置)
  10.  
  11. 读档(直接用事件脚本):
  12.  
  13. Load.load(存档位置)
  14.  
  15. =end
  16.  
  17. module Save     
  18.   def self.save(index = nil)
  19.     @filename = "Save#{index}.rxdata" unless index.nil?
  20.     file = File.open(@filename, "wb")
  21.     characters = []
  22.     for i in 0...$game_party.actors.size
  23.       actor = $game_party.actors[i]
  24.       characters.push([actor.character_name, actor.character_hue])
  25.     end
  26.     Marshal.dump(characters, file)
  27.     Marshal.dump(Graphics.frame_count, file)
  28.     $game_system.save_count += 1
  29.     $game_system.magic_number = $data_system.magic_number
  30.     Marshal.dump($game_system, file)
  31.     Marshal.dump($game_switches, file)
  32.     Marshal.dump($game_variables, file)
  33.     Marshal.dump($game_self_switches, file)
  34.     Marshal.dump($game_screen, file)
  35.     Marshal.dump($game_actors, file)
  36.     Marshal.dump($game_party, file)
  37.     Marshal.dump($game_troop, file)
  38.     Marshal.dump($game_map, file)
  39.     Marshal.dump($game_player, file)
  40.     file.close
  41.   end
  42. end
  43. module Load   
  44.   def self.load(index = nil)
  45.     @filename = "Save#{index}.rxdata" unless index.nil?
  46.     file = File.open(@filename, "rb")
  47.     characters = Marshal.load(file)
  48.     Graphics.frame_count = Marshal.load(file)
  49.     $game_system        = Marshal.load(file)
  50.     $game_switches      = Marshal.load(file)
  51.     $game_variables     = Marshal.load(file)
  52.     $game_self_switches = Marshal.load(file)
  53.     $game_screen        = Marshal.load(file)
  54.     $game_actors        = Marshal.load(file)
  55.     $game_party         = Marshal.load(file)
  56.     $game_troop         = Marshal.load(file)
  57.     $game_map           = Marshal.load(file)
  58.     $game_player        = Marshal.load(file)
  59.     if $game_system.magic_number != $data_system.magic_number
  60.       $game_map.setup($game_map.map_id)
  61.       $game_player.center($game_player.x, $game_player.y)
  62.     end
  63.     $game_party.refresh
  64.     file.close
  65.     $game_system.bgm_play($game_system.playing_bgm)
  66.     $game_system.bgs_play($game_system.playing_bgs)
  67.     $game_map.update
  68.     $scene = Scene_Map.new
  69.   end
  70. end

作者: Im剑侠客    时间: 2014-6-2 18:27
很好用的说,不错不错,在某些重要的操作之后存读档就有意思了。
作者: fux2    时间: 2014-6-2 18:38
save和load的所属模块不应该相同吗……为什么会用上2个命名空间。
作者: 九幽鬼少    时间: 2014-6-2 19:04
save和load的所属模块不应该相同吗……为什么会用上2个命名空间。

嗯嗯 分开来有助于记忆 Save.save括号内再加个存档位置 方便额
不过 fux2版主 说了 我就改改{:6_403:}
RUBY 代码复制
  1. =begin
  2.  
  3. By   九幽鬼少
  4.  
  5. 使用方法
  6.  
  7. 存档(直接用事件脚本):
  8.  
  9. System.save(存档位置)
  10.  
  11. 读档(直接用事件脚本):
  12.  
  13. System.load(存档位置)
  14.  
  15. =end
  16.  
  17. module System     
  18.   def self.save(index = nil)
  19.     @filename = "Save#{index}.rxdata" unless index.nil?
  20.     file = File.open(@filename, "wb")
  21.     characters = []
  22.     for i in 0...$game_party.actors.size
  23.       actor = $game_party.actors[i]
  24.       characters.push([actor.character_name, actor.character_hue])
  25.     end
  26.     Marshal.dump(characters, file)
  27.     Marshal.dump(Graphics.frame_count, file)
  28.     $game_system.save_count += 1
  29.     $game_system.magic_number = $data_system.magic_number
  30.     Marshal.dump($game_system, file)
  31.     Marshal.dump($game_switches, file)
  32.     Marshal.dump($game_variables, file)
  33.     Marshal.dump($game_self_switches, file)
  34.     Marshal.dump($game_screen, file)
  35.     Marshal.dump($game_actors, file)
  36.     Marshal.dump($game_party, file)
  37.     Marshal.dump($game_troop, file)
  38.     Marshal.dump($game_map, file)
  39.     Marshal.dump($game_player, file)
  40.     file.close
  41.   end
  42.  
  43.   def self.load(index = nil)
  44.     @filename = "Save#{index}.rxdata" unless index.nil?
  45.     file = File.open(@filename, "rb")
  46.     characters = Marshal.load(file)
  47.     Graphics.frame_count = Marshal.load(file)
  48.     $game_system        = Marshal.load(file)
  49.     $game_switches      = Marshal.load(file)
  50.     $game_variables     = Marshal.load(file)
  51.     $game_self_switches = Marshal.load(file)
  52.     $game_screen        = Marshal.load(file)
  53.     $game_actors        = Marshal.load(file)
  54.     $game_party         = Marshal.load(file)
  55.     $game_troop         = Marshal.load(file)
  56.     $game_map           = Marshal.load(file)
  57.     $game_player        = Marshal.load(file)
  58.     if $game_system.magic_number != $data_system.magic_number
  59.       $game_map.setup($game_map.map_id)
  60.       $game_player.center($game_player.x, $game_player.y)
  61.     end
  62.     $game_party.refresh
  63.     file.close
  64.     $game_system.bgm_play($game_system.playing_bgm)
  65.     $game_system.bgs_play($game_system.playing_bgs)
  66.     $game_map.update
  67.     $scene = Scene_Map.new
  68.   end
  69. end


作者: taroxd    时间: 2014-6-2 20:23
感叹一下VA的DataManager是如此方便的一个东西呢~

也许可以用DataManager作为命名空间?(我瞎说的……)
作者: 日月星辰    时间: 2014-6-3 18:13
有那么点意思。。。

对于事件标题,事件菜单应该有点用?
作者: 1341093574    时间: 2016-1-10 10:44
你的脚本有个问题。
我做了个事件标题,当打开读档界面的时候没有使用过的存档位置它会出现提示,说什么找不到什么s什么的文件。




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