数据库的读取是用load_data从系统文件夹中读取,可能一般会想到用其反方法save_data写回去,但是如果你的修改突破了数据库999上限,或者一些值突破了系统界限,这些写回来的数据,RMXP是不认的,换句话说,这个数据库就不能再RMXP里进行编辑了。。。会提示加载不成功之类的话,严重的话导致整个工程打不开。 而且,这样的保存是釜底抽薪式的保存,如果你的修改是在剧情中进行的那种修改,下次用new game进入游戏,原来的数据也被改了。
一般来说,数据库的运行时修改随存档文件保存比较好,这样剧情中的更改不会影响新建游戏。 以下是相关的保存用代码: class Scene_Save alias sailcat_write_save_data write_save_data def write_save_data(file) sailcat_write_save_data(file) # 写入数据库 Marshal.dump($data_actors, file) Marshal.dump($data_classes, file) Marshal.dump($data_skills, file) Marshal.dump($data_items, file) Marshal.dump($data_weapons, file) Marshal.dump($data_armors, file) Marshal.dump($data_enemies, file) Marshal.dump($data_troops, file) Marshal.dump($data_states, file) Marshal.dump($data_animations, file) Marshal.dump($data_tilesets, file) Marshal.dump($data_common_events, file) Marshal.dump($data_system, file) end end class Scene_Load alias sailcat_read_save_data read_save_data def read_save_data(file) sailcat_read_save_data(file) $data_actors = Marshal.load(file) $data_classes = Marshal.load(file) $data_skills = Marshal.load(file) $data_items = Marshal.load(file) $data_weapons = Marshal.load(file) $data_armors = Marshal.load(file) $data_enemies = Marshal.load(file) $data_troops = Marshal.load(file) $data_states = Marshal.load(file) $data_animations = Marshal.load(file) $data_tilesets = Marshal.load(file) $data_common_events = Marshal.load(file) $data_system = Marshal.load(file) end end
这个脚本使用时可以灵活处理,你改了哪些对象,就保存哪些,没改的,就不存,删掉其中的对应行,但是一定要注意,save和load里面的存取对象列表,必须完全相同,不但完全相同,连顺序也要一一对应才可以。 |