查看: 3548|回复: 4

[已经过期] 关于“选项”菜单能否自定义项目?

[复制链接]
梦石
0
星屑
1321
在线时间
157 小时
注册时间
2006-2-12
回帖
157
发表于 2016-8-23 17:38:51 | 显示全部楼层 |阅读模式

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

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

×
有什么办法或者脚本插件能更改“选项”里面的具体项目,比如选项中默认有:指令记忆、始终冲刺、BGM、SE、ME、BGS音量,我可以更改为只有BGM音量和SE音量这两项吗?又或者我是否能能添加几项功能?
梦石
0
星屑
311
在线时间
204 小时
注册时间
2007-2-4
回帖
1772
发表于 2016-8-23 19:33:33 | 显示全部楼层
本帖最后由 玄天 于 2016-8-23 19:41 编辑

原地址:https://raw.githubusercontent.co ... izeConfigDefault.js

[pre lang="javascript" file="CustomizeConfigDefault.js"]//=============================================================================
// CustomizeConfigDefault.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This plugin is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.1.0 2016/08/01 項目自体を非表示にする機能を追加しました。
// 1.0.3 2016/06/22 多言語対応
// 1.0.2 2016/01/17 競合対策
// 1.0.1 2015/11/01 既存コードの再定義方法を修正(内容に変化なし)
// 1.0.0 2015/11/01 初版
// ----------------------------------------------------------------------------
// [Blog]   : http://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:
* @plugindesc Setting default value for Options
* @author triacontane
*
* @param AlwaysDash
* @desc Always dash(ON/OFF)
* @default OFF
*
* @param CommandRemember
* @desc Command remember(ON/OFF)
* @default OFF
*
* @param BgmVolume
* @desc BGM Volume(0-100)
* @default 100
*
* @param BgsVolume
* @desc BGS Volume(0-100)
* @default 100
*
* @param MeVolume
* @desc ME Volume(0-100)
* @default 100
*
* @param SeVolume
* @desc SE Volume(0-100)
* @default 100
*
* @param EraseAlwaysDash
* @desc Erase AlwaysDash Option(ON/OFF)
* @default OFF
*
* @param EraseCommandRemember
* @desc Erase CommandRemember Option(ON/OFF)
* @default OFF
*
* @param EraseBgmVolume
* @desc Erase BgmVolume Option(ON/OFF)
* @default OFF
*
* @param EraseBgsVolume
* @desc Erase BgsVolume Option(ON/OFF)
* @default OFF
*
* @param EraseMeVolume
* @desc Erase MeVolume Option(ON/OFF)
* @default OFF
*
* @param EraseSeVolume
* @desc Erase SeVolume Option(ON/OFF)
* @default OFF
*
* @help Setting default value for Options.
*
* This plugin is released under the MIT License.
*/
/*:ja
* @plugindesc オプションデフォルト値設定プラグイン
* @author トリアコンタン
*
* @param 常時ダッシュ
* @desc 常にダッシュする。(Shiftキーを押している場合のみ歩行)(ON/OFF)
* @default OFF
*
* @param コマンド記憶
* @desc 選択したコマンドを記憶する。(ON/OFF)
* @default OFF
*
* @param BGM音量
* @desc BGMの音量。0-100
* @default 100
*
* @param BGS音量
* @desc BGSの音量。0-100
* @default 100
*
* @param ME音量
* @desc MEの音量。0-100
* @default 100
*
* @param SE音量
* @desc SEの音量。0-100
* @default 100
*
* @param 常時ダッシュ消去
* @desc 常時ダッシュの項目を非表示にする。(ON/OFF)
* @default OFF
*
* @param コマンド記憶消去
* @desc コマンド記憶の項目を非表示にする。(ON/OFF)
* @default OFF
*
* @param BGM音量消去
* @desc BGM音量の項目を非表示にする。(ON/OFF)
* @default OFF
*
* @param BGS音量消去
* @desc BGS音量の項目を非表示にする。(ON/OFF)
* @default OFF
*
* @param ME音量消去
* @desc ME音量の項目を非表示にする。(ON/OFF)
* @default OFF
*
* @param SE音量消去
* @desc SE音量の項目を非表示にする。(ON/OFF)
* @default OFF
*
* @help オプション画面で設定可能な項目のデフォルト値を指定した値に変更します。
* 例えば、初回から常時ダッシュをONにしておけば
* プレイヤーが設定を変更する手間を省くことができます。
* この処理はconfig.rpgsaveが未作成の場合にのみ実行されます。
*
* また、項目そのものを消去することもできます。
* 例えば、戦闘がないゲームでは「コマンド記憶」等は不要なので消去できます。
*
* このプラグインにはプラグインコマンドはありません。
*
* 利用規約:
*  作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
*  についても制限はありません。
*  このプラグインはもうあなたのものです。
*/
(function() {
    'use strict';
    var pluginName = 'CustomizeConfigDefault';

    var getParamNumber = function(paramNames, min, max) {
        var value = getParamOther(paramNames);
        if (arguments.length < 2) min = -Infinity;
        if (arguments.length < 3) max = Infinity;
        return (parseInt(value, 10) || 0).clamp(min, max);
    };

    var getParamBoolean = function(paramNames) {
        var value = getParamOther(paramNames);
        return (value || '').toUpperCase() === 'ON';
    };

    var getParamOther = function(paramNames) {
        if (!Array.isArray(paramNames)) paramNames = [paramNames];
        for (var i = 0; i < paramNames.length; i++) {
            var name = PluginManager.parameters(pluginName)[paramNames];
            if (name) return name;
        }
        return null;
    };

    //=============================================================================
    // パラメータの取得と整形
    //=============================================================================
    var paramAlwaysDash           = getParamBoolean(['AlwaysDash', '常時ダッシュ']);
    var paramCommandRemember      = getParamBoolean(['CommandRemember', 'コマンド記憶']);
    var paramBgmVolume            = getParamNumber(['BgmVolume', 'BGM音量'], 0, 100);
    var paramBgsVolume            = getParamNumber(['BgsVolume', 'BGS音量'], 0, 100);
    var paramMeVolume             = getParamNumber(['MeVolume', 'ME音量'], 0, 100);
    var paramSeVolume             = getParamNumber(['SeVolume', 'SE音量'], 0, 100);
    var paramEraseAlwaysDash      = getParamBoolean(['EraseAlwaysDash', '常時ダッシュ消去']);
    var paramEraseCommandRemember = getParamBoolean(['EraseCommandRemember', 'コマンド記憶消去']);
    var paramEraseBgmVolume       = getParamBoolean(['EraseBgmVolume', 'BGM音量消去']);
    var paramEraseBgsVolume       = getParamBoolean(['EraseBgsVolume', 'BGS音量消去']);
    var paramEraseMeVolume        = getParamBoolean(['EraseMeVolume', 'ME音量消去']);
    var paramEraseSeVolume        = getParamBoolean(['EraseSeVolume', 'SE音量消去']);

    //=============================================================================
    // ConfigManager
    //  それぞれの項目に初期値を与えます。
    //=============================================================================
    var _ConfigManagerApplyData = ConfigManager.applyData;
    ConfigManager.applyData     = function(config) {
        _ConfigManagerApplyData.apply(this, arguments);
        if (config.alwaysDash == null)      this.alwaysDash = paramAlwaysDash;
        if (config.commandRemember == null) this.commandRemember = paramCommandRemember;
        if (config.bgmVolume == null)       this.bgmVolume = paramBgmVolume;
        if (config.bgsVolume == null)       this.bgsVolume = paramBgsVolume;
        if (config.meVolume == null)        this.meVolume = paramMeVolume;
        if (config.seVolume == null)        this.seVolume = paramSeVolume;
    };

    //=============================================================================
    // Window_Options
    //  パラメータを空白にした項目を除去します。
    //=============================================================================
    var _Window_Options_makeCommandList = Window_Options.prototype.makeCommandList;
    Window_Options.prototype.makeCommandList = function() {
        _Window_Options_makeCommandList.apply(this, arguments);
        if (paramEraseAlwaysDash) this.eraseOption('alwaysDash');
        if (paramEraseCommandRemember) this.eraseOption('commandRemember');
        if (paramEraseBgmVolume) this.eraseOption('bgmVolume');
        if (paramEraseBgsVolume) this.eraseOption('bgsVolume');
        if (paramEraseMeVolume) this.eraseOption('meVolume');
        if (paramEraseSeVolume) this.eraseOption('seVolume');
    };

    Window_Options.prototype.eraseOption = function(symbol) {
        for (var i = 0; i < this._list.length; i++) {
            if (this._list.symbol === symbol) {
                this._list.splice(i, 1);
                break;
            }
        }
    };
})();[/pre]
新しい誕生祝いだッ!
回复 1 0

