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

Project1

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

[已经解决] [新手求助]如何更改存档数量,现在系统默认只有4个

[复制链接]

Lv1.梦旅人

梦石
0
星屑
864
在线时间
17 小时
注册时间
2011-12-18
帖子
3
跳转到指定楼层
1
发表于 2012-5-29 17:43:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT
现在系统默认只有4个存档位置,如果有要存更多就要覆盖原来存档,如何解决这个问题?
我大概想要10个存档位置.

谢谢!!

Lv3.寻梦者

双子人

梦石
0
星屑
3190
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

2
发表于 2012-5-29 17:56:02 | 只看该作者
本帖最后由 hys111111 于 2012-5-29 18:01 编辑

第29行更改存档页数
存档数目 = 存档页数 * 4

  1. #==============================================================================
  2. # ☆★☆ Custom Save☆★☆
  3. #------------------------------------------------------------------------------
  4. # - FantasyDR
  5. #------------------------------------------------------------------------------
  6. # MSN: [email][email protected][/email]
  7. #------------------------------------------------------------------------------
  8. # - 2006.7.18
  9. #------------------------------------------------------------------------------
  10. # 自定义存档数据排列顺序并校验存档
  11. #==============================================================================

  12. #==============================================================================
  13. # ■ Scene_File
  14. #------------------------------------------------------------------------------
  15. #  存档画面及读档画面的超级类。
  16. #==============================================================================

  17. class Scene_File
  18. #--------------------------------------------------------------------------
  19. # ● 存档密钥,请定义成自己的密钥
  20. #   密钥不同的存档将无法被读取
  21. #--------------------------------------------------------------------------
  22. SAVE_KEY = 20080125
  23. #发布自己的游戏时,请一定要把上面的数字换掉
  24. #--------------------------------------------------------------------------
  25. # ● 常量 (存档页数)
  26. #--------------------------------------------------------------------------
  27. MaxPages = 2

  28. #--------------------------------------------------------------------------
  29. # ● 初始化对像
  30. #     help_text : 帮助窗口显示的字符串
  31. #--------------------------------------------------------------------------
  32. def initialize(help_text)
  33.    @help_text = help_text
  34.    @slots = MaxPages * 4
  35. end
  36. #--------------------------------------------------------------------------
  37. # ● 主处理
  38. #--------------------------------------------------------------------------
  39. def main
  40.    # 生成帮助窗口
  41.    @help_window = Window_Help.new
  42.    @help_window.set_text(@help_text)
  43.    @file_index = $game_temp.last_file_index
  44.    # 生成存档文件窗口
  45.    @savefile_windows = []
  46.    # 选择最后操作的文件
  47.    for i in @file_index / 4 * 4..@file_index / 4 * 4 + 3
  48.      load_window(i)
  49.      @savefile_windows[i].visible = true
  50.    end
  51.    @savefile_windows[@file_index].selected = true
  52.    # 执行过渡
  53.    Graphics.transition
  54.    # 主循环
  55.    loop do
  56.      # 刷新游戏画面
  57.      Graphics.update
  58.      # 刷新输入信息
  59.      Input.update
  60.      # 刷新画面
  61.      update
  62.      # 如果画面被切换的话就中断循环
  63.      if $scene != self
  64.        break
  65.      end
  66.    end
  67.    
  68. # 准备过渡
  69.   Graphics.freeze
  70.   # 释放窗口
  71.   @help_window.dispose
  72.   for i in 0...@slots
  73.     @savefile_windows[i].dispose if @savefile_windows[i] != nil
  74.   end
  75. end
  76. #--------------------------------------------------------------------------
  77. # ● 刷新画面
  78. #--------------------------------------------------------------------------
  79. def update
  80.   # 刷新窗口
  81.   @help_window.update
  82.   for i in @file_index / 4 * 4..@file_index / 4 * 4 + 3
  83.     @savefile_windows[i].update if @savefile_windows[i].visible
  84.   end

  85.    # 按下 C 键的情况下
  86.    if Input.trigger?(Input::C)
  87.      # 调用过程 on_decision (定义继承目标)
  88.      on_decision(make_filename(@file_index))
  89.      $game_temp.last_file_index = @file_index
  90.      return
  91.    end
  92.    # 按下 B 键的情况下
  93.    if Input.trigger?(Input::B)
  94.      # 调用过程 on_cancel (定义继承目标)
  95.      on_cancel
  96.      return
  97.    end
  98.    # 按下方向键下的情况下
  99.    if Input.repeat?(Input::DOWN)
  100.      # 演奏光标 SE
  101.      $game_system.se_play($data_system.cursor_se)
  102.      # 光标向下移动
  103.      @savefile_windows[@file_index].selected = false
  104.      @file_index = (@file_index + 1) % @slots
  105.      # 翻到下一页的情况下
  106.      if @file_index % 4 == 0
  107.        for index in @file_index / 4 * 4..@file_index / 4 * 4 + 3
  108.          @savefile_windows[(index + @slots - 4) % @slots].visible = false
  109.          load_window(index)
  110.          @savefile_windows[index].visible = true
  111.        end
  112.      end
  113.      @savefile_windows[@file_index].selected = true
  114.      return
  115.    end
  116.    # 按下方向键上的情况下
  117.    if Input.repeat?(Input::UP)
  118.      # 演奏光标 SE
  119.      $game_system.se_play($data_system.cursor_se)
  120.      # 光标向上移动
  121.      @savefile_windows[@file_index].selected = false
  122.      @file_index = (@file_index + @slots - 1) % @slots
  123.      # 翻到上一页的情况下
  124.      if @file_index % 4 == 3
  125.        for index in @file_index / 4 * 4..@file_index / 4 * 4 + 3
  126.          @savefile_windows[(index + 4) % @slots].visible = false
  127.          load_window(index)
  128.          @savefile_windows[index].visible = true
  129.        end
  130.      end
  131.      @savefile_windows[@file_index].selected = true
  132.      return
  133.    end
  134.    # 按下方向键左或者 L 的情况下
  135.    if Input.repeat?(Input::LEFT) or Input.trigger?(Input::L)
  136.      # 演奏光标 SE
  137.      $game_system.se_play($data_system.cursor_se)
  138.      # 前翻一页
  139.      @savefile_windows[@file_index].selected = false
  140.      @file_index = (@file_index + @slots - 4) % @slots
  141.      for index in @file_index / 4 * 4..@file_index / 4 * 4 + 3
  142.        @savefile_windows[(index + 4) % @slots].visible = false
  143.        load_window(index)
  144.        @savefile_windows[index].visible = true
  145.      end
  146.      @savefile_windows[@file_index].selected = true
  147.      return
  148.    end
  149.    # 按下方向键右或者 R 的情况下
  150.    if Input.repeat?(Input::RIGHT) or Input.trigger?(Input::R)
  151.      # 演奏光标 SE
  152.      $game_system.se_play($data_system.cursor_se)
  153.      # 前翻一页
  154.      @savefile_windows[@file_index].selected = false
  155.      @file_index = (@file_index + 4) % @slots
  156.      for index in @file_index / 4 * 4..@file_index / 4 * 4 + 3
  157.        @savefile_windows[(index + @slots - 4) % @slots].visible = false
  158.        load_window(index)
  159.        @savefile_windows[index].visible = true
  160.      end
  161.      @savefile_windows[@file_index].selected = true
  162.      return
  163.    end
  164. end
  165. #--------------------------------------------------------------------------
  166. # ● 生成文件名
  167. #     file_index : 文件名的索引 (0~n)
  168. #--------------------------------------------------------------------------
  169. def make_filename(file_index)
  170.    return "Save#{file_index + 1}.rxdata"
  171. end
  172. #--------------------------------------------------------------------------
  173. # ● 载入当前页存档
  174. #     避免因存档位过多造成的卡壳现象
  175. #--------------------------------------------------------------------------
  176. def load_window(i)
  177.    if @savefile_windows[i] != nil
  178.      return
  179.    else
  180.      @savefile_windows[i] = Window_SaveFile.new(i, make_filename(i))
  181.    end
  182. end
  183. end

  184. #==============================================================================
  185. # ■ Scene_Load
  186. #------------------------------------------------------------------------------
  187. #  处理读档画面的类。
  188. #==============================================================================

  189. class Scene_Load < Scene_File
  190. #--------------------------------------------------------------------------
  191. # ● 初始化对像
  192. #--------------------------------------------------------------------------
  193. def initialize()#save_max = SAVE_MAX)
  194.   # 再生成临时对像
  195.   $game_temp = Game_Temp.new
  196.   # 选择存档时间最新的文件
  197.   $game_temp.last_file_index = 0
  198.   latest_time = Time.at(0)
  199.   for i in 0..7
  200.     filename = make_filename(i)
  201.     if FileTest.exist?(filename)
  202.     begin
  203.       file = Zlib::GzipReader.open(filename)
  204.     rescue
  205.       next
  206.     end
  207.     if file.mtime > latest_time
  208.       latest_time = file.mtime
  209.       $game_temp.last_file_index = i
  210.     end
  211.     file.close
  212.     end
  213.   end
  214.   super("要载入哪个文件?")#,"读取",save_max)
  215. end
  216. #--------------------------------------------------------------------------
  217. # ● 确定时的处理
  218. #--------------------------------------------------------------------------
  219. def on_decision(filename)
  220.   # 文件不存在的情况下
  221.   unless FileTest.exist?(filename)
  222.     # 演奏冻结 SE
  223.     $game_system.se_play($data_system.buzzer_se)
  224.     return
  225.   end
  226.   # 演奏读档 SE
  227.   $game_system.se_play($data_system.load_se)
  228.   # 写入存档数据
  229.   begin
  230.     file = Zlib::GzipReader.open(filename)
  231.     read_save_data(file)
  232.   rescue
  233.     # 演奏冻结 SE
  234.     $game_system.se_play($data_system.buzzer_se)
  235.     return
  236.   end
  237.   file.close
  238.   # 还原 BGM、BGS
  239.   $game_system.bgm_play($game_system.playing_bgm)
  240.   $game_system.bgs_play($game_system.playing_bgs)
  241.   # 刷新地图 (执行并行事件)
  242.   $game_map.update
  243.   # 切换到地图画面
  244.   $scene = Scene_Map.new
  245. end
  246. #--------------------------------------------------------------------------
  247. # ● 取消时的处理
  248. #--------------------------------------------------------------------------
  249. def on_cancel
  250.   # 演奏取消 SE
  251.   $game_system.se_play($data_system.cancel_se)
  252.   # 切换到标题画面
  253.   $scene = Scene_Title.new
  254. end
  255. #--------------------------------------------------------------------------
  256. # ● 读取存档数据
  257. #   file : 读取用文件对像 (已经打开)
  258. #--------------------------------------------------------------------------
  259. def read_save_data(file)
  260.   # 读取描绘存档文件用的角色数据
  261.   characters = Marshal.load(file)
  262.   # 读取测量游戏时间用画面计数
  263.   Graphics.frame_count = Marshal.load(file)
  264.   # 读取校验
  265.   crcs = Marshal.load(file)
  266.   # 读取文档字串
  267.   strings = Marshal.load(file)
  268.   # 校验检测
  269.   key = SAVE_KEY
  270.   strings.each_index do |i|
  271.     key = Zlib.crc32(strings[i],key)
  272.     unless crcs[i] == key
  273.     file.close
  274.     raise "file check error"
  275.     return
  276.     end
  277.   end
  278.   # 读取各种游戏对像
  279.   $game_system = Marshal.load(Zlib::Inflate.inflate(strings[0]))
  280.   $game_variables = Marshal.load(Zlib::Inflate.inflate(strings[1]))
  281.   $game_self_switches = Marshal.load(Zlib::Inflate.inflate(strings[2]))
  282.   $game_switches = Marshal.load(Zlib::Inflate.inflate(strings[3]))
  283.   $game_troop = Marshal.load(Zlib::Inflate.inflate(strings[4]))
  284.   $game_map = Marshal.load(Zlib::Inflate.inflate(strings[5]))
  285.   $game_player = Marshal.load(Zlib::Inflate.inflate(strings[6]))
  286.   $game_screen = Marshal.load(Zlib::Inflate.inflate(strings[7]))
  287.   $game_actors = Marshal.load(Zlib::Inflate.inflate(strings[8]))
  288.   $game_party = Marshal.load(Zlib::Inflate.inflate(strings[9]))
  289. #  $data_enemies = Marshal.load(Zlib::Inflate.inflate(strings[10]))
  290. #  $floorenemies = Marshal.load(Zlib::Inflate.inflate(strings[11]))
  291. #  $fledam = Marshal.load(Zlib::Inflate.inflate(strings[12]))
  292.   
  293.   # 魔法编号与保存时有差异的情况下
  294.   # (加入编辑器的编辑过的数据)
  295.   if $game_system.magic_number != $data_system.magic_number
  296.     # 重新装载地图
  297.     $game_map.setup($game_map.map_id)
  298.     $game_player.center($game_player.x, $game_player.y)
  299.   end
  300.   # 刷新同伴成员
  301.   $game_party.refresh
  302. end
  303. end


  304. #==============================================================================
  305. # ■ Scene_Load2
  306. #------------------------------------------------------------------------------
  307. #  处理读档画面的类。
  308. #==============================================================================

  309. class Scene_Load2 < Scene_File
  310. #--------------------------------------------------------------------------
  311. # ● 初始化对像
  312. #--------------------------------------------------------------------------
  313. def initialize()#save_max = SAVE_MAX)
  314.   # 再生成临时对像
  315.   $game_temp = Game_Temp.new
  316.   # 选择存档时间最新的文件
  317.   $game_temp.last_file_index = 0
  318.   latest_time = Time.at(0)
  319.   for i in 0..7
  320.     filename = make_filename(i)
  321.     if FileTest.exist?(filename)
  322.     begin
  323.       file = Zlib::GzipReader.open(filename)
  324.     rescue
  325.       next
  326.     end
  327.     if file.mtime > latest_time
  328.       latest_time = file.mtime
  329.       $game_temp.last_file_index = i
  330.     end
  331.     file.close
  332.     end
  333.   end
  334.   super("要载入哪个文件?")#,"读取",save_max)
  335. end
  336. #--------------------------------------------------------------------------
  337. # ● 确定时的处理
  338. #--------------------------------------------------------------------------
  339. def on_decision(filename)
  340.   # 文件不存在的情况下
  341.   unless FileTest.exist?(filename)
  342.     # 演奏冻结 SE
  343.     $game_system.se_play($data_system.buzzer_se)
  344.     return
  345.   end
  346.   # 演奏读档 SE
  347.   $game_system.se_play($data_system.load_se)
  348.   # 写入存档数据
  349.   begin
  350.     file = Zlib::GzipReader.open(filename)
  351.     read_save_data(file)
  352.   rescue
  353.     # 演奏冻结 SE
  354.     $game_system.se_play($data_system.buzzer_se)
  355.     return
  356.   end
  357.   file.close
  358.   # 还原 BGM、BGS
  359.   $game_system.bgm_play($game_system.playing_bgm)
  360.   $game_system.bgs_play($game_system.playing_bgs)
  361.   # 刷新地图 (执行并行事件)
  362.   $game_map.update
  363.   # 切换到地图画面
  364.   $scene = Scene_Map.new
  365. end
  366. #--------------------------------------------------------------------------
  367. # ● 取消时的处理
  368. #--------------------------------------------------------------------------
  369. def on_cancel
  370.   # 演奏取消 SE
  371.   $game_system.se_play($data_system.cancel_se)
  372.   # 切换到标题画面
  373.   $scene = Scene_Map.new
  374. end
  375. #--------------------------------------------------------------------------
  376. # ● 读取存档数据
  377. #   file : 读取用文件对像 (已经打开)
  378. #--------------------------------------------------------------------------
  379. def read_save_data(file)
  380.   # 读取描绘存档文件用的角色数据
  381.   characters = Marshal.load(file)
  382.   # 读取测量游戏时间用画面计数
  383.   Graphics.frame_count = Marshal.load(file)
  384.   # 读取校验
  385.   crcs = Marshal.load(file)
  386.   # 读取文档字串
  387.   strings = Marshal.load(file)
  388.   # 校验检测
  389.   key = SAVE_KEY
  390.   strings.each_index do |i|
  391.     key = Zlib.crc32(strings[i],key)
  392.     unless crcs[i] == key
  393.     file.close
  394.     raise "file check error"
  395.     return
  396.     end
  397.   end
  398.   # 读取各种游戏对像
  399.   $game_system = Marshal.load(Zlib::Inflate.inflate(strings[0]))
  400.   $game_variables = Marshal.load(Zlib::Inflate.inflate(strings[1]))
  401.   $game_self_switches = Marshal.load(Zlib::Inflate.inflate(strings[2]))
  402.   $game_switches = Marshal.load(Zlib::Inflate.inflate(strings[3]))
  403.   $game_troop = Marshal.load(Zlib::Inflate.inflate(strings[4]))
  404.   $game_map = Marshal.load(Zlib::Inflate.inflate(strings[5]))
  405.   $game_player = Marshal.load(Zlib::Inflate.inflate(strings[6]))
  406.   $game_screen = Marshal.load(Zlib::Inflate.inflate(strings[7]))
  407.   $game_actors = Marshal.load(Zlib::Inflate.inflate(strings[8]))
  408.   $game_party = Marshal.load(Zlib::Inflate.inflate(strings[9]))
  409. #  $data_enemies = Marshal.load(Zlib::Inflate.inflate(strings[10]))
  410. #  $floorenemies = Marshal.load(Zlib::Inflate.inflate(strings[11]))
  411. #  $fledam = Marshal.load(Zlib::Inflate.inflate(strings[12]))
  412.   
  413.   # 魔法编号与保存时有差异的情况下
  414.   # (加入编辑器的编辑过的数据)
  415.   if $game_system.magic_number != $data_system.magic_number
  416.     # 重新装载地图
  417.     $game_map.setup($game_map.map_id)
  418.     $game_player.center($game_player.x, $game_player.y)
  419.   end
  420.   # 刷新同伴成员
  421.   $game_party.refresh
  422. end
  423. end


  424. #==============================================================================
  425. # 自定义存档菜单
  426. #==============================================================================

  427. #==============================================================================
  428. # ■ Scene_Save
  429. #------------------------------------------------------------------------------
  430. #  处理存档画面的类。
  431. #==============================================================================

  432. class Scene_Save < Scene_File
  433. #--------------------------------------------------------------------------
  434. # ● 初始化对像
  435. #--------------------------------------------------------------------------
  436. def initialize()#save_max = SAVE_MAX)
  437.   super("要保存到这个文件吗?")#,"存入",save_max)
  438. end
  439. #--------------------------------------------------------------------------
  440. # ● 确定时的处理
  441. #--------------------------------------------------------------------------
  442. def on_decision(filename)
  443.   # 演奏存档 SE
  444.   $game_system.se_play($data_system.save_se)
  445.   # 写入存档数据
  446.   file = Zlib::GzipWriter.open(filename,9)
  447.   write_save_data(file)
  448.   file.close
  449.   # 如果被事件调用
  450.   if $game_temp.save_calling
  451.     # 清除存档调用标志
  452.     $game_temp.save_calling = false
  453.     # 切换到地图画面
  454.     $scene = Scene_Map.new
  455.     return
  456.   end
  457.   # 切换到地图画面
  458.   $scene = Scene_Map.new
  459. end
  460. #--------------------------------------------------------------------------
  461. # ● 取消时的处理
  462. #--------------------------------------------------------------------------
  463. def on_cancel
  464.   # 演奏取消 SE
  465.   $game_system.se_play($data_system.cancel_se)
  466.   # 如果被事件调用
  467.   if $game_temp.save_calling
  468.     # 清除存档调用标志
  469.     $game_temp.save_calling = false
  470.     # 切换到地图画面
  471.     $scene = Scene_Map.new
  472.     return
  473.   end
  474.   # 切换到地图画面
  475.   $scene = Scene_Map.new
  476. end
  477. #--------------------------------------------------------------------------
  478. # ● 写入存档数据
  479. #   file : 写入用文件对像 (已经打开)
  480. #--------------------------------------------------------------------------
  481. def write_save_data(file)  
  482.   # 生成描绘存档文件用的角色图形
  483.   characters = []
  484.   for i in 0...$game_party.actors.size
  485.     actor = $game_party.actors[i]
  486.     characters.push([actor.character_name, actor.character_hue,actor.id])
  487.   end

  488.   strings = []

  489.   # 写入描绘存档文件用的角色数据
  490.   Marshal.dump(characters,file)
  491.   # 写入测量游戏时间用画面计数
  492.   Marshal.dump(Graphics.frame_count,file)
  493.   # 增加 1 次存档次数
  494.   $game_system.save_count += 1
  495.   # 保存魔法编号
  496.   # (将编辑器保存的值以随机值替换)
  497.   $game_system.magic_number = $data_system.magic_number

  498.   # 写入各种游戏对像
  499.   $game_switches[4]=true#楼层第一次刷新的开关打开以便读档后刷新
  500.   
  501.   strings.push(Zlib::Deflate.deflate(Marshal.dump($game_system)))
  502.   strings.push(Zlib::Deflate.deflate(Marshal.dump($game_variables)))
  503.   strings.push(Zlib::Deflate.deflate(Marshal.dump($game_self_switches)))
  504.   strings.push(Zlib::Deflate.deflate(Marshal.dump($game_switches)))
  505.   strings.push(Zlib::Deflate.deflate(Marshal.dump($game_troop)))
  506.   strings.push(Zlib::Deflate.deflate(Marshal.dump($game_map)))
  507.   strings.push(Zlib::Deflate.deflate(Marshal.dump($game_player)))
  508.   strings.push(Zlib::Deflate.deflate(Marshal.dump($game_screen)))
  509.   strings.push(Zlib::Deflate.deflate(Marshal.dump($game_actors)))
  510.   strings.push(Zlib::Deflate.deflate(Marshal.dump($game_party)))
  511. #  strings.push(Zlib::Deflate.deflate(Marshal.dump($data_enemies)))
  512. #  strings.push(Zlib::Deflate.deflate(Marshal.dump($floorenemies)))
  513. #  strings.push(Zlib::Deflate.deflate(Marshal.dump($fledam)))
  514.   
  515.   
  516.   # 计算校验值
  517.   crcs = []
  518.   key = SAVE_KEY
  519.   strings.each do |i|
  520.     key = Zlib.crc32(i,key)
  521.     crcs.push(key)
  522.   end
  523.   Marshal.dump(crcs,file)
  524.   Marshal.dump(strings,file)
  525. end
  526. end

  527. #==============================================================================
  528. # ■ Window_SaveFile
  529. #------------------------------------------------------------------------------
  530. #  显示存档以及读档画面、保存文件的窗口。
  531. #==============================================================================

  532. class Window_SaveFile < Window_Base
  533. #--------------------------------------------------------------------------
  534. # ● 初始化对像
  535. #   file_index : 存档文件的索引 (0~n)
  536. #   filename   : 文件名
  537. #--------------------------------------------------------------------------
  538. def initialize(file_index, filename,viewport=nil)
  539.   super(0, 64 + file_index % 4 * 104, 640, 104)
  540.   self.contents = Bitmap.new(width - 32, height - 32)

  541.   @file_index = file_index
  542.   @filename = "Save#{file_index + 1}.rxdata"
  543.   @time_stamp = Time.at(0)
  544.   @file_exist = FileTest.exist?(@filename)

  545.   if @file_exist
  546.     begin
  547.     file = Zlib::GzipReader.open(filename)
  548.     @time_stamp = file.mtime
  549.     @characters = Marshal.load(file)
  550.     @frame_count = Marshal.load(file)
  551.     @total_sec = @frame_count / Graphics.frame_rate
  552.     file.close
  553.     rescue
  554.     @file_exist = false
  555.     end
  556.   end

  557.   self.refresh
  558.   @selected = false
  559. end
  560. end
复制代码
回复

使用道具 举报

Lv1.梦旅人

54酱是大笨蛋!

梦石
0
星屑
66
在线时间
1389 小时
注册时间
2011-2-23
帖子
5014
3
发表于 2012-5-29 17:56:30 | 只看该作者
去你爹的现充.去你爹的异性恋.
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 01:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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