Project1
标题:
如何使用json文件(或者字符串)作为存档开始游戏
[打印本页]
作者:
神风炽羽
时间:
2021-1-28 00:19
标题:
如何使用json文件(或者字符串)作为存档开始游戏
这个问题是因为我在写存档存储云端时将其作为字符串存入数据库,获得这个字符串之后,我却无法将其作为存档,求教
我希望实现的是点击继续游戏按钮后使用我提供的字符串,也就是json文件作为游戏的存档,继续游戏,请问这个应该怎么写?
作者:
zths
时间:
2021-1-28 00:19
function LoadGameContents(contents){
DataManager.createGameObjects();
DataManager.extractSaveContents(JsonEx.parse(contents));
if(typeof SceneManager._scene.fadeOutAll !== "undefined"){
if(SceneManager._scene.fadeOutAll){
SceneManager._scene.fadeOutAll();
}
}
if(typeof SceneManager._scene.reloadMapIfUpdated !== "undefined"){
if(SceneManager._scene.reloadMapIfUpdated){
SceneManager._scene.reloadMapIfUpdated();
}
}
if(typeof $gameSystem.onAfterLoad !== "undefined"){
if($gameSystem.onAfterLoad){
try{
$gameSystem.onAfterLoad();
}catch(e){
console.error(e);
}
}
}
SceneManager.goto(Scene_Map);
}
LoadGameContents("json字串");
复制代码
作者:
神风炽羽
时间:
2021-1-28 12:35
zths 发表于 2021-1-28 00:28
遗憾,还是没能解决,可否再看一下,以下为我写的代码
DataManager.maxSavefiles = function () {
return 1;
};
DataManager.isAnySavefileExists = function() {
return true;
};
StorageManager.saveToLocalFile = function (savefileId, json) {
Network.instance.sendSaveJson(json);//发送至服务器
// // 数据 = LZString 压缩到基准64(json)
// var data = LZString.compressToBase64(json);
// // fs = 要求("fs")
// var fs = require('fs');
// // 目录路径 = 本地文件目录路径()
// var dirPath = this.localFileDirectoryPath();
// // 文件路径 = 本地文件路径( 保存文件id )
// var filePath = this.localFilePath(savefileId);
// //如果(不是 fs 存在(目录路径))
// if (!fs.existsSync(dirPath)) {
// //fs 建立目录(目录路径)
// fs.mkdirSync(dirPath);
// }
// //fs 写入文件(文件路径, 数据 )
// fs.writeFileSync(filePath, data);
};
Scene_Title.prototype.commandContinue = function() {//点击继续游戏的指令
function LoadGameContents(contents){
DataManager.createGameObjects();
DataManager.extractSaveContents(JsonEx.parse(contents));
if(typeof SceneManager._scene.fadeOutAll !== "undefined"){
if(SceneManager._scene.fadeOutAll){
SceneManager._scene.fadeOutAll();
}
}
if(typeof SceneManager._scene.reloadMapIfUpdated !== "undefined"){
if(SceneManager._scene.reloadMapIfUpdated){
SceneManager._scene.reloadMapIfUpdated();
}
}
if(typeof $gameSystem.onAfterLoad !== "undefined"){
if($gameSystem.onAfterLoad){
try{
$gameSystem.onAfterLoad();
}catch(e){
console.error(e);
}
}
}
SceneManager.goto(Scene_Map);
}
var json = Network.instance.saveJson;//获取字符串
LoadGameContents(json);
};
复制代码
以下为报错
TypeError: Cannot read property 'onAfterLoad' of undefined
at LoadGameContents (SfcySaveOnline.js:45)
at Scene_Title.commandContinue (SfcySaveOnline.js:57)
at Window_TitleCommand.Window_Selectable.callHandler (rpg_windows.js:902)
at Window_TitleCommand.Window_Command.callOkHandler (rpg_windows.js:1426)
at Window_TitleCommand.Window_Selectable.processOk (rpg_windows.js:1156)
at Window_TitleCommand.processOk (rpg_windows.js:5763)
at Window_TitleCommand.Window_Selectable.onTouch (rpg_windows.js:1086)
at Window_TitleCommand.Window_Selectable.processTouch (rpg_windows.js:1054)
at Window_TitleCommand.Window_Selectable.update (rpg_windows.js:986)
at rpg_core.js:7035
复制代码
获取到的字符串
"[null,{"globalId":"RPGMV","title":"test","characters":[["Actor1",0],["Actor1",0],["Actor1",0],["Actor1",0],["Actor1",0]],"faces":[["face1",5],["face1",1],["face1",2],["face1",3],["face1",4]],"playtime":"00:00:47","timestamp":1611762819517}]"
复制代码
作者:
zths
时间:
2021-1-28 17:02
本帖最后由 zths 于 2021-1-28 17:13 编辑
你这他不是游戏存档啊。。。
数据根本对不上。。
你这应该是 GlobalInfo。。
真正的存档数据是在 DataManager.saveGameWithoutRescue 里得出的。
第一行 var json = JsonEx.stringify(this.makeSaveContents());
这个json是存档
到saveToLocalFile这里的话 如果id存档不是0 那才是存档。。。
0是GlobalInfo
小于0是config。
作者:
神风炽羽
时间:
2021-1-28 17:51
zths 发表于 2021-1-28 17:02
你这他不是游戏存档啊。。。
数据根本对不上。。
你这应该是 GlobalInfo。。
我的存档机制有问题,感谢指出,已经搞定,已经将你设置为最佳答案,
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1