查看: 3035|回复: 2

[有事请教] 求帮我改一个地图合并插件里面的一个东西

[复制链接]
梦石
0
星屑
1225
在线时间
564 小时
注册时间
2014-11-30
回帖
126
发表于 2018-5-25 23:54:10 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 309988769 于 2018-5-25 23:57 编辑

这个地图合并插件里面设置了滚动类型·地图平铺·强调外观步数·BGM自动演奏·BGS自动演奏*战斗背景设置- 禁止冲刺设置·远景设置都同步于第一张地图,如果我是用双远景插件的话,就成了所有合并在一起的大地图全部是显示第一个小地图的远景了,能不能帮我改一下,远景设置不同步第一个地图,谢谢大佬
[pre lang="javascript"]/=============================================================================
// 複数のマップを繋げて1つの大きなマップにするプラグイン
// FTKR_ConnectingMapGenerator.js
// プラグインNo : 83
// 作成者     : フトコロ
// 作成日     : 2018/04/22
// 最終更新日   : 2018/04/28
// バージョン   : v1.2.0
//=============================================================================

var Imported = Imported || {};
Imported.FTKR_CMG = true;

var FTKR = FTKR || {};
FTKR.CMG = FTKR.CMG || {};

//=============================================================================
/*:
* @plugindesc v1.2.0 将多个地图连接成一张大地图的插件
* @author フトコロ
*
* @param 連結マップの横サイズ
* @desc 横向连接的地图数量。 你可以在游戏中改变它。
* @default 2
* @type number
* @min 0
*
* @param 連結マップの縦サイズ
* @desc 垂直连接的地图数量。 你可以在游戏中改变它。
* @default 2
* @type number
* @min 0
*
* @help
*-----------------------------------------------------------------------------
* 概要
*-----------------------------------------------------------------------------
* 您可以连接多个地图并将其显示为一张大地图。
 *
  *在合并后的地图中,为每个地图设置的事件也可以单独执行。
  *但是,需要注意,因为连接后事件的ID在映射中发生了变化。
*
*
*-----------------------------------------------------------------------------
* 設定方法
*-----------------------------------------------------------------------------
* 1.将此插件添加到“插件管理器(插件管理)”
  *请。
*
*
*-----------------------------------------------------------------------------
* 如何连接地图
*-----------------------------------------------------------------------------
* 首先,您可以设置垂直和水平连接多少个地图来生成地图。
 *
  *有以下两种设定方法。
  * - 垂直和水平件的初始值由插件参数设置。
  *·执行以下插件命令并为每个位置移动进行设置。
 *
  *插件命令
  * * []不用于实际输入
*
* CMG_级联地图大小[水平地图数量] [垂直地图数量]
* CMG_CONNECTING_MAP_SIZE [cols] [lines]
*
*    水平地图数量(cols)
  *:更改要水平连接的地图数量。
  你可以通过指定* \ v [n]来引用变量n的值。
*
*    垂直地图数量(线条)
  *:更改垂直链接地图的数量。
  你可以通过指定* \ v [n]来引用变量n的值。
*
*
* 接下来,执行下面的插件命令并指定要连接的地图ID。
  *同时,可以多次输入相同的地图ID。
* ※[]は実際の入力に使用しません
*
*
* CMG_地图连接[地图1] [地图2] [地图3] [地图4] ...
* CMG_CONNECTING_MAP [map1] [map2] [map3] [map4] ...
*
*    マップ1(map1)
*         *:指定要在拼接后放置在地图左上角的地图的ID。
  *合并后的地图设置将接管地图1的设置。
  你可以通过指定* \ v [n]来引用变量n的值。
  通过从为随机零件ID n设置的多个映射ID指定* \ R [n]
  *随机选择并设定其值。
*
*    地图*(地图*)
  *:根据要连接的地图数量指定地图ID。
  *:4个地图则是2 * 2连接,3*3就需要9个地图。
  你可以通过指定* \ v [n]来引用变量n的值。
  通过从为随机零件ID n设置的多个映射ID指定* \ R [n]
  *随机选择并设定其值。
*
* ※关于随机部分ID,
*
*
* 输入示例)连接2 * 2地图时输入
  * CMG_地图连接2 3 4 5
*  CMG_CONNECTING_MAP 2 3 4 5
*
*
* 输入示例)使用变量连接2 * 1映射时的输入
*  CMG_マップ連結 \v[1] \v[2]
*  CMG_CONNECTING_MAP \v[1] \v[2]
*   ⇒变量ID 1中的值被视为地图1,变量ID 2中的值被视为地图2
  *连接。
*
*
* 在安排地图时,
  *将地图1拖到左上角,从那里到地图2,地图3,...向右。
  *达到水平地图数量的上限时,下降一级,连接地图
  *屏幕的右下角是最后一个地图。
*
* 简单的地图放置图像
*
* ・1*2の場合
*    1
*    2
*
* ・2*2の場合   ・3*2の場合
*    1 2        1 2 3
*    3 4        4 5 6
*
* ・3*3の場合
*    1 2 3
*    4 5 6
*    7 8 9
*
*
* 您也可以通过逐行分割来设置它。
  * 4 * 4随着大小的数量变大,在数据库中很难看到
  *在这里使用是很好的。
*
* CMG_地图连结分割[分割ID]地图[地图1] [地图2] [地图3] [地图4] ...
* CMG_CONNECTING_MAP SPLIT [splitId] MAP [map1] [map2] [map3] [map4] ...
*
*    分割ID(splitId)
*        :指定从0到要连接的地图的行数的值 - 1。
  *:所有行都需要设置。
*
*    マップ*(map*)
*        : 按照要连接的地图的列数指定地图ID。
  *:地图2为垂直/水平2 * 2,地图3为垂直/水平3 * 3。
  你可以通过指定* \ v [n]来引用变量n的值。
  通过从为随机零件ID n设置的多个映射ID指定* \ R [n]
  *随机选择并设定其值。
*
*
* 设置分区数据后,生成它。
*
* CMG_マップ連結 生成
* CMG_CONNECTING_MAP MAKE
*
*
* 输入示例)连接2 * 2地图时输入
*  CMG_マップ連結 分割 0 マップ 2 3
*  CMG_マップ連結 分割 1 マップ 4 5
*  CMG_マップ連結 生成
*
*  CMG_CONNECTING_MAP SPLIT 0 MAP 2 3
*  CMG_CONNECTING_MAP SPLIT 1 MAP 4 5
*  CMG_CONNECTING_MAP MAKE
*
*
* 设置拼接地图的大小和地图ID进行连接后
  *请执行位置移动事件。
 *
  *如果您选择一个要链接的地图,请在移动地点时设置地图ID和坐标
  *合并后移至该位置。
 *
  *请注意,如果多次链接了相同的地图ID,则表示首次展示位置
  *在地图上移动。
*
*
*-----------------------------------------------------------------------------
* 从连接的地图移动时
*-----------------------------------------------------------------------------
* 移动到一个地方时务必执行以下命令。
*
* CMG_マップ連結解除
* CMG_CLEAR_CONNECTING_MAP
*
*
*-----------------------------------------------------------------------------
* 拼接地图的条件
*-----------------------------------------------------------------------------
* 有必要匹配要连接的地图的宽度和高度。
 *
  *例如,连接2 * 2地图时,
 *
  * 1.使地图1和地图2的高度相同。
  * 2.使地图1和地图3具有相同的宽度。
  * 3.制作地图2和地图4的宽度相同。
  * 4.使地图3和地图4的高度相同。
 *
  *另外,所有地图都必须使用相同的拼贴集。
*
*
*-----------------------------------------------------------------------------
* 连接后的地图设置
*-----------------------------------------------------------------------------
* 合并后的地图设置(* 1)将继承“地图1”所用地图的设置。
 *
  *(* 1)地图设置接管
  *·滚动类型
  *·地图平铺
  *·强调外观步数
  *·BGM自动演奏
  *·BGS自动演奏
  *战斗背景设置
  * - 禁止冲刺设置
  *·远景设置
  *·备忘录的内容
 *
  *例如,与以下命令连接时
  * CMG_地图连接2 3 4 5
  *连接后的地图设置与地图ID 2相同。
 *
 *
  *请注意,以下设置在合并之前和之后发生变化。
 *
  *·遇到
  *·事件ID
*
*
*-----------------------------------------------------------------------------
* 合并后遇到地图
*-----------------------------------------------------------------------------
* 在每个地图中设置拼接后地图的拼接
 *它成为遭遇的综合设置。
 *
 *例如,在拼接前的地图中
 *•敌人组ID 1包含在地图1的整个区域
 * - 地图2的整个区域中的敌人组ID 2
 如果*已设置,则在连接后
 *•敌方组ID 1和敌方组ID 2
 *将开始计数。
 *
 *
 *同样在按地区设置的情况下
 *例如,在拼接前的地图中
 *·地图1的区域1中的敌方组ID 1
 *·敌方组ID 2到地图2的地区1
 *·地图3的区域2中的敌方组ID 3
 如果*已设置,则在连接后
 *•敌方组织ID 1和敌方组织ID 2
 *•链接地图区域2中的敌方组ID 3
 *将开始计数。
 *
 *这也适用于连接前在地图1中为区域2设置的区域
 *连接后,敌人组ID 3将出现。
*
*
*-----------------------------------------------------------------------------
* 合并后的地图的事件ID
*-----------------------------------------------------------------------------
* 可以在下面的脚本来获得合并后的地图的事件ID。
*
* $gameMap.cmgEventId(mapId, eventId)
*    mapId:创建事件的地图的ID(数据库上的地图)
  * eventId:创建事件的地图上的事件ID
*
* 输入示例)
*    $gameMap.cmgEventId(2, 3)
*
*
* 但是,在此活动中,您可以使用this._ eventId获取您的ID。
  *即使合并后,这一点也不会改变。
*
*
*-----------------------------------------------------------------------------
* 关于随机部件ID
*-----------------------------------------------------------------------------
* 通过在设置拼接图时将其设置为\ R [n],我们将其设置为随机部件ID n
  *从多个地图ID中选择一个随机数并设置该值。
 *
  *要设置随机部件ID,请执行以下插件命令
  *可以设置。
*
* CMG_ランダムパーツセット [パーツID] マップ [マップID] [マップID] [マップID] ...
* CMG_SET_RANDOM_PARTS [partsId] MAP [mapId] [mapId] [mapId] ...
*
*    パーツID(partsId)
*        : 0 以上の任意の値を指定します。
*        : 連結マップのマップIDを設定するときに\R[n]で指定する番号に相当します。
*
*    マップID(mapId)
*        : このセットで選ばれるマップのIDを設定します。
*        : 設定可能な数に制限はありません。
*         \v[n] と指定することで変数 n の値を参照できます。
*
*
*-----------------------------------------------------------------------------
* 本プラグインのライセンスについて(License)
*-----------------------------------------------------------------------------
* 本プラグインはMITライセンスのもとで公開しています。
* This plugin is released under the MIT License.
*
* Copyright (c) 2018 Futokoro
* http://opensource.org/licenses/mit-license.php
*
*
* プラグイン公開元
* https://github.com/futokoro/RPGMaker/blob/master/README.md
*
*
*-----------------------------------------------------------------------------
* 変更来歴
*-----------------------------------------------------------------------------
*
* v1.2.0 - 2018/04/28 : 不具合修正、機能追加
*    1. 場所移動先によって、アクターが表示されずゲームが動かなくなる不具合を修正。
*    2. 連結マップが正しく生成できない場合がある不具合を修正。
*    3. 連結マップの行ごとに分割して設定する機能を追加
*    4. ランダムに複数のマップIDから一つを設定する機能を追加。
*
* v1.1.1 - 2018/04/27 : ヘルプ修正
*    1. ヘルプの誤記修正
*    2. プラグインコマンドに変数を使用できることを追記。
*
* v1.1.0 - 2018/04/22 : 仕様変更
*    1. 連結する縦横のマップの数を設定する機能を追加。4つ以上のマップを連結可能。
*    2. マップ数の設定機能に合わせて、連結するマップIDを設定する
*       プラグインコマンドの仕様を変更。
*
* v1.0.1 - 2018/04/22 : ヘルプの誤記修正
*
* v1.0.0 - 2018/04/22 : 初版作成
*
*-----------------------------------------------------------------------------
*/
//=============================================================================
var $dataCmgMaps = [];

