Project1

标题: [已经解决]如何实现将不同的变量储存到不同的文件里? [打印本页]

作者: muffethb    时间: 2021-11-20 16:53
标题: [已经解决]如何实现将不同的变量储存到不同的文件里?
本帖最后由 muffethb 于 2021-11-21 15:39 编辑

想搞个删除对应文件就会改变剧情的游戏,可是全局变量脚本只能用一个,多了就会弹出”发生SystemSrackError。stack level too deep“,太痛苦了,老哥们有什么办法吗
就比如说,我想把变量001存到一个叫1的文件里,002存到叫2的文件里,以此类推
谢谢兄弟们了

QQ截图20211120165047.png (23.25 KB, 下载次数: 21)

QQ截图20211120165047.png

作者: 喵呜喵5    时间: 2021-11-20 19:42
你用的是谁的全局变量脚本?
作者: muffethb    时间: 2021-11-21 08:15
喵呜喵5 发表于 2021-11-20 19:42
你用的是谁的全局变量脚本?

您的
作者: 喵呜喵5    时间: 2021-11-21 14:53
改用这个脚本
第3、4、5、6行表示全局变量1-4分别储存在文件名 System1-4 的文件中,你可以按照自己的需要修改
变量值变动的时候会自动保存文件,每次获取变量值时会自动读取文件(因此如果你在一个并行事件中不停的判断或者修改全局变量可能会有效率问题,如果你有这个需求可以说一下,我再调整调整)

  1. class Game_Variables
  2.   M5_20211121_VAR = [
  3.     { var: 1, file: "system1.rvdata2" },
  4.     { var: 2, file: "system2.rvdata2" },
  5.     { var: 3, file: "system3.rvdata2" },
  6.     { var: 4, file: "system4.rvdata2" },
  7.   ]
  8.   alias m5_20211121_get []
  9.   alias m5_20211121_set []=
  10.   def [](variable_id)
  11.     M5_20211121_VAR.each do |v|
  12.       if v[:var] == variable_id
  13.         return load_data(v[:file]) unless Dir.glob(v[:file]).empty?
  14.       end
  15.     end
  16.     m5_20211121_get(variable_id)
  17.   end
  18.   def []=(variable_id, value)
  19.     M5_20211121_VAR.each do |v|
  20.       save_data(value, v[:file]) if v[:var] == variable_id
  21.     end
  22.     m5_20211121_set(variable_id, value)
  23.   end
  24. end
复制代码

作者: muffethb    时间: 2021-11-21 15:39
喵呜喵5 发表于 2021-11-21 14:53
改用这个脚本
第3、4、5、6行表示全局变量1-4分别储存在文件名 System1-4 的文件中,你可以按照自己的需要 ...

好的谢谢!




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