DataManager.loadMapDataX = function(mapid) { if (Number(mapid) > 0) { var mapdata; var xhr = new XMLHttpRequest(); var url = 'data/' + 'Map%1.json'.format(mapid.padZero(3)); xhr.open('GET', url,false); xhr.overrideMimeType('application/json'); xhr.onload = function() { if (xhr.status < 400) { mapdata = JSON.parse(xhr.responseText); DataManager.extractMetadata(mapdata); var array = mapdata.events; if (Array.isArray(array)) { for (var i = 0; i < array.length; i++) { var data = array[i]; if (data && data.note !== undefined) DataManager.extractMetadata(data); } } } }; xhr.send(); return mapdata; } };
DataManager.loadMapDataX = function(mapid) {
if (Number(mapid) > 0) {
var mapdata;
var xhr = new XMLHttpRequest();
var url = 'data/' + 'Map%1.json'.format(mapid.padZero(3));
xhr.open('GET', url,false);
xhr.overrideMimeType('application/json');
xhr.onload = function() {
if (xhr.status < 400) {
mapdata = JSON.parse(xhr.responseText);
DataManager.extractMetadata(mapdata);
var array = mapdata.events;
if (Array.isArray(array)) {
for (var i = 0; i < array.length; i++) {
var data = array[i];
if (data && data.note !== undefined) DataManager.extractMetadata(data);
}
}
}
};
xhr.send();
return mapdata;
}
};
写了个新函数,就是把原来mv的DataManager.loadMapData给修改了一下,新函数DataManager.loadMapDataX(地图的id)的返回结果就是获取到的地图数据。
若是要调用其数据的话,不妨可以用脚本指令写console.log(DataManager.loadMapDataX(地图的id));然后按F12查看。
例如调取5号地图id为6的事件的数据:DataManager.loadMapDataX(地图的id).events[6]。
我是在仿写glav大佬的spawnevent脚本的时候发现其只能复制指定的地图(在插件参数里设置的最多3个地图,后来明白glav大佬是在开始游戏时预载这三个地图的数据,使复制地图时速度更快),我想直接使其能复制更多数量的地图的事件(这样每次复制时都读取,会有很短的延迟或卡顿),于是我进行了修改。
若是只调用DataManager.loadMapData(地图的id),然后再输出$dataMap,那么只会得到undefined或者说现地图的地图数据。原因是此处mv是异步请求(可百度XMLHttpRequest)的,调用DataManager.loadMapData(地图的id)和输出$dataMap之间必须隔上至少20帧以上(我不清楚为什么是20帧这么长),才能在输出$dataMap时成功输出(系统得到读取指令后,读取且处理完成了后才给$dataMap赋值,所以有延迟,是异步)。但是很明显这会覆盖$dataMap,出现未知问题,所以你可以直接参考我给的函数。
新人轻喷。
|