function Game_CmgEvent() {
    this.initialize.apply(this, arguments);
}

(function() {

    var paramParse = function(obj) {
        return JSON.parse(JSON.stringify(obj, paramReplace));
    }

    var paramReplace = function(key, value) {
        try {
            return JSON.parse(value || null);
        } catch (e) {
            return value;
        }
    };

    var setArgStr = function(arg) {
        return convertEscapeCharacters(arg);
    };

    var setArgNum = function(arg) {
        try {
            return Number(eval(setArgStr(arg)));
        } catch (e) {
            return 0;
        }
    };

    var convertEscapeCharacters = function(text) {
        text = text.replace(/\\/g, '\x1b');
        text = text.replace(/\x1b\x1b/g, '\\');
        text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
            return $gameVariables.value(parseInt(arguments[1]));
        }.bind(this));
        text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
            return $gameVariables.value(parseInt(arguments[1]));
        }.bind(this));
        text = text.replace(/\x1bR\[(\d+)\]/gi, function() {
            return parseInt(randomGetArray(FTKR.CMG.rand[parseInt(arguments[1])]));
        }.bind(this));
        return text;
    };

    //objのメモ欄から <metacode: x> の値を読み取って返す
    var readObjectMeta = function(obj, metacodes) {
        if (!obj) return false;
        var match = {};
        metacodes.some(function(metacode){
            var metaReg = new RegExp('<' + metacode + ':[ ]*(.+)>', 'i');
            match = metaReg.exec(obj.note);
            return match;
        });
        return match ? match[1] : '';
    };
   
    var randomGetArray = function(args) {
        if (Array.isArray(args)) {
            var arg = args[Math.randomInt(args.length)];
        } else {
            var arg = args;
        }
        return arg
    };

    //=============================================================================
    // プラグイン パラメータ
    //=============================================================================
    var parameters = PluginManager.parameters('FTKR_ConnectingMapGenerator');

    FTKR.CMG = {
        mapW : paramParse(parameters['連結マップの横サイズ']),
        mapH : paramParse(parameters['連結マップの縦サイズ']),
        rand : [],
    };

    //=============================================================================
    // DataManager
    //=============================================================================
    DataManager._mapLoaders = [];
    DataManager._errorUrls = [];
   
    DataManager.loadConnectingMapData = function(mapId, index) {
        if (mapId > 0) {
            var filename = 'Map%1.json'.format(mapId.padZero(3));
            this._mapLoaders[index] = ResourceHandler.createLoader('data/' + filename, this.loadConnectingDataFile.bind(this, '$dataCmgMaps', filename, index));
            this.loadConnectingDataFile('$dataCmgMaps', filename, index);
        } else {
            this.makeEmptyMap();
        }
    };

    DataManager.loadConnectingDataFile = function(name, src, index) {
        var xhr = new XMLHttpRequest();
        var url = 'data/' + src;
        xhr.open('GET', url);
        xhr.overrideMimeType('application/json');
        xhr.onload = function() {
            if (xhr.status < 400) {
                if (!window[name]) window[name] = [];
                window[name][index] = JSON.parse(xhr.responseText);
                DataManager.onConnectingLoad(window[name][index]);
            }
        };
        xhr.onerror = this._mapLoaders[index] || function() {
            DataManager._errorUrls[index] = DataManager._errorUrl || url;
        };
        window[name][index] = null;
        xhr.send();
    };

    DataManager.onConnectingLoad = function(object) {
        var array;
        this.extractMetadata(object);
        array = object.events;
        if (Array.isArray(array)) {
            for (var i = 0; i < array.length; i++) {
                var data = array;
                if (data && data.note !== undefined) {
                    this.extractMetadata(data);
                }
            }
        }
    };

    DataManager.checkCmgError = function(index) {
        if (DataManager._errorUrls[index]) {
            throw new Error('Failed to load: ' + DataManager._errorUrls[index]);
        }
    };

    DataManager.isConnectingMapsLoaded = function(arr) {
        if (Array.isArray(arr)) {
            return arr.every(function(ar, i){
                if (!$gamePlayer._connectingMaps) return true;
                var result = this.isConnectingMapLoaded(i);
                return result
            },this);
        }
        return false;
    };

    DataManager.isConnectingMapLoaded = function(index) {
        this.checkCmgError(index);
        return this.dataMap(index);
    };

    DataManager.dataMap = function(cmgMapId) {
        return $dataCmgMaps[cmgMapId];
    };

    DataManager.pushMapData = function(data, mapId, index) {
        var dataMap = this.dataMap(mapId);
        if (!!dataMap) {
            var len = dataMap.width;
            var newdata = dataMap.data.slice(index * len, (index + 1) * len);
            Array.prototype.push.apply(data, newdata);
        }
    };

    DataManager.cmgMapId = function(mapId) {
        if (!$gamePlayer._connectingMaps) return -1;
        var cmgMapId = -1;
        $gamePlayer._connectingMaps.some(function(cMap, i){
            if (cMap && cMap === mapId) {
                cmgMapId = i;
                return true;
            }
        });
        return cmgMapId;
    };

    DataManager.cmgMapW = function() {
        return this._cmgMapW || 0;
    };

    DataManager.cmgMapH = function() {
        return this._cmgMapH || 0;
    };

    //=============================================================================
    // Game_Interpreter
    //=============================================================================

    var _CMG_Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _CMG_Game_Interpreter_pluginCommand.call(this, command, args);
        if (!command.match(/CMG_(.+)/i)) return;
        command = (RegExp.$1 + '').toUpperCase();
        switch (command) {
            case '連結マップサイズ':
            case 'CONNECTING_MAP_SIZE':
                DataManager._cmgMapW = setArgNum(args[0]);
                DataManager._cmgMapH = setArgNum(args[1]);
                break;
            case 'マップ連結':
            case 'CONNECTING_MAP':
                switch(args[0].toUpperCase()) {
                    case '分割':
                    case 'SPLIT':
                        if (!$gamePlayer._splitMaps) $gamePlayer._splitMaps = [];
                        var splitId = setArgNum(args[1]);
                        switch(args[2].toUpperCase()) {
                            case 'マップ':
                            case 'MAP':
                                args = args.slice(3);
                                $gamePlayer._splitMaps[splitId] = args.map(function(arg){
                                    return setArgNum(arg);
                                });
                                break;
                        }
                        break;
                    case '生成':
                    case 'MAKE':
                        $gamePlayer._connectingMaps = [];
                        $gamePlayer._splitMaps.forEach( function(splitMap){
                            Array.prototype.push.apply($gamePlayer._connectingMaps, splitMap);
                        });
                        break;
                        break;
                    default:
                        $gamePlayer._connectingMaps = args.map(function(arg){
                            return setArgNum(arg);
                        });
                        break;
                }
                break;
            case 'ランダムパーツセット':
            case 'SET_RANDOM_PARTS':
                var partsId = setArgNum(args[0]);
                switch(args[1].toUpperCase()) {
                    case 'マップ':
                    case 'MAP':
                        args = args.slice(2);
                        FTKR.CMG.rand[partsId] = args.map(function(arg){
                            return setArgNum(arg);
                        });
                        break;
                    default:
                        FTKR.CMG.rand[partsId] = [];
                        break;
                }
                break;
            case 'マップ連結解除':
            case 'CLEAR_CONNECTING_MAP':
                $gamePlayer._connectingMaps = null;
                $gamePlayer._splitMaps = [];
                $dataCmgMaps = [];
                break;
        }
    };

    //=============================================================================
    // Game_Player
    //=============================================================================

    Game_Character.prototype.getCmgMapX = function(cmgMapId, mapX) {
        for (var i = 0; i < cmgMapId % DataManager.cmgMapW(); i++) {
            mapX += DataManager.dataMap(i).width;
        }
        return mapX;
    };

    Game_Character.prototype.getCmgMapY = function(cmgMapId, mapY) {
        var m = 0;
        if (cmgMapId >= DataManager.cmgMapW()){
            for (var i = 0; i < Math.floor(cmgMapId / DataManager.cmgMapH()); i++) {
                mapY += DataManager.dataMap(m).height;
                m += DataManager.cmgMapW();
            }
        }
        return mapY;
    };

    //=============================================================================
    // Game_Player
    //=============================================================================

    var _CMG_Game_Player_initMembers = Game_Player.prototype.initMembers;
    Game_Player.prototype.initMembers = function() {
        _CMG_Game_Player_initMembers.call(this);
        DataManager._cmgMapW = FTKR.CMG.mapW;
        DataManager._cmgMapH = FTKR.CMG.mapH;
    };

    var _CMG_Game_Player_performTransfer = Game_Player.prototype.performTransfer;
    Game_Player.prototype.performTransfer = function() {
        if (this.isTransferring()) {
            var maps = this._connectingMaps;
            if (maps) {
                var cmgMapId = DataManager.cmgMapId(this._newMapId);
                this._newX = this.getCmgMapX(cmgMapId, this._newX);
                this._newY = this.getCmgMapY(cmgMapId, this._newY);
                this._newMapId = this._connectingMaps[0];
            }
        }
        _CMG_Game_Player_performTransfer.call(this);
    };

    //=============================================================================
    // Game_CmgEvent
    //=============================================================================

    Game_CmgEvent.prototype = Object.create(Game_Event.prototype);
    Game_CmgEvent.prototype.constructor = Game_CmgEvent;

    Game_CmgEvent.prototype.initialize = function(mapId, eventId, cmgMapId) {
        this._cmgMapId = cmgMapId;
        Game_Event.prototype.initialize.call(this, mapId, eventId);
        var x = this.getCmgMapX(this._cmgMapId, this.event().x);
        var y = this.getCmgMapY(this._cmgMapId, this.event().y);
        this.locate(x, y);
        this.refresh();
    };

    //=============================================================================
    // Game_Map
    //=============================================================================

    var _CMG_Game_Map_setupEvents = Game_Map.prototype.setupEvents;
    Game_Map.prototype.setupEvents = function() {
        _CMG_Game_Map_setupEvents.call(this);
        if ($gamePlayer._connectingMaps) {
            this._events = [];
            for (var i = 0; i < $dataMap.events.length; i++) {
                if ($dataMap.events) {
                    var cmgMapId = this.cmgMapId(i);
                    this._events = new Game_CmgEvent(this._mapId, i, cmgMapId);
                }
            }
        }
    };

    Game_Map.prototype.cmgMapId = function(index) {
        if (!$gamePlayer._connectingMaps) return -1;
        var cmgMapId = -1;
        var len = 0;
        $dataCmgMaps.some(function(dataMap, i){
            if (dataMap) {
                len += dataMap.events.length;
                if (len > index) {
                    cmgMapId = i;
                    return true;
                }
            }
        });
        return cmgMapId;
    };

    Game_Map.prototype.cmgEventId = function(mapId, eventId) {
        var cmgMapId = 0;
        var num = 0;
        $gamePlayer._connectingMaps.some( function(cmapId, i){
            if (cmapId === mapId) {
                cmgMapId = i;
                return true;
            }
        });
        $dataCmgMaps.forEach( function(dataMap, i){
            if (i < $dataCmgMaps.length - 1) {
                if (cmgMapId > i) num += dataMap.events.length;
            }
        });
        return num + eventId;
    };

    //=============================================================================
    // Scene_Map
    //=============================================================================

    var _CMG_Scene_Map_create = Scene_Map.prototype.create
    Scene_Map.prototype.create = function() {
        if ($gamePlayer._connectingMaps && $gamePlayer._connectingMaps.length) {
            Scene_Base.prototype.create.call(this);
            this._transfer = $gamePlayer.isTransferring();
            $gamePlayer._connectingMaps.forEach(function(cmapId, i){
                if (cmapId > 0) DataManager.loadConnectingMapData(cmapId, i);
            });
            this._cmgMapCreate = true;
        } else {
            _CMG_Scene_Map_create.call(this);
        }
    };

    var _CMG_Scene_Map_isReady = Scene_Map.prototype.isReady;
    Scene_Map.prototype.isReady = function() {
        if ($gamePlayer._connectingMaps) {
            if (!DataManager.isConnectingMapsLoaded($gamePlayer._connectingMaps)) {
                return false;
            } else {
                if (this._cmgMapCreate) {
                    var mapId = $gamePlayer._connectingMaps[0];
                    DataManager.loadMapData(mapId);
                    this._cmgMapCreate = false;
                }
                if (!this._mapLoaded && DataManager.isMapLoaded()) {
                    if ($gamePlayer._connectingMaps) this.createConnectingMap();
                    this.onMapLoaded();
                    this._mapLoaded = true;
                }
                return this._mapLoaded && Scene_Base.prototype.isReady.call(this);
            }
        } else {
            return _CMG_Scene_Map_isReady.call(this);
        }
    };

    Scene_Map.prototype.createConnectingMap = function() {
        this.setupConnectingMapData();
        this.setupConnectingMapWidth();
        this.setupConnectingMapHeight();
        this.setupConnectingMapEvents();
        this.setupConnectingMapEncounterList();
    };

    Scene_Map.prototype.setupConnectingMapData = function() {
        var data = [];
        var mapH = DataManager.cmgMapH();
        var mapW = DataManager.cmgMapW();
        var dataMap = null;
        for (var i = 0; i < 6; i++) {
            for (var m = 0; m < mapH; m++) {
                dataMap = DataManager.dataMap(mapW * m);
                if (!!dataMap) {
                    var num = dataMap.height;
                    for (var h = num * i; h < num * (i + 1); h++) {
                        for (var v = mapW * m; v < mapW * (m + 1); v++) {
                            DataManager.pushMapData(data, v, h);
                        }
                    }
                }
            }
        }
        $dataMap.data = data;
    };

    Scene_Map.prototype.setupConnectingMapWidth = function() {
        var width = 0;
        $dataCmgMaps.some( function(dataMap, i){
            if (i >= DataManager.cmgMapW()) return true;
            if (dataMap) {
                width += dataMap.width;
            }
        });
        $dataMap.width = width;
    };

    Scene_Map.prototype.setupConnectingMapHeight = function() {
        var height = 0;
        $dataCmgMaps.forEach( function(dataMap, i){
            if (!(i % DataManager.cmgMapW())) {
                if (dataMap) {
                    height += dataMap.height;
                }
            }
        });
        $dataMap.height = height;
    };

    Scene_Map.prototype.setupConnectingMapEvents = function() {
        var events = [];
        $gamePlayer._connectingMaps.forEach(function(map, i){
            if (map) {
                var cmgEvents = DataManager.dataMap(i).events;
                Array.prototype.push.apply(events, cmgEvents);
            }
        });
        $dataMap.events = events;
    };

    Scene_Map.prototype.setupConnectingMapEncounterList = function() {
        var encounterList = [];
        $gamePlayer._connectingMaps.forEach(function(map, i){
            if (map) {
                var list = DataManager.dataMap(i).encounterList;
                Array.prototype.push.apply(encounterList, list);
            }
        });
        $dataMap.encounterList = encounterList;
    };

}());//EOF[/pre]
头像被屏蔽
梦石
0
星屑
16109
在线时间
18 小时
注册时间
2018-5-26
回帖
10
发表于 2018-5-26 17:29:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
16109
在线时间
18 小时
注册时间
2018-5-26
回帖
10
发表于 2018-5-26 17:41:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部