设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 7403|回复: 0
打印 上一主题 下一主题

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2424
在线时间
406 小时
注册时间
2016-2-3
帖子
755
跳转到指定楼层
1
发表于 2021-5-5 15:07:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
500星屑
我自己根据ConfigManager存储 音量 的原理,修改部分function写了个插件
让自己的变量存在ConfigManager.data中
,但是会出现蜜汁错误,比如说变量有一定概率没有赋值上去的情况,并且不知道如何解决

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

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



JS 代码复制
  1. //==================================================================================================================
  2. /*:
  3. * @plugindesc 自定义信息储存MZ 。
  4. *
  5. * @author 芯☆淡茹水 零殇fan(改为mz版本)
  6. *
  7. * @help
  8. * ※该插件不提供插件命令,以下全为脚本运行※
  9. * 〓 使用方法 〓
  10. * 1,XdRsData.week.saveWeek(key, val)
  11. *    储存一个以 key 为标识的变量,key 必须用引号(''或"")括上。
  12. *    val 是其储存的数值。(val 可以是数字,字符串,,,)
  13. *    例:事件->脚本:XdRsData.week.saveWeek('周目数', 2)
  14. *    注意:如果相同的 key 标识前面有储存,后面再储存会覆盖掉前面的。所读取的值就是后储存的值。
  15.  
  16. * 2,XdRsData.week.val(key)
  17. *    读取以 key 为标识的所储存的值。同上,key 用引号(''或"")括上。
  18. *    如果未储存对应的值,读取的值  => null
  19. *    例:如果上面 方法1 储存了,那么 XdRsData.week.val('周目数')   读取的值 => 2
  20. *
  21.  
  22. *
  23. * 〓 用法示例 〓
  24. * 1,读取储存的值代入游戏变量:事件 -> 变量 = 脚本:XdRsData.week.val('示例')
  25. * 2,条件判断:事件 -> 条件 -> 脚本:XdRsData.week.val('示例') > 2
  26. * 3,储存字符串:事件 -> 脚本:XdRsData.week.saveWeek('字符串', '这是测试')
  27. * 4,读取字符串:事件 -> 脚本:XdRsData.week.val('字符串')    => '这是测试'
  28. */
  29. //==================================================================================================================
  30. ;var XdRsData = XdRsData || {};
  31. XdRsData.week = XdRsData.week || {};
  32.  
  33. ConfigManager.applyData = function(config) {
  34.     this.alwaysDash = this.readFlag(config, "alwaysDash", true);
  35.     this.commandRemember = this.readFlag(config, "commandRemember", false);
  36.     this.touchUI = this.readFlag(config, "touchUI", true);
  37.     this.bgmVolume = this.readVolume(config, "bgmVolume");
  38.     this.bgsVolume = this.readVolume(config, "bgsVolume");
  39.     this.meVolume = this.readVolume(config, "meVolume");
  40.     this.seVolume = this.readVolume(config, "seVolume");
  41.     this.data= config["data"];
  42. };
  43. ConfigManager.makeData = function() {
  44.     const config = {};
  45.     config.alwaysDash = this.alwaysDash;
  46.     config.commandRemember = this.commandRemember;
  47.     config.touchUI = this.touchUI;
  48.     config.bgmVolume = this.bgmVolume;
  49.     config.bgsVolume = this.bgsVolume;
  50.     config.meVolume = this.meVolume;
  51.     config.seVolume = this.seVolume;
  52.         config.data=this.data;
  53.     return config;
  54. };
  55.  
  56. XdRsData.week.loadWeekData = function() {
  57.         ConfigManager.load();
  58.     var json;
  59.     try {json = ConfigManager.data;}
  60.     catch (e) {return null;}
  61.     return !!json ? json : null;
  62. };
  63.  
  64. XdRsData.week.add = function(key, val) {
  65.     var data = !!this.loadWeekData() ? this.loadWeekData() : {};
  66.     data[key] = parseInt(data[key])+val;
  67.     ConfigManager.data=data;
  68.         ConfigManager.data=data;
  69.         ConfigManager.save();
  70.         ConfigManager.save();
  71.         ConfigManager.applyData(ConfigManager.makeData());
  72.         ConfigManager.load();
  73.  
  74.         XdRsData.week.val(key);
  75. };
  76. XdRsData.week.saveWeek = function(key, val) {
  77.     var data = !!this.loadWeekData() ? this.loadWeekData() : {};
  78.     data[key] = val;
  79.     ConfigManager.data=data;
  80.         ConfigManager.data=data;
  81.         ConfigManager.save();
  82.         ConfigManager.save();
  83.         ConfigManager.applyData(ConfigManager.makeData());
  84.         ConfigManager.load();
  85.  
  86.         XdRsData.week.val(key);
  87. };
  88.  
  89. XdRsData.week.val = function(key) {
  90.     var data = this.loadWeekData();
  91.     return (!data || data[key] === undefined) ? null : data[key];
  92. };
  93.  
  94.  
  95. XdRsData.week.deleteKey = function(key) {
  96.     if (!this.loadWeekData()) return;
  97.     var data = this.loadWeekData();
  98.     delete data[key];
  99.     StorageManager.saveToLocalFile2('week', JSON.stringify(data));
  100. };
  101. XdRsData.week.ifval = function(key) {
  102.     var data = this.loadWeekData();
  103.     return (!data || data[key] === undefined) ? false : data[key]!=null?true:false;
  104. };
  105. XdRsData.week.ifvalis = function(key,value) {
  106.     var data = this.loadWeekData();
  107.     return (!data || data[key] === undefined) ? false : data[key]==value?true:false;
  108. };
  109. XdRsData.week.valset = function(key,val) {
  110.    XdRsData.week.saveWeek(key,val);
  111. };
  112.  
  113.  
  114. StorageManager.saveToLocalFile2 = function(saveName, zip) {
  115.     const dirPath = this.fileDirectoryPath();
  116.     const filePath = this.filePath(saveName);
  117.     const backupFilePath = filePath + "_";
  118.         this.fsMkdir(dirPath);
  119.         this.fsUnlink(backupFilePath);
  120.         this.fsRename(filePath, backupFilePath);
  121.         try {
  122.             this.fsWriteFile(filePath, zip);
  123.             this.fsUnlink(backupFilePath);
  124.             resolve();
  125.         } catch (e) {
  126.  
  127.         }
  128.  
  129. };
  130. //==================================================================================================================

MV/MZ Zeros魔塔样板

原创ARPG系统火爆出售中(论坛优惠价)(内含90+功能)
-------------------------------------------------------------------
*事件党*福利!本人两年的事件研究大集合

!点击上面看*事件党*详情(内含200+收集插件)



您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-20 08:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表