使用道具 举报

梦石
0
星屑
1321
在线时间
157 小时
注册时间
2006-2-12
回帖
157
 楼主| 发表于 2016-8-23 22:07:06 | 显示全部楼层
玄天 发表于 2016-8-23 19:33
原地址:https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/CustomizeConfigDefault.js

/ ...

谢谢!这个插件能够去除部分原有选项,那请问如何能增加我所需要的内容呢?
回复

使用道具 举报

梦石
0
星屑
311
在线时间
204 小时
注册时间
2007-2-4
回帖
1772
发表于 2016-8-23 22:09:16 | 显示全部楼层
douqunbo 发表于 2016-8-23 22:07
谢谢!这个插件能够去除部分原有选项,那请问如何能增加我所需要的内容呢? ...

同一个作者早就想到了。

[pre lang="javascript" file="CustomizeConfigItem.js"]//=============================================================================
// CustomizeConfigItem.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.1.1 2016/08/14 スイッチ項目、音量項目の初期値が無効になっていた問題を修正
// 1.1.0 2016/04/29 項目をクリックしたときに項目値が循環するよう修正
// 1.0.0 2016/01/17 初版
// ----------------------------------------------------------------------------
// [Blog]   : http://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================

/*:ja
* @plugindesc オプション任意項目作成プラグイン
* @author トリアコンタン
*
* 項目を増やしたい場合は、以下をコピーしてください。
* -------------------------------------------------------
* @param スイッチ項目1
* @desc 項目の情報です。以下の順で指定します。
* 名称,初期値(ON/OFF),スイッチ番号,隠しフラグ
* @default スイッチ項目1:OFF:0:OFF
*
* @param 数値項目1
* @desc 項目の情報です。以下の順で指定します。
* 名称:初期値(数値):変数番号:隠しフラグ:最小値:最大値:変化値
* @default 数値項目1:0:0:OFF:0:10:1
*
* @param 音量項目1
* @desc 項目の情報です。以下の順で指定します。
* 名称:初期値(数値(0...100)):変数番号:隠しフラグ
* @default 音量項目1:0:0:OFF
*
* @param 文字項目1
* @desc 項目の情報です。以下の順で指定します。
* 名称:初期値(Index(数値)):変数番号:隠しフラグ:文字の配列
* @default 文字項目1:0:0:OFF:EASY, NORMAL, HARD, VERY HARD
*
* @param スイッチ項目2
* @desc 項目の情報です。以下の順で指定します。
* 名称,初期値(ON/OFF),スイッチ番号,隠しフラグ
* @default スイッチ項目2:OFF:0:OFF
*
* @param 数値項目2
* @desc 項目の情報です。以下の順で指定します。
* 名称:初期値(数値):変数番号:隠しフラグ:最小値:最大値:変化値
* @default 数値項目2:0:0:OFF:0:10:1
*
* @param 音量項目2
* @desc 項目の情報です。以下の順で指定します。
* 名称:初期値(数値(0...100)):変数番号:隠しフラグ
* @default 音量項目2:0:0:OFF
*
* @param 文字項目2
* @desc 項目の情報です。以下の順で指定します。
* 名称:初期値(Index(数値)):変数番号:隠しフラグ:文字の配列
* @default 文字項目2:0:0:OFF:EASY, NORMAL, HARD, VERY HARD
* --------------------------------------------------------
*
* @help オプション画面に任意の項目を追加します。
* 項目の種類は、以下の四種類があります。
* 不要な項目は値を空に設定してください。
*
* ・スイッチ項目:
* ON/OFFを選択する項目です。指定した番号のスイッチと値が同期されます。
* オプションから値を設定すれば、それがスイッチに反映され、
* スイッチを変更すれば、オプションの値に反映されます。
* さらに、値はセーブデータ間で共有されます。
* 隠しフラグを設定すると、オプション画面に表示されなくなります。
* ゲームを進めないと出現しない項目などに利用できます。
* 隠しフラグはプラグインコマンドから解除できます。
* それぞれの値はコロン(:)区切りで指定してください。
*
* 指定項目「名称:初期値:値が設定されるスイッチ:隠しフラグ」
* 例:スイッチ項目1:OFF:1:OFF
*
* ・数値項目:
* 数値を選択する項目です。指定した番号の変数と値が同期されます。
* スイッチ項目で指定した内容に加えて、
* 最小値と最大値および一回の入力で変化する値を指定します。
*
* 指定項目「名称:初期値:値が設定される変数:隠しフラグ:最小値:最大値:変化値」
* 例:数値項目1:0:1:OFF:0:10:1
*
* ・音量項目:
* 音量を選択する項目です。BGMボリュームなどと同じ仕様で
* キャラクターごとのボイス音量等に使ってください。
*
* 指定項目「名称:初期値:値が設定される変数:隠しフラグ」
* 例:音量項目1:0:2:OFF
*
* ・文字項目:
* 文字を選択する項目です。指定した文字の配列から項目を選択します。
* 選択した文字のインデックス(開始位置は0)が変数に設定されます。
* 初期値に設定する値もインデックスです。
*
* 設定項目「名称:初期値:値が設定される変数:隠しフラグ:文字の配列」
* 例:文字項目1:0:3:OFF:EASY, NORMAL, HARD, VERY HARD
*
* プラグインコマンド詳細
*  イベントコマンド「プラグインコマンド」から実行。
*  (パラメータの間は半角スペースで区切る)
*
*  CC_UNLOCK or
*  オプション任意項目の隠し解除 [項目名]
*   指定した項目の隠しフラグを解除します。
*  使用例:CC_ITEM_VALID 数値項目1
*
* 利用規約:
*  作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
*  についても制限はありません。
*  このプラグインはもうあなたのものです。
*/

