查看: 70|回复: 0

[转载发布] 自制存档外 数据存储插件,但是有bug 求大佬帮助!

[复制链接]
  • TA的每日心情
    开心
    2024-5-10 09:55
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元九百九十六年三月八日(春) | 显示全部楼层 |阅读模式
    我自己根据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. * 2,XdRsData.week.val(key)
    16. *    读取以 key 为标识的所储存的值。同上,key 用引号(''或"")括上。
    17. *    如果未储存对应的值,读取的值  => null
    18. *    例:如果上面 方法1 储存了,那么 XdRsData.week.val('周目数')   读取的值 => 2
    19. *
    20. *
    21. * 〓 用法示例 〓
    22. * 1,读取储存的值代入游戏变量:事件 -> 变量 = 脚本:XdRsData.week.val('示例')
    23. * 2,条件判断:事件 -> 条件 -> 脚本:XdRsData.week.val('示例') > 2
    24. * 3,储存字符串:事件 -> 脚本:XdRsData.week.saveWeek('字符串', '这是测试')
    25. * 4,读取字符串:事件 -> 脚本:XdRsData.week.val('字符串')    => '这是测试'
    26. */
    27. //==================================================================================================================
    28. ;var XdRsData = XdRsData || {};
    29. XdRsData.week = XdRsData.week || {};
    30. ConfigManager.applyData = function(config) {
    31.     this.alwaysDash = this.readFlag(config, "alwaysDash", true);
    32.     this.commandRemember = this.readFlag(config, "commandRemember", false);
    33.     this.touchUI = this.readFlag(config, "touchUI", true);
    34.     this.bgmVolume = this.readVolume(config, "bgmVolume");
    35.     this.bgsVolume = this.readVolume(config, "bgsVolume");
    36.     this.meVolume = this.readVolume(config, "meVolume");
    37.     this.seVolume = this.readVolume(config, "seVolume");
    38.     this.data= config["data"];
    39. };
    40. ConfigManager.makeData = function() {
    41.     const config = {};
    42.     config.alwaysDash = this.alwaysDash;
    43.     config.commandRemember = this.commandRemember;
    44.     config.touchUI = this.touchUI;
    45.     config.bgmVolume = this.bgmVolume;
    46.     config.bgsVolume = this.bgsVolume;
    47.     config.meVolume = this.meVolume;
    48.     config.seVolume = this.seVolume;
    49.         config.data=this.data;
    50.     return config;
    51. };
    52. XdRsData.week.loadWeekData = function() {
    53.         ConfigManager.load();
    54.     var json;
    55.     try {json = ConfigManager.data;}
    56.     catch (e) {return null;}
    57.     return !!json ? json : null;
    58. };
    59. XdRsData.week.add = function(key, val) {
    60.     var data = !!this.loadWeekData() ? this.loadWeekData() : {};
    61.     data[key] = parseInt(data[key])+val;
    62.     ConfigManager.data=data;
    63.         ConfigManager.data=data;
    64.         ConfigManager.save();
    65.         ConfigManager.save();
    66.         ConfigManager.applyData(ConfigManager.makeData());
    67.         ConfigManager.load();
    68.         XdRsData.week.val(key);
    69. };
    70. XdRsData.week.saveWeek = function(key, val) {
    71.     var data = !!this.loadWeekData() ? this.loadWeekData() : {};
    72.     data[key] = val;
    73.     ConfigManager.data=data;
    74.         ConfigManager.data=data;
    75.         ConfigManager.save();
    76.         ConfigManager.save();
    77.         ConfigManager.applyData(ConfigManager.makeData());
    78.         ConfigManager.load();
    79.         XdRsData.week.val(key);
    80. };
    81. XdRsData.week.val = function(key) {
    82.     var data = this.loadWeekData();
    83.     return (!data || data[key] === undefined) ? null : data[key];
    84. };
    85. XdRsData.week.deleteKey = function(key) {
    86.     if (!this.loadWeekData()) return;
    87.     var data = this.loadWeekData();
    88.     delete data[key];
    89.     StorageManager.saveToLocalFile2('week', JSON.stringify(data));
    90. };
    91. XdRsData.week.ifval = function(key) {
    92.     var data = this.loadWeekData();
    93.     return (!data || data[key] === undefined) ? false : data[key]!=null?true:false;
    94. };
    95. XdRsData.week.ifvalis = function(key,value) {
    96.     var data = this.loadWeekData();
    97.     return (!data || data[key] === undefined) ? false : data[key]==value?true:false;
    98. };
    99. XdRsData.week.valset = function(key,val) {
    100.    XdRsData.week.saveWeek(key,val);
    101. };
    102. StorageManager.saveToLocalFile2 = function(saveName, zip) {
    103.     const dirPath = this.fileDirectoryPath();
    104.     const filePath = this.filePath(saveName);
    105.     const backupFilePath = filePath + "_";
    106.         this.fsMkdir(dirPath);
    107.         this.fsUnlink(backupFilePath);
    108.         this.fsRename(filePath, backupFilePath);
    109.         try {
    110.             this.fsWriteFile(filePath, zip);
    111.             this.fsUnlink(backupFilePath);
    112.             resolve();
    113.         } catch (e) {
    114.         }
    115. };
    116. //==================================================================================================================
    复制代码

                 本帖来自P1论坛作者79160475,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=485582  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-5-20 10:59 , Processed in 0.060957 second(s), 41 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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