Project1

标题: 如何读取存档的游戏时间 [打印本页]

作者: hijl1990    时间: 2016-9-29 10:49
标题: 如何读取存档的游戏时间
本帖最后由 hijl1990 于 2016-9-29 11:59 编辑

就是如何读取各存档的游戏时间,再进行判断。
我举个例子,我想做个判定,就是存档1的游戏时间大于存档2的游戏时间时,这样的效果。
请问能做到吗?
作者: 七重    时间: 2016-9-29 11:27
本帖最后由 七重 于 2016-9-29 14:32 编辑
  1. class Scene_Save < Scene_File
  2.   alias krst_on_save_success on_save_success
  3.   def on_save_success
  4.     miao = 1
  5.     Sound.play_save
  6.     $game_variables[@index+miao] = Graphics.frame_count
  7.     return_scene
  8.   end
  9. end
复制代码


这样可以将游戏的进行帧数记录在变量里,每60帧是1秒。

如果想记录现实时间的话就是:
$game_variables[n]=Time.now.hour
$game_variables[m]=Time.now.min
这样的脚本。


假如说,想要知道存档1的游戏时间是否比存档2长。

那就是事件指令→条件分支,判断变量0001的数值 是否大于 变量0002 。

默认是将存档1的游戏时长存在变量1中。
作者: 喵呜喵5    时间: 2016-9-29 20:56
两种思路,未测试

1.直接读取存档的数据
原生脚本的话,使用
  1. DataManager.load_header(存档编号)[:playtime_s]
复制代码

可以读取存档的游戏时间数据,比较不同存档的该数据即可,考虑到这个数据是一个字符串,如果觉得涉及字符串的比较很麻烦的话,可以动 DataManager 的 make_save_header 部分,类似这样
  1. class << DataManager
  2.   alias m5_20160929_make_save_header make_save_header
  3.   def make_save_header
  4.     header = m5_20160929_make_save_header
  5.     header[:m520160929playtime] = $game_party.playtime
  6.     header
  7.   end
  8. end
复制代码

之后用
  1. DataManager.load_header(存档编号)[:m520160929playtime]
复制代码

读取即可
注意
DataManager.load_header(存档编号) 在存档不存在时返回 nil

2.额外生成一个专门用于比较的数据
给 DataManager 的 save_game_without_rescue 加一个钩子
  1. class << DataManager
  2.   alias m5_20160929_save_game_without_rescue save_game_without_rescue
  3.   def save_game_without_rescue(index)
  4.     m5_20160929_save_game_without_rescue
  5.     data = load_data('compare_data') rescue []
  6.     data[index] = $game_party.playtime
  7.     save_data(data, 'compare_data')
  8.   end
  9. end
复制代码

之后要获取存档时间的时候只要读取 compare_data 这个文件即可







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