Project1

标题: 是否有方法能知道玩家刚才有没有存档? [打印本页]

作者: Zeldashu    时间: 2021-11-3 15:22
标题: 是否有方法能知道玩家刚才有没有存档?
RM有一个默认指令是【打开存档画面】,



打开这个画面后玩家可以选择【存档】或者【右键退出】。



现在我想通过判断“玩家刚才有没有存档”来实现一个跳转效果(次级菜单和主菜单),但我发现似乎没有方法来判断玩家刚才是否有进行存档。



如果一开始一个存档也没有反而比较好办,可以用脚本获取是否有存档文件,但一想到假如玩家已经有存档了,并且是新档覆盖旧档的话,这种情况似乎无法判断。



不知道各位是否有什么好方法呢?


作者: alexncf125    时间: 2021-11-3 16:03
Scene_Save.prototype.onSaveSuccess加个処理??
作者: guoxiaomi    时间: 2021-11-3 16:03
两个办法:
1. 检查存档文件的修改时间,https://attacomsian.com/blog/nodejs-get-file-last-modified-date
2. 读取存档文本内容进行校验,https://www.hacksparrow.com/node ... hecksum-hashes.html
作者: xiamumomo    时间: 2021-11-3 16:24
主菜单和次菜单是什么=。=  标题界面?

JAVASCRIPT 代码复制
  1. Scene_Save.prototype.onSaveSuccess = function() {
  2.     SoundManager.playSave();
  3.         StorageManager.cleanBackup(this.savefileId());
  4.     this.popScene();
  5.         SceneManager.goto(Scene_Title);
  6. };

在rpg  scenes1714行(应该是那文件好像被我修改了不知道行是不是)添加SceneManager.goto(Scene_Title);是保存完后返回标题我上面已经添加了
如果是装备那些菜单就是平时esc那个(Scene_Menu)改成

作者: 仇九    时间: 2021-11-3 17:14
mv有函数可以获取最新储存的存档,然后通过记载时间戳和对比时间戳可以判断上次更新这个存档是什么时候。
我本来觉得这已经够解决了,比如在载入这个页面前记载时间戳,然后与获得的最新存档的时间戳进行对比。但想想好像比较麻烦……orz。
直接在打开这个场景时将一个开关打开,然后在正真执行存档指令的地方将这个开关关闭。然后在关闭存档页面后对这个开关进行判断……大概可以……

Screenshot_20211103_170521.jpg (343.07 KB, 下载次数: 3)

Screenshot_20211103_170521.jpg

作者: Zeldashu    时间: 2021-11-3 17:22
xiamumomo 发表于 2021-11-3 16:24
主菜单和次菜单是什么=。=  标题界面?

Scene_Save.prototype.onSaveSuccess = function() {

其实是地图上的存档点,用的选项来设置各种东西(包括打开存档画面)。考虑到玩家可能手误点进【存档页面】但不想存档,直接退出的话就是结束整个选项。玩家又要再次调查存档点才能打开选项,比较麻烦。

所以我想判断玩家刚才有没有存档,没有的话就通过标签跳转回选项开始。没想到优化这个逻辑似乎挺麻烦的……
作者: 涅炎    时间: 2021-11-3 19:11
本帖最后由 涅炎 于 2021-11-3 19:22 编辑

在事件变量设置里有一个代入存档次数。
用在呼出存档画面之前,判断一下变量应该是够用了。
作者: 仇九    时间: 2021-11-3 19:58
Zeldashu 发表于 2021-11-3 17:22
其实是地图上的存档点,用的选项来设置各种东西(包括打开存档画面)。考虑到玩家可能手误点进【存档页面 ...

上课回来了。如果是要实现这个功能的话直接用时间戳吧:

这样就实现这个功能了。
第一条脚本是:
JAVASCRIPT 代码复制
  1. this.character(0)._timeStamp = Date.now();

这条的意思是将当前的时间记载在_timeStamp 这个量上。
第二条在条件分歧里的脚本是:
JAVASCRIPT 代码复制
  1. this.character(0)._timeStamp>=DataManager.loadGlobalInfo()[DataManager.latestSavefileId()].timestamp;

读取最新保存的存档的id:用DataManager.latestSavefileId()
读取储存在save/global.rpgsave文件中有关这个最新存档的额外储存数据(非存档本体):DataManager.loadGlobalInfo()[DataManager.latestSavefileId()]
读取这个额外数据中储存这个存档的储存事件的数据:DataManager.loadGlobalInfo()[DataManager.latestSavefileId()].timestamp
然后进行比较。要是发现最新存档的储存时间在打开刚才那个存档页面之前,那说明刚才没有存档,那就跳转标签;但要是在那之后,那就说明刚才存档了,那就不跳转。
(额外:因为在关闭游戏后再载入这个存档时,地图数据会重新生成,“已经触发”这个事件的状态将被取消,所以不会出现读取该存档后又突然蹦出选项的可能。)
作者: shencao    时间: 2021-11-3 21:16
Zeldashu 发表于 2021-11-3 17:22
其实是地图上的存档点,用的选项来设置各种东西(包括打开存档画面)。考虑到玩家可能手误点进【存档页面 ...

你是选项:选项a,选项b,存档。这种感觉吗?
那我推荐你换个思路,就直接不管存没存档都再显示一遍选项,除非玩家选择了取消。这样玩家存档完想继续选择别的也很方便,手滑选错了再次选择别的也方便,只想存档的话退出整个选项也只需要再按一次取消也不耽误多少时间。我自己的选项就是这么做的,玩起来也觉得顺手~
(截图我是va,但纯事件反正是差不多的,参考!)


作者: Zeldashu    时间: 2021-11-4 13:40
shencao 发表于 2021-11-3 21:16
你是选项:选项a,选项b,存档。这种感觉吗?
那我推荐你换个思路,就直接不管存没存档都再显示一遍选项 ...

我也是这样想的,试过后发现存档本身没什么反馈,只有一个音效提示玩家存档成功了,所以我想加个文字提醒玩家刚才有没有存档成功。结果就是遇到这个帖子提到的问题了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1