Project1

标题: 请问全局存档脚本(二周目)怎么扩展变量、开关? [打印本页]

作者: L7-wind    时间: 2017-12-21 08:57
标题: 请问全局存档脚本(二周目)怎么扩展变量、开关?
我利用这个全局存档脚本制作二周目之余,添加一个成就系统,
成就系统由开关或者变量控制,
我想把控制成就系统的变量、开关写进全局存档,
以便在别的周目也能看到已经拥有的成就,
请问该脚本能不能扩展多几个变量或者开关呢?
脚本

作者: huangke    时间: 2017-12-21 12:18
变量控制的话。你只需要在新周开启的时候不清理成就所在变量就好了。
新周目开启需要判断变量是否需要清零的。力量上自己需要继承的数据外其他都清零
作者: guoxiaomi    时间: 2017-12-22 11:06
本帖最后由 guoxiaomi 于 2017-12-26 23:08 编辑
  1. #=============================================================================
  2. # Global_Save
  3. #-----------------------------------------------------------------------------
  4. # 管理全局存档的模块
  5. #=============================================================================
  6. module Global_Save
  7.   # 需要全局存档的变量 ID 和开关 ID
  8.   Global_Save_Variables = [1,2,3]
  9.   Global_Save_Switches = [1,2,3]
  10.   # 存档文件名
  11.   Global_Save_Path = "Save/GSave.rxdata"
  12.   #---------------------------------------------------------------------------
  13.   # 将一个对象写入全局存档
  14.   #     object : 要写入的对象
  15.   #---------------------------------------------------------------------------
  16.   def self.save_data
  17.     # 全局存档的文件名
  18.     filename = Global_Save_Path
  19.     # 打开文件(写入模式)
  20.     file = File.open(filename, "wb")
  21.     # 将 object 写入该文件
  22.     object = {}
  23.     object[:v] = Global_Save_Variables.collect{|key| $game_variables[key]}
  24.     object[:s] = Global_Save_Switches.collect{|key| $game_switches[key]}
  25.     Marshal.dump(object, file)
  26.     # 写入完成,关闭文件
  27.     file.close
  28.   end
  29.   #---------------------------------------------------------------------------
  30.   # 读取全局存档的数据
  31.   #---------------------------------------------------------------------------
  32.   def self.load_data
  33.     # 全局存档的文件名
  34.     filename = Global_Save_Path
  35.     # 如果存在全局存档,则读取,否则什么也不做
  36.     if FileTest.exist?(filename)
  37.       # 打开文件(读取模式)
  38.       file = File.open(filename, "rb")
  39.       # 读取文件中的数据,并把它放在指定 ID 的变量当中
  40.       object = Marshal.load(file)
  41.       Global_Save_Variables.zip(object[:v]).each{|key, value| $game_variables[key] = value}
  42.       Global_Save_Switches.zip(object[:s]).each{|key, value| $game_switches[key] = value}
  43.       # 读取完成,关闭文件
  44.       file.close
  45.     end
  46.   end
  47. end
复制代码

存储全局存档:
  1. Global_Save.save_data
复制代码

读取全局存档:
  1. Global_Save.load_data
复制代码

作者: L7-wind    时间: 2017-12-26 09:06
guoxiaomi 发表于 2017-12-22 11:06
存储全局存档:
读取全局存档:

这个我知道...但是主要用法上你没有给出参考的方法、说明啊...
多了几个变量和开关,都不知道怎么选择变量进行全局储存...
一开始我以为用法是调用存储代码,就能把定义的变量、开关储存并生成一个文件,
读取也是一条读取代码就完事那种
但是我用了后就报错了
这里是读取时报的错:


这里是储存时报的错:



之后我觉得也许不是这样用...
然后自己就各种瞎试各种报错了...
这里就不给出截图和说明了...

所以请问这脚本是...怎么使用的嘛?
是我用错了?还是脚本报错了?

作者: guoxiaomi    时间: 2017-12-26 23:11
L7-wind 发表于 2017-12-26 09:06
这个我知道...但是主要用法上你没有给出参考的方法、说明啊...
多了几个变量和开关,都不知道怎么选择变 ...

我把Global写成了Globla……已经修改了。

需要
1. 新建Save文件夹
2. 先存档才能读档。

你可以参考这个范例:
Project1.zip (201.9 KB, 下载次数: 145)




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