Project1

标题: 请教一个每隔10分钟自动存档的方法 [打印本页]

作者: taeckle    时间: 2020-5-2 18:56
标题: 请教一个每隔10分钟自动存档的方法
本帖最后由 taeckle 于 2020-5-2 19:31 编辑

我想做一个自动存档的脚本,游戏每进行10分钟就自动存一次档,自动档放到第9号位置,
目前想到了各种强制无法存档的情况,比如在菜单禁止的情况下,在存档禁止的情况,在战斗中禁止存档,在剧情对话时禁止存档,

请问大家做自动存档脚本还有哪些需要注意的地方呢?



诸位要是有现成的自动存档脚本可以也发一份给我吗? 多谢了!
作者: MCCF    时间: 2020-5-2 20:45
先提供一个思路吧。
通过Time.now或Graphics.frame_count获取时间,如Graphics.frame_count / Graphics.frame_rate即可获取当前游戏进行的秒数(这也是默认脚本的做法)。
使用某个变量记录Graphics.frame_count / Graphics.frame_rate的值,如果发现变量发生变化表示需要存档,于是:
  1. file = File.open("Save9.rxdata", "wb")
  2. characters = []
  3. for i in 0...$game_party.actors.size
  4.   actor = $game_party.actors[i]
  5.   characters.push([actor.character_name, actor.character_hue])
  6. end
  7. Marshal.dump(characters, file)
  8. Marshal.dump(Graphics.frame_count, file)
  9. $game_system.save_count += 1
  10. $game_system.magic_number = $data_system.magic_number
  11. Marshal.dump($game_system, file)
  12. Marshal.dump($game_switches, file)
  13. Marshal.dump($game_variables, file)
  14. Marshal.dump($game_self_switches, file)
  15. Marshal.dump($game_screen, file)
  16. Marshal.dump($game_actors, file)
  17. Marshal.dump($game_party, file)
  18. Marshal.dump($game_troop, file)
  19. Marshal.dump($game_map, file)
  20. Marshal.dump($game_player, file)
复制代码

执行上述脚本来进行存档。
作者: SailCat    时间: 2020-5-3 03:02
本帖最后由 SailCat 于 2020-5-3 03:03 编辑

完全不需要改游戏脚本系统,因为并行公共事件是一个事件分配一个解释器,在独占事件中会挂起,在菜单中会挂起,在战斗中会挂起,因此用并行事件就可以了

公共事件内容如下:处理是并行,开关是一个游戏开始时恒开的开关
脚本:@wait_count = 23999
         return false
条件分歧:not ($game_system.save_disabled or $game_system.menu_disabled)
       脚本:Scene_Save.new.write_save_data("Save9.rxdata")
分歧结束

解释:第一句是把自动执行间隔设置为10分钟,并且返回等待(脚本返回false不是bug是feature,只要你知道怎么用这个功能)
第二句就是当菜单或存档没有禁止时,执行存档到save9的操作





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