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

Project1

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

[已经解决] 有没有将变量写入到global.rpgsave文件的方法

[复制链接]

Lv2.观梦者

梦石
0
星屑
440
在线时间
679 小时
注册时间
2014-3-15
帖子
292

开拓者

跳转到指定楼层
1
发表于 2017-6-11 15:03:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
最近打算写一个二周目的插件,需要将一些变量(不是游戏的开关或者变量)写入到global.rpgsave中。Yanfly的我看过了,并不是写入到global.rpgsave继承的,所以想问一下大家有没有办法实现?

Lv3.寻梦者

梦石
0
星屑
1409
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

2
发表于 2017-6-11 17:34:05 | 只看该作者
一直翻一直翻会看到Datamanager有一个没用过的方法
JAVASCRIPT 代码复制
  1. DataManager.saveGlobalInfo = function(info) {
  2.     StorageManager.save(0, JSON.stringify(info));
  3. };

调用这句
JAVASCRIPT 代码复制
  1. StorageManager.save(0, JSON.stringify(info));

JSON.stringify(info)参见MDNJSON.stringify
也就是说可以把自己写一个对象用来保存一些变量然后存到global.rpgsave。。。理论上是可以的

点评

谢啦有空试一下  发表于 2017-6-11 17:57
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
440
在线时间
679 小时
注册时间
2014-3-15
帖子
292

开拓者

3
 楼主| 发表于 2017-6-12 09:58:32 | 只看该作者
铅笔描绘的思念 发表于 2017-6-11 17:34
一直翻一直翻会看到Datamanager有一个没用过的方法
DataManager.saveGlobalInfo = function(info) {
    St ...

唔,似乎不行,这样的话游戏不认为这是一个合理的存档了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1289
在线时间
127 小时
注册时间
2017-1-14
帖子
93

开拓者

4
发表于 2017-6-12 16:09:05 | 只看该作者
本帖最后由 怠惰な騎士 于 2017-6-12 17:37 编辑
sonicdonggua 发表于 2017-6-12 09:58
唔,似乎不行,这样的话游戏不认为这是一个合理的存档了


----- 2017-6-12 17:37:18

没搞错的话,RMMV使用“头信息”+“实际数据”的方式保存游戏数据。
通过DataManager.makeSavefileInfo生成头数据
通过DataManager.makeSaveContents生成实际数据

并且在DataManager.saveGameWithoutRescue中将上述两个数据分别保存到global.rpgsave和file{N}.rpgsave中。

DataManager.saveGameWithoutRescue通过“savefileId”来为globalInfo建立索引,而其中“0”这个索引是没有被用过的。
所以可以通过修改DataManager.saveGameWithoutRescue,在保存的时候,额外使用globalInfo[0]记录需要全局保存的信息。

代码参考:
JAVASCRIPT 代码复制
  1. var globalInfo = this.loadGlobalInfo() || [];
  2. globalInfo[savefileId] = this.makeSavefileInfo();
  3. globalInfo[0] = this.makeGlobalSavefileInfo(); // 假设this.makeGlobalSavefileInfo()是你所写的记录需要全局保存的信息的方法
  4. this.saveGlobalInfo(globalInfo);


如果要使用全局保存的信息,则调用DataManager.loadGlobalInfo()取[0]索引即可。

----- 旧回复

RMMV会记录游戏的进行时间以及保存过的总次数,这两个属性条是全局数据。
你可以找找看这两个数据的储存位置(大概在Game_System里),然后给储存对象添加额外属性条就行。

点评

@铅笔描绘的思念: 原来如此,谢谢指教(๑╹◡╹)ノ"  发表于 2017-6-13 12:53
1.35的mv就到pixiv4了  发表于 2017-6-13 10:40
不过我记得0是作为config.rpgsave存储的  发表于 2017-6-12 17:56
OK有空试一下  发表于 2017-6-12 17:52

评分

参与人数 1梦石 +1 收起 理由
余烬之中 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
440
在线时间
679 小时
注册时间
2014-3-15
帖子
292

开拓者

5
 楼主| 发表于 2017-6-12 20:43:53 | 只看该作者
怠惰な騎士 发表于 2017-6-12 16:09
----- 2017-6-12 17:37:18

没搞错的话,RMMV使用“头信息”+“实际数据”的方式保存游戏数据。

感谢,已经解决了

点评

..搞定了么。。正好测试搞完。。  发表于 2017-6-12 21:02
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1409
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

6
发表于 2017-6-12 20:58:48 | 只看该作者
本帖最后由 铅笔描绘的思念 于 2017-6-12 21:01 编辑

晚上看了应该没问题啊
先删了save文件夹

然后控制台试了两条没毛病;

关了游戏再开继续调用load的


但是发现 并不会保存对象名 第二次也是一样的load返回的都是Object的属性列表
也就是单纯的把对象属性保存到global.rpgsave里 就是调用一次save就覆盖掉global.rpgsave简单测试 欢迎(雾)打脸


点评

控制台居然有pixi.js的提示信息,新版MV升级了pixi库么?  发表于 2017-6-13 02:41
另外我直接声明了datamanager的一个变量,到时候事件调用直接用脚本就OK了  发表于 2017-6-12 23:17
唔,globalinfo似乎是从1开始读取的,与configmanager调用的不是一个方式哈哈  发表于 2017-6-12 23:16
傻了 不覆盖显然要load一遍存于某变量再和想存的数据一起save的=。=脑子抽了  发表于 2017-6-12 21:12
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
440
在线时间
679 小时
注册时间
2014-3-15
帖子
292

开拓者

7
 楼主| 发表于 2017-6-12 23:56:25 | 只看该作者
解决了,一个比较简单的办法就是利用DataManager.saveGlobalInfo(globalInfo)命令。以及globalinfo[0]不会用于保存存档的作用
方法:在脚本编辑中输入var globalInfo = []
globalInfo[0] = x;
DataManager.saveGlobalInfo(globalInfo);
就可以使用

点评

哈哈不错的建议  发表于 2017-6-13 10:53
建议把结论直接编辑到主题帖内容中,这样以后有别人看的话也可以直接看到答案了。  发表于 2017-6-13 02:40
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-28 23:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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