じ☆ve冰风 发表于 2024-2-13 19:59:43

自制存档外 数据存储插件,但是有bug 求大佬帮助!

我自己根据ConfigManager存储 音量 的原理,修改部分function写了个插件
让自己的变量存在ConfigManager.data中
,但是会出现蜜汁错误,比如说变量有一定概率没有赋值上去的情况,并且不知道如何解决

求问大佬们是否有刷新ConfigManager的方法(我觉得可能是因为这个问题)

游戏发布因为这个问题被玩家喷死了www



JS 代码
//==================================================================================================================
/*:
* @plugindesc 自定义信息储存MZ 。
*
* @author 芯☆淡茹水 零殇fan(改为mz版本)
*
* @help
* ※该插件不提供插件命令,以下全为脚本运行※
* 〓 使用方法 〓
* 1,XdRsData.week.saveWeek(key, val)
*    储存一个以 key 为标识的变量,key 必须用引号(''或"")括上。
*    val 是其储存的数值。(val 可以是数字,字符串,,,)
*    例:事件->脚本:XdRsData.week.saveWeek('周目数', 2)
*    注意:如果相同的 key 标识前面有储存,后面再储存会覆盖掉前面的。所读取的值就是后储存的值。

* 2,XdRsData.week.val(key)
*    读取以 key 为标识的所储存的值。同上,key 用引号(''或"")括上。
*    如果未储存对应的值,读取的值=> null
*    例:如果上面 方法1 储存了,那么 XdRsData.week.val('周目数')   读取的值 => 2
*

*
* 〓 用法示例 〓
* 1,读取储存的值代入游戏变量:事件 -> 变量 = 脚本:XdRsData.week.val('示例')
* 2,条件判断:事件 -> 条件 -> 脚本:XdRsData.week.val('示例') > 2
* 3,储存字符串:事件 -> 脚本:XdRsData.week.saveWeek('字符串', '这是测试')
* 4,读取字符串:事件 -> 脚本:XdRsData.week.val('字符串')    => '这是测试'
*/
//==================================================================================================================
;var XdRsData = XdRsData || {};
XdRsData.week = XdRsData.week || {};

ConfigManager.applyData = function(config) {
    this.alwaysDash = this.readFlag(config, "alwaysDash", true);
    this.commandRemember = this.readFlag(config, "commandRemember", false);
    this.touchUI = this.readFlag(config, "touchUI", true);
    this.bgmVolume = this.readVolume(config, "bgmVolume");
    this.bgsVolume = this.readVolume(config, "bgsVolume");
    this.meVolume = this.readVolume(config, "meVolume");
    this.seVolume = this.readVolume(config, "seVolume");
    this.data= config["data"];
};
ConfigManager.makeData = function() {
    const config = {};
    config.alwaysDash = this.alwaysDash;
    config.commandRemember = this.commandRemember;
    config.touchUI = this.touchUI;
    config.bgmVolume = this.bgmVolume;
    config.bgsVolume = this.bgsVolume;
    config.meVolume = this.meVolume;
    config.seVolume = this.seVolume;
      config.data=this.data;
    return config;
};

XdRsData.week.loadWeekData = function() {
      ConfigManager.load();
    var json;
    try {json = ConfigManager.data;}
    catch (e) {return null;}
    return !!json ? json : null;
};

XdRsData.week.add = function(key, val) {
    var data = !!this.loadWeekData() ? this.loadWeekData() : {};
    data = parseInt(data)+val;
    ConfigManager.data=data;
      ConfigManager.data=data;
      ConfigManager.save();
      ConfigManager.save();
      ConfigManager.applyData(ConfigManager.makeData());
      ConfigManager.load();

      XdRsData.week.val(key);
};
XdRsData.week.saveWeek = function(key, val) {
    var data = !!this.loadWeekData() ? this.loadWeekData() : {};
    data = val;
    ConfigManager.data=data;
      ConfigManager.data=data;
      ConfigManager.save();
      ConfigManager.save();
      ConfigManager.applyData(ConfigManager.makeData());
      ConfigManager.load();

      XdRsData.week.val(key);
};

XdRsData.week.val = function(key) {
    var data = this.loadWeekData();
    return (!data || data === undefined) ? null : data;
};


XdRsData.week.deleteKey = function(key) {
    if (!this.loadWeekData()) return;
    var data = this.loadWeekData();
    delete data;
    StorageManager.saveToLocalFile2('week', JSON.stringify(data));
};
XdRsData.week.ifval = function(key) {
    var data = this.loadWeekData();
    return (!data || data === undefined) ? false : data!=null?true:false;
};
XdRsData.week.ifvalis = function(key,value) {
    var data = this.loadWeekData();
    return (!data || data === undefined) ? false : data==value?true:false;
};
XdRsData.week.valset = function(key,val) {
   XdRsData.week.saveWeek(key,val);
};


StorageManager.saveToLocalFile2 = function(saveName, zip) {
    const dirPath = this.fileDirectoryPath();
    const filePath = this.filePath(saveName);
    const backupFilePath = filePath + "_";
      this.fsMkdir(dirPath);
      this.fsUnlink(backupFilePath);
      this.fsRename(filePath, backupFilePath);
      try {
            this.fsWriteFile(filePath, zip);
            this.fsUnlink(backupFilePath);
            resolve();
      } catch (e) {

      }

};
//==================================================================================================================

             本帖来自P1论坛作者79160475,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=485582若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 自制存档外 数据存储插件,但是有bug 求大佬帮助!