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

Project1

 找回密码
 注册会员
搜索

关于成就插件:実績プラグインさん脚本使用的问题 求助!

查看数: 2540 | 评论数: 6 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-6-2 19:55

正文摘要:

插件:https://torigoya.hatenadiary.jp/entry/achievement_mv 这个插件里实现了成就系统,更新公告里写了有成就删除的功能(介绍里没写) 打开看了一下,可以用指令 実績削除 来删除成就 试了一下发现一个问题 ...

回复

初学者ax 发表于 2020-6-3 10:42:19
谢谢大家!!!
开关关 发表于 2020-6-3 07:59:22
本帖最后由 开关关 于 2020-6-3 08:41 编辑

测试前把 save\achievements.rpgsave 删掉就可以了。
这个插件也提供了插件指令 実績リセット ,用于重置所有成就。


在大约428行的地方,有这样一段代码。它的作用是写入存档。
JAVASCRIPT 代码复制
  1. AchievementManager.prototype.save = function () {
  2.             if (!Achievement.settings.useGlobalSave) return;
  3.  
  4.             // [多重起動対応] 旧データとの差異があったら吸収する
  5.             var oldData = this._loadAchievements();
  6.             for (var i = 0; i < this._items.length; ++i) {
  7.                 this._achievements[i] = (oldData[i] || this._achievements[i]); // Kgg:这里逻辑有问题
  8.             }
  9.             StorageManager.save(Achievement.saveSlotID, JSON.stringify({
  10.                 achievements: this._achievements
  11.             }));
  12.         };
这段代码标注出的那一行逻辑有问题,它的意思是,当原存档中i号成就已解锁时,就保留原存档的成就,否则写入新存档的成就。但是这个逻辑存在缺陷,如果原存档中i号成就已解锁而新存档的i号成就是未解锁,它依然会保留原存档。
改进后的代码如下。其实就改了一行。
JAVASCRIPT 代码复制
  1. AchievementManager.prototype.save = function () {
  2.             if (!Achievement.settings.useGlobalSave) return;
  3.  
  4.             // [多重起動対応] 旧データとの差異があったら吸収する
  5.             var oldData = this._loadAchievements();
  6.             for (var i = 0; i < this._items.length; ++i) {
  7.                 // this._achievements[i] = (oldData[i] || this._achievements[i]); // Kgg:这里逻辑有问题
  8.                 // this._achievements[i] = (oldData[i] ? oldData[i] && this._achievements[i] : this._achievements[i]);
  9.                 this._achievements[i] = (this._achievements[i]);//Kgg:这行与上面被注释掉的那行效果相同,可以选一个使用。作者之所以搞出这个错误,似乎是为了兼容另一个插件“多重起動”,因此上面那行保留了oldData(虽然不知道意义何在)。但是仍然可能有不可预知的bug。
  10.             }
  11.             StorageManager.save(Achievement.saveSlotID, JSON.stringify({
  12.                 achievements: this._achievements
  13.             }));
  14.         };
现在逻辑变成了,无论如何写入新存档。简单粗暴地解决了问题。

点评

谢谢!  发表于 2020-6-3 10:32
moonyoulove 发表于 2020-6-3 07:26:36
你是不是看錯指令了

点评

看到儲存那邊會比較舊的新的成就數據,如果舊的存在,就還原成舊的,所以才會刪不掉把?  发表于 2020-6-3 07:35
木有,是我看錯了  发表于 2020-6-3 07:31
初学者ax 发表于 2020-6-3 00:55:39
shmily0725 发表于 2020-6-3 00:03
我有用过这个插件
但还真的没用过这个功能
好奇是什么情况需要用到这个功能 ...

主要是测试游戏的时候,因为是全局储存成就嘛,有什么改动之类的看能不能正常解锁,方便测试,全部重置成就也有些麻烦
shmily0725 发表于 2020-6-3 00:03:21
我有用过这个插件
但还真的没用过这个功能
好奇是什么情况需要用到这个功能
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-27 19:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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