RPG Maker MV

【RPG Maker MV插件】【MND_GetSetSelfS

2017-06-10  本文已影响244人  鳗驼螺

这个插件的作用是设置或获取指定事件的自有开关状态。直接操作自有开关的好处是可以减少开关变量的使用。比如想要根据轨道的变轨状态来选择矿车的行进路线,如果不用自有开关就需要一个开关变量来记录轨道的变轨状态,像类似这样的小事件一多就会占用大量的开关变量。
  官方有一个类似的插件OuterSelfSwitch,不过它只实现了设置功能,没有去实现查询功能。参考官方这个插件很容易实现查询功能,整个代码如下。不过,注意,本插件使用时用的是脚本调用而不是插件命令调用。

//============================================
// MND_GetSetSelfSwitch.js
//============================================

/*:
 * @plugindesc Get / set the self switch of the event.(v1.0)
 * @author Mandarava
 *
 * @help
 *
 * JavaScript code:
 *
 * Set the self switch for the event:
 * SetSelfSwitch(eventId, switchId, value, mapId)
 *   - eventId: event id.
 *   - switchId: self switch id, e.g. "A", "B", "C", "D".
 *   - value: value of the self switch, e.g. true, false.
 *   - mapId: the map id where the event is, if null, means in current map.
 *
 * Set all self switches for all events in current map:
 * SetAllSelfSwitches(switchId, value);
 *   - switchId: self switch id, e.g. "A", "B", "C", "D".
 *   - value: value of the self switch, e.g. true, false.
 *
 * Get the self switch of the event:
 * GetSelfSwitch(eventId, switchId, mapId)
 *   - eventId: event id.
 *   - switchId: self switch id, e.g. "A", "B", "C", "D".
 *   - mapId: the map id where the event is, if null, means in current map.
 *
 * Javascript example:
 *
 *  SetSelfSwitch(1, "A", true);
 *  SetSelfSwitch(1, "A", true, 2);
 *
 *  SetAllSelfSwitches("A", true);
 *
 *  GetSelfSwitch(1, "A")
 *  GetSelfSwitch(1, "A", 2)
 *
 */

/*:zh
 * @plugindesc 获取和设置指定Map中指定Event的指定自有开关的开关状态。(v1.0)
 * @author Mandarava(鳗驼螺)
 * 
 * @help 
 * 
 * 在脚本中调用以下方法:
 * 
 * 设置事件自有开关状态:
 * SetSelfSwitch(eventId, switchId, value, mapId)
 *   - eventId: 事件id。
 *   - switchId: 自有开关的id,可选值:"A", "B", "C", "D"
 *   - value: 开关状态,可选值:true, false
 *   - mapId: 事件所在的地图id,如果不提供或为null,则为当前地图。
 * 
 * 设置当前地图中所有事件的自有开关状态:
 * SetAllSelfSwitches(switchId, value);
 *   - switchId: 自有开关的id,可选值:"A", "B", "C", "D"
 *   - value: 开关状态,可选值:true, false
 *
 * 获取事件自有开关状态:
 * GetSelfSwitch(eventId, switchId, mapId)
 *   - eventId: 事件id。
 *   - switchId: 自有开关的id,可选值:"A", "B", "C", "D"。
 *   - mapId: 事件所在的地图id,如果不提供或为null,则为当前地图。
 * 
 * 示例:
 *  SetSelfSwitch(1, "A", true);    //设置当前地图上ID为1的事件的自有开关A的开关状态为true
 *  SetSelfSwitch(1, "A", true, 2); //设置ID为2的地图上ID为1的事件的自有开关A的开关状态为true
 * 
 *  SetAllSelfSwitches("A", true);  //设置当前地图上所有事件的自有开关A的开关状态为true
 * 
 *  GetSelfSwitch(1, "A")      //获取当前地图上ID为1的事件的自有开关A的开关状态
 *  GetSelfSwitch(1, "A", 2)   //获取ID为2的地图上ID为1的事件的自有开关A的开关状态
 *
 */

(function($){

    GetSelfSwitch=function(eventId, switchId, mapId){
        if (!switchId.match(/^[A-D]$/)) return;
        eventId = Number(eventId)
        mapId = mapId || $gameMap.mapId();
        if (eventId > 0) {
            var key = [mapId, eventId, switchId];
            return $gameSelfSwitches.value(key);
        }
        return false;
    }

    SetSelfSwitch=function(eventId, switchId, value, mapId){
        if (!switchId.match(/^[A-D]$/)) return;
        mapId = mapId || $gameMap.mapId();
        _setSelfSwitch(eventId, switchId, value, mapId);
    }

    SetAllSelfSwitches=function(switchId, value){
        if (!switchId.match(/^[A-D]$/)) return;
        var mapId=$gameMap.mapId();
        for (var i = 1; i < $dataMap.events.length; i++) {
            _setSelfSwitch(i, switchId, value, mapId);
        }
    }

    function _setSelfSwitch(eventId, switchId, value, mapId){
        eventId = Number(eventId);
        if (eventId > 0) {
            var key = [mapId, eventId, switchId];
            $gameSelfSwitches.setValue(key, value);
        }
    }

})();
上一篇下一篇

猜你喜欢

热点阅读