RPGMakerMZ 云存档功能 通用方法 简单有效
·
个人记录保存
RPGMakerMZ 云存档通用方法
真正的跨平台游戏
直接说明
游戏上传到服务器时!
在 Android Windows Linux 或者鸿蒙 等等任何支持RPGMakerMZ的系统平台
输入游戏网址 选择继续游戏 游戏进度依然保留
不会因为换平台导致游戏进度丢失 不需要重新玩游戏
真正的跨平台游戏就应该如此
//=================================================================================================
// Fun_CloudSave.js
//=================================================================================================
/*:
* @target MZ
* @plugindesc 云存档功能
* @author 希夷先生
*
* @help
* 插件功能:云存档功能
*/
(() => {
let url = "http://你的域名/";
const _Scene_Title_prototype_initialize = Scene_Title.prototype.initialize;
Scene_Title.prototype.initialize = function() {
_Scene_Title_prototype_initialize.call(this);
this._cloudGlobalLoaded = true;
this.LoadGlobal();
};
const _Scene_Title_prototype_isBusy = Scene_Title.prototype.isBusy;
Scene_Title.prototype.isBusy = function() {
return _Scene_Title_prototype_isBusy.call(this) || this._cloudGlobalLoaded;
};
//配置文件适配读取
Scene_Title.prototype.LoadGlobal = function() {
StorageManager.loadObject("global")
.then(info=>{
if(!info || !Array.isArray(info) || info.length === 0){
//文件读取成功,但数据无效
DataManager._globalInfo = [null];
//console.log("读取到global,但数据无效,使用默认值", info);
}else{
DataManager._globalInfo = info;
//console.log("加载配置成功", info);
}
this._cloudGlobalLoaded = false;
})
.catch(e=>{
//文件读取失败
//console.log("global文件读取失败", e);
DataManager._globalInfo = [null];
this._cloudGlobalLoaded = false;
});
};
DataManager.removeInvalidGlobalInfo = function() {
return;
};
//保存存档数据
StorageManager.saveZip = function(saveName, zip) {
return saveData(saveName, zip);
};
//读取存档数据
StorageManager.loadZip = function(saveName) {
return loadData(saveName);
};
// 保存存档
async function saveData(saveName, zip) {
const params = new URLSearchParams();
params.append("name", saveName);
params.append("data", zip);
const res = await fetch(url + "save.php", {
method: "POST",
body: params
});
return await res.text();
}
// 读取存档
async function loadData(saveName) {
const params = new URLSearchParams();
params.append("name", saveName);
const res = await fetch(url + "load.php", {
method: "POST",
body: params
});
// 返回存档原始字符串(zip文本)
return await res.text();
}
})();
save.php
<?php
header('Content-Type: text/html; charset=utf-8');
$name = $_POST['name'];
$data = $_POST['data'];
$filePath = __DIR__ . '/' . $name . '.rmmzsave';
// FILE_USE_INCLUDE_PATH可选,LOCK_EX加文件锁防止并发写入错乱
$res = file_put_contents($filePath, $data, LOCK_EX);
if ($res === false) {
echo 'no';
}
load.php
<?php
header('Content-Type: text/html; charset=utf-8');
$name = $_POST['name'];
$filePath = __DIR__ . '/' . $name . '.rmmzsave';
// 判断文件是否存在
if (!file_exists($filePath)) {
echo 'no';
exit;
}
// 读取文件内容
$content = file_get_contents($filePath);
if ($content === false) {
echo 'no';
} else {
// 输出存档内容给前端
echo $content;
}
更多推荐




所有评论(0)