# 简易跨存档变量 by cupidk rays 制作 # 脚本特性: 生成的数据即便不进行存档也依旧不会消失 (制作多周目游戏) # 变量获取方法 CUPIDK::NGVAR.get_var(id) # 数据获取方法 CUPIDK::NGVAR.get_data module CUPIDK end module CUPIDK::NGVAR # 被跨存档变量占用的变量位置 VAR_RANGE = 1..100 # 这里设置一些初始的数值 ↓ # 数字类变量初始化请写在这里 SETINIT_VAR = [0] NGTIMES_VARID = 1 # 存储周目数的跨存档变量ID NGCASE_SIZE = 3 # 这里设置每次周目额外获得的仓库容量上限 SETINIT_VAR[NGTIMES_VARID] = 1 # 周目数初始化 # 各种数据类请保存在这里(如数组,哈希表等) SETINIT_DATA = { "NG_items" => {} , # 跨存档物品 } def self.init_Ngdata(name) save_data(SETINIT_DATA, name) end def self.data_set(name) init_Ngdata(name) unless FileTest.exist?(name) @Game_DataNg = load_data(name) end def self.get_data @Game_DataNg end def self.init_Ngvar(name) save_data(SETINIT_VAR, name) end def self.var_set(name) init_Ngvar(name) unless FileTest.exist?(name) @Game_VarNg = load_data(name) end def self.var_refresh(var_id, value, name = "Data/NGvar.rxdata") @Game_VarNg[var_id] = value save_data(@Game_VarNg, name) end def self.get_var(var_id) @Game_VarNg[var_id] || 0 end end class Scene_Title include CUPIDK alias :old_start_21518 :main def main NGVAR.data_set("Data/NGdata.rxdata") NGVAR.var_set("Data/NGvar.rxdata") old_start_21518 end end class Game_Variables include CUPIDK alias_method "old_var_give_21518", "[]=" def []=(var_id, value) return NGVAR.var_refresh(var_id, value) if NGVAR::VAR_RANGE === var_id old_var_give_21518(var_id, value) end alias_method "old_var_21518", "[]" def [](var_id) return NGVAR.get_var(var_id) if NGVAR::VAR_RANGE === var_id old_var_21518(var_id) end end