(function () {
    'use strict';
    var pluginName = 'CustomizeConfigItem';

    var getParamString = function(paramNames) {
        var value = getParamOther(paramNames);
        return value == null ? '' : value;
    };

    var getParamOther = function(paramNames) {
        if (!Array.isArray(paramNames)) paramNames = [paramNames];
        for (var i = 0; i < paramNames.length; i++) {
            var name = PluginManager.parameters(pluginName)[paramNames];
            if (name) return name;
        }
        return null;
    };

    var getCommandName = function (command) {
        return (command || '').toUpperCase();
    };

    var getArgArrayString = function (args, upperFlg) {
        var values = getArgString(args, upperFlg).split(',');
        for (var i = 0; i < values.length; i++) values = values.trim();
        return values;
    };

    var getArgString = function (args, upperFlg) {
        return upperFlg ? args.toUpperCase() : args;
    };

    var getArgNumber = function (arg, min, max) {
        if (arguments.length < 2) min = -Infinity;
        if (arguments.length < 3) max = Infinity;
        return (parseInt(arg, 10) || 0).clamp(min, max);
    };

    var getArgBoolean = function(arg) {
        return (arg || '').toUpperCase() == 'ON';
    };

    if (!Object.prototype.hasOwnProperty('iterate')) {
        Object.defineProperty(Object.prototype, 'iterate', {
            value : function (handler) {
                Object.keys(this).forEach(function (key, index) {
                    handler.call(this, key, this[key], index);
                }, this);
            }
        });
    }

    //=============================================================================
    // Game_Interpreter
    //  プラグインコマンドを追加定義します。
    //=============================================================================
    var _Game_Interpreter_pluginCommand      = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function (command, args) {
        _Game_Interpreter_pluginCommand.call(this, command, args);
        try {
            this.pluginCommandCustomizeConfigItem(command, args);
        } catch (e) {
            if ($gameTemp.isPlaytest() && Utils.isNwjs()) {
                var window = require('nw.gui').Window.get();
                if (!window.isDevToolsOpen()) {
                    var devTool = window.showDevTools();
                    devTool.moveTo(0, 0);
                    devTool.resizeTo(Graphics.width, Graphics.height);
                    window.focus();
                }
            }
            console.log('プラグインコマンドの実行中にエラーが発生しました。');
            console.log('- コマンド名  : ' + command);
            console.log('- コマンド引数 : ' + args);
            console.log('- エラー原因   : ' + e.toString());
        }
    };

    Game_Interpreter.prototype.pluginCommandCustomizeConfigItem = function (command, args) {
        switch (getCommandName(command)) {
            case 'CC_UNLOCK' :
            case 'オプション任意項目の隠し解除' :
                ConfigManager.customParamUnlock(args[0]);
                break;
        }
    };

    //=============================================================================
    // ConfigManager
    //  追加項目の設定値や初期値を管理します。
    //=============================================================================
    ConfigManager.customParams = null;
    ConfigManager.hiddenInfo = {};

    ConfigManager.getCustomParams = function() {
        if (this.customParams != null) return this.customParams;
        this.customParams = {};
        var i, result;
        for (i = 1, result = true; result; i++) {
            result = this._getCustomParamItem('スイッチ項目', 'Boolean', i);
        }
        for (i = 1, result = true; result; i++) {
            result = this._getCustomParamItem('数値項目', 'Number', i);
        }
        for (i = 1, result = true; result; i++) {
            result = this._getCustomParamItem('音量項目', 'Volume', i);
        }
        for (i = 1, result = true; result; i++) {
            result = this._getCustomParamItem('文字項目', 'String', i);
        }
        return this.customParams;
    };

    ConfigManager._getCustomParamItem = function(paramBaseName, symbolType, i) {
        var param = getParamString(paramBaseName + '%1'.format(i)).split(':');
        if (param.length > 1) {
            try {
                var data        = {};
                data.symbol     = symbolType + '%1'.format(i);
                data.name       = getArgString(param[0]);
                data.initValue  = symbolType === 'Boolean' ? getArgBoolean(param[1]) : getArgNumber(param[1]);
                data.variable   = getArgNumber(param[2]);
                data.hidden     = getArgBoolean(param[3]);
                switch (symbolType) {
                    case 'Number':
                        data.min    = getArgNumber(param[4]);
                        data.max    = getArgNumber(param[5]);
                        data.offset = getArgNumber(param[6]);
                        break;
                    case 'String':
                        data.values = getArgArrayString(param[4]);
                        data.min    = 0;
                        data.max    = data.values.length - 1;
                        break;
                }
                this.customParams[data.symbol] = data;
            } catch (e) {
                console.log('パラメータの指定に不正があります。: ' + param + ' : ' + e.toString());
                return false;
            }
            return true;
        }
        return false;
    };

    var _ConfigManager_makeData = ConfigManager.makeData;
    ConfigManager.makeData = function() {
        var config = _ConfigManager_makeData.apply(this, arguments);
        config.hiddenInfo = {};
        this.getCustomParams().iterate(function(symbol) {
            config[symbol] = this[symbol];
            config.hiddenInfo[symbol] = this.hiddenInfo[symbol];
        }.bind(this));
        return config;
    };

    var _ConfigManager_applyData = ConfigManager.applyData;
    ConfigManager.applyData = function(config) {
        _ConfigManager_applyData.apply(this, arguments);
        this.getCustomParams().iterate(function(symbol, item) {
            if (symbol.contains('Boolean')) {
                this[symbol] = this.readFlagCustom(config, symbol, item);
            } else if (symbol.contains('Volume')) {
                this[symbol] = this.readVolumeCustom(config, symbol, item);
            } else {
                this[symbol] = this.readOther(config, symbol, item);
            }
            this.hiddenInfo[symbol] = (config.hiddenInfo != null ? config.hiddenInfo[symbol] : item.hidden);
        }.bind(this));
    };

    ConfigManager.customParamUnlock = function(name) {
        this.getCustomParams().iterate(function(symbol, item) {
            if (item.name === name) this.hiddenInfo[symbol] = false;
        }.bind(this));
        this.save();
    };

    ConfigManager.readOther = function(config, name, item) {
        var value = config[name];
        if (value !== undefined) {
            return Number(value).clamp(item.min, item.max);
        } else {
            return item.initValue;
        }
    };

    ConfigManager.readFlagCustom = function(config, name, item) {
        if (config[name] !== undefined) {
            return this.readFlag(config, name);
        } else {
            return item.initValue;
        }
    };

    ConfigManager.readVolumeCustom = function(config, name, item) {
        if (config[name] !== undefined) {
            return this.readVolume(config, name);
        } else {
            return item.initValue;
        }
    };

    ConfigManager.exportCustomParams = function() {
        if (!$gameVariables || !$gameSwitches) return;
        this.getCustomParams().iterate(function(symbol, item) {
            if (item.variable > 0) {
                if (symbol.contains('Boolean')) {
                    $gameSwitches.setValue(item.variable, !!this[symbol]);
                } else {
                    $gameVariables.setValue(item.variable, this[symbol]);
                }
            }
        }.bind(this));
    };

    ConfigManager.importCustomParams = function() {
        if (!$gameVariables || !$gameSwitches) return;
        this.getCustomParams().iterate(function(symbol, item) {
            if (item.variable > 0) {
                if (symbol.contains('Boolean')) {
                    this[symbol] = $gameSwitches.value(item.variable);
                } else if (symbol.contains('Volume')) {
                    this[symbol] = $gameVariables.value(item.variable).clamp(0, 100);
                } else {
                    this[symbol] = $gameVariables.value(item.variable).clamp(item.min, item.max);
                }
            }
        }.bind(this));
    };

    var _ConfigManager_save = ConfigManager.save;
    ConfigManager.save = function() {
        _ConfigManager_save.apply(this, arguments);
        this.exportCustomParams();
    };

    //=============================================================================
    // Game_Map
    //  リフレッシュ時にオプション値を同期します。
    //=============================================================================
    var _Game_Map_refresh = Game_Map.prototype.refresh;
    Game_Map.prototype.refresh = function() {
        _Game_Map_refresh.apply(this, arguments);
        ConfigManager.importCustomParams();
    };

    //=============================================================================
    // DataManager
    //  セーブ時とロード時にオプション値を同期します。
    //=============================================================================
    var _DataManager_setupNewGame = DataManager.setupNewGame;
    DataManager.setupNewGame = function() {
        _DataManager_setupNewGame.apply(this, arguments);
        ConfigManager.exportCustomParams();
    };

    var _DataManager_loadGameWithoutRescue = DataManager.loadGameWithoutRescue;
    DataManager.loadGameWithoutRescue = function(savefileId) {
        var result = _DataManager_loadGameWithoutRescue.apply(this, arguments);
        ConfigManager.exportCustomParams();
        return result;
    };

    //=============================================================================
    // Window_Options
    //  追加項目を描画します。
    //=============================================================================
    var _Window_Options_initialize = Window_Options.prototype.initialize;
    Window_Options.prototype.initialize = function() {
        this._customParams = ConfigManager.getCustomParams();
        _Window_Options_initialize.apply(this, arguments);
    };

    var _Window_Options_makeCommandList = Window_Options.prototype.makeCommandList;
    Window_Options.prototype.makeCommandList = function() {
        _Window_Options_makeCommandList.apply(this, arguments);
        this.addCustomOptions();
    };

    Window_Options.prototype.addCustomOptions = function() {
        this._customParams.iterate(function(key, item) {
            if (!ConfigManager.hiddenInfo[key]) this.addCommand(item.name, key);
        }.bind(this));
    };

    var _Window_Options_statusText = Window_Options.prototype.statusText;
    Window_Options.prototype.statusText = function(index) {
        var result = _Window_Options_statusText.apply(this, arguments);
        var symbol = this.commandSymbol(index);
        var value  = this.getConfigValue(symbol);
        if (this.isNumberSymbol(symbol)) {
            result = this.numberStatusText(value);
        } else if (this.isStringSymbol(symbol)) {
            result = this.stringStatusText(value, symbol);
        }
        return result;
    };

    Window_Options.prototype.isNumberSymbol = function(symbol) {
        return symbol.contains('Number');
    };

    Window_Options.prototype.isStringSymbol = function(symbol) {
        return symbol.contains('String');
    };

    Window_Options.prototype.numberStatusText = function(value) {
        return value;
    };

    Window_Options.prototype.stringStatusText = function(value, symbol) {
        return this._customParams[symbol].values[value];
    };

    var _Window_Options_processOk = Window_Options.prototype.processOk;
    Window_Options.prototype.processOk = function() {
        if (!this._shiftValue(1, true)) _Window_Options_processOk.apply(this, arguments);
    };

    var _Window_Options_cursorRight = Window_Options.prototype.cursorRight;
    Window_Options.prototype.cursorRight = function(wrap) {
        if (!this._shiftValue(1, false)) _Window_Options_cursorRight.apply(this, arguments);
    };

    var _Window_Options_cursorLeft = Window_Options.prototype.cursorLeft;
    Window_Options.prototype.cursorLeft = function(wrap) {
        if (!this._shiftValue(-1, false)) _Window_Options_cursorLeft.apply(this, arguments);
    };

    Window_Options.prototype._shiftValue = function(sign, loopFlg) {
        var symbol = this.commandSymbol(this.index());
        var value = this.getConfigValue(symbol);
        if (this.isNumberSymbol(symbol)) {
            value += this.numberOffset(symbol) * sign;
            this.changeValue(symbol, this._clampValue(value, symbol, loopFlg));
            return true;
        }
        if (this.isStringSymbol(symbol)) {
            value += sign;
            this.changeValue(symbol, this._clampValue(value, symbol, loopFlg));
            return true;
        }
        return false;
    };

    Window_Options.prototype._clampValue = function(value, symbol, loopFlg) {
        var maxValue = this._customParams[symbol].max;
        var minValue = this._customParams[symbol].min;
        if (loopFlg) {
            if (value > maxValue) value = minValue;
            if (value < minValue) value = maxValue;
        }
        return value.clamp(this._customParams[symbol].min, this._customParams[symbol].max);
    };

    Window_Options.prototype.numberOffset = function(symbol) {
        var value = this._customParams[symbol].offset;
        if (Input.isPressed('shift')) value *= 10;
        return value;
    };

    Window_Options.prototype.windowHeight = function() {
        return this.fittingHeight(Math.min(this.numVisibleRows(), 14));
    };
})();[/pre]
新しい誕生祝いだッ!
回复 1 0

使用道具 举报

梦石
0
星屑
3922
在线时间
1198 小时
注册时间
2016-8-9
回帖
2355

开拓者

发表于 2017-1-6 16:45:39 | 显示全部楼层
玄天 发表于 2016-8-23 22:09
同一个作者早就想到了。

//======================================================================== ...

不好意思挖坟了,请教大神:
item这个插件下载下来安装后,不显示任何文字,检查了下的确是utf-8,不知何故,求指点!
酸酸甜甜就④哇噢
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部