Project1

标题: 关于“选项”菜单能否自定义项目? [打印本页]

作者: douqunbo    时间: 2016-8-23 17:38
标题: 关于“选项”菜单能否自定义项目?
有什么办法或者脚本插件能更改“选项”里面的具体项目,比如选项中默认有:指令记忆、始终冲刺、BGM、SE、ME、BGS音量,我可以更改为只有BGM音量和SE音量这两项吗?又或者我是否能能添加几项功能?
作者: 玄天    时间: 2016-8-23 19:33
本帖最后由 玄天 于 2016-8-23 19:41 编辑

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

JAVASCRIPT 代码复制下载
  1. //=============================================================================
  2. // CustomizeConfigDefault.js
  3. // ----------------------------------------------------------------------------
  4. // Copyright (c) 2015 Triacontane
  5. // This plugin is released under the MIT License.
  6. // [url]http://opensource.org/licenses/mit-license.php[/url]
  7. // ----------------------------------------------------------------------------
  8. // Version
  9. // 1.1.0 2016/08/01 項目自体を非表示にする機能を追加しました。
  10. // 1.0.3 2016/06/22 多言語対応
  11. // 1.0.2 2016/01/17 競合対策
  12. // 1.0.1 2015/11/01 既存コードの再定義方法を修正(内容に変化なし)
  13. // 1.0.0 2015/11/01 初版
  14. // ----------------------------------------------------------------------------
  15. // [Blog]   : [url]http://triacontane.blogspot.jp/[/url]
  16. // [Twitter]: [url]https://twitter.com/triacontane/[/url]
  17. // [GitHub] : [url]https://github.com/triacontane/[/url]
  18. //=============================================================================
  19.  
  20. /*:
  21.  * @plugindesc Setting default value for Options
  22.  * @author triacontane
  23.  *
  24.  * @param AlwaysDash
  25.  * @desc Always dash(ON/OFF)
  26.  * @default OFF
  27.  *
  28.  * @param CommandRemember
  29.  * @desc Command remember(ON/OFF)
  30.  * @default OFF
  31.  *
  32.  * @param BgmVolume
  33.  * @desc BGM Volume(0-100)
  34.  * @default 100
  35.  *
  36.  * @param BgsVolume
  37.  * @desc BGS Volume(0-100)
  38.  * @default 100
  39.  *
  40.  * @param MeVolume
  41.  * @desc ME Volume(0-100)
  42.  * @default 100
  43.  *
  44.  * @param SeVolume
  45.  * @desc SE Volume(0-100)
  46.  * @default 100
  47.  *
  48.  * @param EraseAlwaysDash
  49.  * @desc Erase AlwaysDash Option(ON/OFF)
  50.  * @default OFF
  51.  *
  52.  * @param EraseCommandRemember
  53.  * @desc Erase CommandRemember Option(ON/OFF)
  54.  * @default OFF
  55.  *
  56.  * @param EraseBgmVolume
  57.  * @desc Erase BgmVolume Option(ON/OFF)
  58.  * @default OFF
  59.  *
  60.  * @param EraseBgsVolume
  61.  * @desc Erase BgsVolume Option(ON/OFF)
  62.  * @default OFF
  63.  *
  64.  * @param EraseMeVolume
  65.  * @desc Erase MeVolume Option(ON/OFF)
  66.  * @default OFF
  67.  *
  68.  * @param EraseSeVolume
  69.  * @desc Erase SeVolume Option(ON/OFF)
  70.  * @default OFF
  71.  *
  72.  * @help Setting default value for Options.
  73.  *
  74.  * This plugin is released under the MIT License.
  75.  */
  76. /*:ja
  77.  * @plugindesc オプションデフォルト値設定プラグイン
  78.  * @author トリアコンタン
  79.  *
  80.  * @param 常時ダッシュ
  81.  * @desc 常にダッシュする。(Shiftキーを押している場合のみ歩行)(ON/OFF)
  82.  * @default OFF
  83.  *
  84.  * @param コマンド記憶
  85.  * @desc 選択したコマンドを記憶する。(ON/OFF)
  86.  * @default OFF
  87.  *
  88.  * @param BGM音量
  89.  * @desc BGMの音量。0-100
  90.  * @default 100
  91.  *
  92.  * @param BGS音量
  93.  * @desc BGSの音量。0-100
  94.  * @default 100
  95.  *
  96.  * @param ME音量
  97.  * @desc MEの音量。0-100
  98.  * @default 100
  99.  *
  100.  * @param SE音量
  101.  * @desc SEの音量。0-100
  102.  * @default 100
  103.  *
  104.  * @param 常時ダッシュ消去
  105.  * @desc 常時ダッシュの項目を非表示にする。(ON/OFF)
  106.  * @default OFF
  107.  *
  108.  * @param コマンド記憶消去
  109.  * @desc コマンド記憶の項目を非表示にする。(ON/OFF)
  110.  * @default OFF
  111.  *
  112.  * @param BGM音量消去
  113.  * @desc BGM音量の項目を非表示にする。(ON/OFF)
  114.  * @default OFF
  115.  *
  116.  * @param BGS音量消去
  117.  * @desc BGS音量の項目を非表示にする。(ON/OFF)
  118.  * @default OFF
  119.  *
  120.  * @param ME音量消去
  121.  * @desc ME音量の項目を非表示にする。(ON/OFF)
  122.  * @default OFF
  123.  *
  124.  * @param SE音量消去
  125.  * @desc SE音量の項目を非表示にする。(ON/OFF)
  126.  * @default OFF
  127.  *
  128.  * @help オプション画面で設定可能な項目のデフォルト値を指定した値に変更します。
  129.  * 例えば、初回から常時ダッシュをONにしておけば
  130.  * プレイヤーが設定を変更する手間を省くことができます。
  131.  * この処理はconfig.rpgsaveが未作成の場合にのみ実行されます。
  132.  *
  133.  * また、項目そのものを消去することもできます。
  134.  * 例えば、戦闘がないゲームでは「コマンド記憶」等は不要なので消去できます。
  135.  *
  136.  * このプラグインにはプラグインコマンドはありません。
  137.  *
  138.  * 利用規約:
  139.  *  作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
  140.  *  についても制限はありません。
  141.  *  このプラグインはもうあなたのものです。
  142.  */
  143. (function() {
  144.     'use strict';
  145.     var pluginName = 'CustomizeConfigDefault';
  146.  
  147.     var getParamNumber = function(paramNames, min, max) {
  148.         var value = getParamOther(paramNames);
  149.         if (arguments.length < 2) min = -Infinity;
  150.         if (arguments.length < 3) max = Infinity;
  151.         return (parseInt(value, 10) || 0).clamp(min, max);
  152.     };
  153.  
  154.     var getParamBoolean = function(paramNames) {
  155.         var value = getParamOther(paramNames);
  156.         return (value || '').toUpperCase() === 'ON';
  157.     };
  158.  
  159.     var getParamOther = function(paramNames) {
  160.         if (!Array.isArray(paramNames)) paramNames = [paramNames];
  161.         for (var i = 0; i < paramNames.length; i++) {
  162.             var name = PluginManager.parameters(pluginName)[paramNames[i]];
  163.             if (name) return name;
  164.         }
  165.         return null;
  166.     };
  167.  
  168.     //=============================================================================
  169.     // パラメータの取得と整形
  170.     //=============================================================================
  171.     var paramAlwaysDash           = getParamBoolean(['AlwaysDash', '常時ダッシュ']);
  172.     var paramCommandRemember      = getParamBoolean(['CommandRemember', 'コマンド記憶']);
  173.     var paramBgmVolume            = getParamNumber(['BgmVolume', 'BGM音量'], 0, 100);
  174.     var paramBgsVolume            = getParamNumber(['BgsVolume', 'BGS音量'], 0, 100);
  175.     var paramMeVolume             = getParamNumber(['MeVolume', 'ME音量'], 0, 100);
  176.     var paramSeVolume             = getParamNumber(['SeVolume', 'SE音量'], 0, 100);
  177.     var paramEraseAlwaysDash      = getParamBoolean(['EraseAlwaysDash', '常時ダッシュ消去']);
  178.     var paramEraseCommandRemember = getParamBoolean(['EraseCommandRemember', 'コマンド記憶消去']);
  179.     var paramEraseBgmVolume       = getParamBoolean(['EraseBgmVolume', 'BGM音量消去']);
  180.     var paramEraseBgsVolume       = getParamBoolean(['EraseBgsVolume', 'BGS音量消去']);
  181.     var paramEraseMeVolume        = getParamBoolean(['EraseMeVolume', 'ME音量消去']);
  182.     var paramEraseSeVolume        = getParamBoolean(['EraseSeVolume', 'SE音量消去']);
  183.  
  184.     //=============================================================================
  185.     // ConfigManager
  186.     //  それぞれの項目に初期値を与えます。
  187.     //=============================================================================
  188.     var _ConfigManagerApplyData = ConfigManager.applyData;
  189.     ConfigManager.applyData     = function(config) {
  190.         _ConfigManagerApplyData.apply(this, arguments);
  191.         if (config.alwaysDash == null)      this.alwaysDash = paramAlwaysDash;
  192.         if (config.commandRemember == null) this.commandRemember = paramCommandRemember;
  193.         if (config.bgmVolume == null)       this.bgmVolume = paramBgmVolume;
  194.         if (config.bgsVolume == null)       this.bgsVolume = paramBgsVolume;
  195.         if (config.meVolume == null)        this.meVolume = paramMeVolume;
  196.         if (config.seVolume == null)        this.seVolume = paramSeVolume;
  197.     };
  198.  
  199.     //=============================================================================
  200.     // Window_Options
  201.     //  パラメータを空白にした項目を除去します。
  202.     //=============================================================================
  203.     var _Window_Options_makeCommandList = Window_Options.prototype.makeCommandList;
  204.     Window_Options.prototype.makeCommandList = function() {
  205.         _Window_Options_makeCommandList.apply(this, arguments);
  206.         if (paramEraseAlwaysDash) this.eraseOption('alwaysDash');
  207.         if (paramEraseCommandRemember) this.eraseOption('commandRemember');
  208.         if (paramEraseBgmVolume) this.eraseOption('bgmVolume');
  209.         if (paramEraseBgsVolume) this.eraseOption('bgsVolume');
  210.         if (paramEraseMeVolume) this.eraseOption('meVolume');
  211.         if (paramEraseSeVolume) this.eraseOption('seVolume');
  212.     };
  213.  
  214.     Window_Options.prototype.eraseOption = function(symbol) {
  215.         for (var i = 0; i < this._list.length; i++) {
  216.             if (this._list[i].symbol === symbol) {
  217.                 this._list.splice(i, 1);
  218.                 break;
  219.             }
  220.         }
  221.     };
  222. })();

作者: douqunbo    时间: 2016-8-23 22:07
玄天 发表于 2016-8-23 19:33
原地址:https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/CustomizeConfigDefault.js

/ ...

谢谢!这个插件能够去除部分原有选项,那请问如何能增加我所需要的内容呢?
作者: 玄天    时间: 2016-8-23 22:09
douqunbo 发表于 2016-8-23 22:07
谢谢!这个插件能够去除部分原有选项,那请问如何能增加我所需要的内容呢? ...

同一个作者早就想到了。

JAVASCRIPT 代码复制下载
  1. //=============================================================================
  2. // CustomizeConfigItem.js
  3. // ----------------------------------------------------------------------------
  4. // Copyright (c) 2015 Triacontane
  5. // This software is released under the MIT License.
  6. // [url]http://opensource.org/licenses/mit-license.php[/url]
  7. // ----------------------------------------------------------------------------
  8. // Version
  9. // 1.1.1 2016/08/14 スイッチ項目、音量項目の初期値が無効になっていた問題を修正
  10. // 1.1.0 2016/04/29 項目をクリックしたときに項目値が循環するよう修正
  11. // 1.0.0 2016/01/17 初版
  12. // ----------------------------------------------------------------------------
  13. // [Blog]   : [url]http://triacontane.blogspot.jp/[/url]
  14. // [Twitter]: [url]https://twitter.com/triacontane/[/url]
  15. // [GitHub] : [url]https://github.com/triacontane/[/url]
  16. //=============================================================================
  17.  
  18. /*:ja
  19.  * @plugindesc オプション任意項目作成プラグイン
  20.  * @author トリアコンタン
  21.  *
  22.  * 項目を増やしたい場合は、以下をコピーしてください。
  23.  * -------------------------------------------------------
  24.  * @param スイッチ項目1
  25.  * @desc 項目の情報です。以下の順で指定します。
  26.  * 名称,初期値(ON/OFF),スイッチ番号,隠しフラグ
  27.  * @default スイッチ項目1:OFF:0:OFF
  28.  *
  29.  * @param 数値項目1
  30.  * @desc 項目の情報です。以下の順で指定します。
  31.  * 名称:初期値(数値):変数番号:隠しフラグ:最小値:最大値:変化値
  32.  * @default 数値項目1:0:0:OFF:0:10:1
  33.  *
  34.  * @param 音量項目1
  35.  * @desc 項目の情報です。以下の順で指定します。
  36.  * 名称:初期値(数値(0...100)):変数番号:隠しフラグ
  37.  * @default 音量項目1:0:0:OFF
  38.  *
  39.  * @param 文字項目1
  40.  * @desc 項目の情報です。以下の順で指定します。
  41.  * 名称:初期値(Index(数値)):変数番号:隠しフラグ:文字の配列
  42.  * @default 文字項目1:0:0:OFF:EASY, NORMAL, HARD, VERY HARD
  43.  *
  44.  * @param スイッチ項目2
  45.  * @desc 項目の情報です。以下の順で指定します。
  46.  * 名称,初期値(ON/OFF),スイッチ番号,隠しフラグ
  47.  * @default スイッチ項目2:OFF:0:OFF
  48.  *
  49.  * @param 数値項目2
  50.  * @desc 項目の情報です。以下の順で指定します。
  51.  * 名称:初期値(数値):変数番号:隠しフラグ:最小値:最大値:変化値
  52.  * @default 数値項目2:0:0:OFF:0:10:1
  53.  *
  54.  * @param 音量項目2
  55.  * @desc 項目の情報です。以下の順で指定します。
  56.  * 名称:初期値(数値(0...100)):変数番号:隠しフラグ
  57.  * @default 音量項目2:0:0:OFF
  58.  *
  59.  * @param 文字項目2
  60.  * @desc 項目の情報です。以下の順で指定します。
  61.  * 名称:初期値(Index(数値)):変数番号:隠しフラグ:文字の配列
  62.  * @default 文字項目2:0:0:OFF:EASY, NORMAL, HARD, VERY HARD
  63.  * --------------------------------------------------------
  64.  *
  65.  * @help オプション画面に任意の項目を追加します。
  66.  * 項目の種類は、以下の四種類があります。
  67.  * 不要な項目は値を空に設定してください。
  68.  *
  69.  * ・スイッチ項目:
  70.  * ON/OFFを選択する項目です。指定した番号のスイッチと値が同期されます。
  71.  * オプションから値を設定すれば、それがスイッチに反映され、
  72.  * スイッチを変更すれば、オプションの値に反映されます。
  73.  * さらに、値はセーブデータ間で共有されます。
  74.  * 隠しフラグを設定すると、オプション画面に表示されなくなります。
  75.  * ゲームを進めないと出現しない項目などに利用できます。
  76.  * 隠しフラグはプラグインコマンドから解除できます。
  77.  * それぞれの値はコロン(:)区切りで指定してください。
  78.  *
  79.  * 指定項目「名称:初期値:値が設定されるスイッチ:隠しフラグ」
  80.  * 例:スイッチ項目1:OFF:1:OFF
  81.  *
  82.  * ・数値項目:
  83.  * 数値を選択する項目です。指定した番号の変数と値が同期されます。
  84.  * スイッチ項目で指定した内容に加えて、
  85.  * 最小値と最大値および一回の入力で変化する値を指定します。
  86.  *
  87.  * 指定項目「名称:初期値:値が設定される変数:隠しフラグ:最小値:最大値:変化値」
  88.  * 例:数値項目1:0:1:OFF:0:10:1
  89.  *
  90.  * ・音量項目:
  91.  * 音量を選択する項目です。BGMボリュームなどと同じ仕様で
  92.  * キャラクターごとのボイス音量等に使ってください。
  93.  *
  94.  * 指定項目「名称:初期値:値が設定される変数:隠しフラグ」
  95.  * 例:音量項目1:0:2:OFF
  96.  *
  97.  * ・文字項目:
  98.  * 文字を選択する項目です。指定した文字の配列から項目を選択します。
  99.  * 選択した文字のインデックス(開始位置は0)が変数に設定されます。
  100.  * 初期値に設定する値もインデックスです。
  101.  *
  102.  * 設定項目「名称:初期値:値が設定される変数:隠しフラグ:文字の配列」
  103.  * 例:文字項目1:0:3:OFF:EASY, NORMAL, HARD, VERY HARD
  104.  *
  105.  * プラグインコマンド詳細
  106.  *  イベントコマンド「プラグインコマンド」から実行。
  107.  *  (パラメータの間は半角スペースで区切る)
  108.  *
  109.  *  CC_UNLOCK or
  110.  *  オプション任意項目の隠し解除 [項目名]
  111.  *   指定した項目の隠しフラグを解除します。
  112.  *  使用例:CC_ITEM_VALID 数値項目1
  113.  *
  114.  * 利用規約:
  115.  *  作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
  116.  *  についても制限はありません。
  117.  *  このプラグインはもうあなたのものです。
  118.  */
  119.  
  120. (function () {
  121.     'use strict';
  122.     var pluginName = 'CustomizeConfigItem';
  123.  
  124.     var getParamString = function(paramNames) {
  125.         var value = getParamOther(paramNames);
  126.         return value == null ? '' : value;
  127.     };
  128.  
  129.     var getParamOther = function(paramNames) {
  130.         if (!Array.isArray(paramNames)) paramNames = [paramNames];
  131.         for (var i = 0; i < paramNames.length; i++) {
  132.             var name = PluginManager.parameters(pluginName)[paramNames[i]];
  133.             if (name) return name;
  134.         }
  135.         return null;
  136.     };
  137.  
  138.     var getCommandName = function (command) {
  139.         return (command || '').toUpperCase();
  140.     };
  141.  
  142.     var getArgArrayString = function (args, upperFlg) {
  143.         var values = getArgString(args, upperFlg).split(',');
  144.         for (var i = 0; i < values.length; i++) values[i] = values[i].trim();
  145.         return values;
  146.     };
  147.  
  148.     var getArgString = function (args, upperFlg) {
  149.         return upperFlg ? args.toUpperCase() : args;
  150.     };
  151.  
  152.     var getArgNumber = function (arg, min, max) {
  153.         if (arguments.length < 2) min = -Infinity;
  154.         if (arguments.length < 3) max = Infinity;
  155.         return (parseInt(arg, 10) || 0).clamp(min, max);
  156.     };
  157.  
  158.     var getArgBoolean = function(arg) {
  159.         return (arg || '').toUpperCase() == 'ON';
  160.     };
  161.  
  162.     if (!Object.prototype.hasOwnProperty('iterate')) {
  163.         Object.defineProperty(Object.prototype, 'iterate', {
  164.             value : function (handler) {
  165.                 Object.keys(this).forEach(function (key, index) {
  166.                     handler.call(this, key, this[key], index);
  167.                 }, this);
  168.             }
  169.         });
  170.     }
  171.  
  172.     //=============================================================================
  173.     // Game_Interpreter
  174.     //  プラグインコマンドを追加定義します。
  175.     //=============================================================================
  176.     var _Game_Interpreter_pluginCommand      = Game_Interpreter.prototype.pluginCommand;
  177.     Game_Interpreter.prototype.pluginCommand = function (command, args) {
  178.         _Game_Interpreter_pluginCommand.call(this, command, args);
  179.         try {
  180.             this.pluginCommandCustomizeConfigItem(command, args);
  181.         } catch (e) {
  182.             if ($gameTemp.isPlaytest() && Utils.isNwjs()) {
  183.                 var window = require('nw.gui').Window.get();
  184.                 if (!window.isDevToolsOpen()) {
  185.                     var devTool = window.showDevTools();
  186.                     devTool.moveTo(0, 0);
  187.                     devTool.resizeTo(Graphics.width, Graphics.height);
  188.                     window.focus();
  189.                 }
  190.             }
  191.             console.log('プラグインコマンドの実行中にエラーが発生しました。');
  192.             console.log('- コマンド名  : ' + command);
  193.             console.log('- コマンド引数 : ' + args);
  194.             console.log('- エラー原因   : ' + e.toString());
  195.         }
  196.     };
  197.  
  198.     Game_Interpreter.prototype.pluginCommandCustomizeConfigItem = function (command, args) {
  199.         switch (getCommandName(command)) {
  200.             case 'CC_UNLOCK' :
  201.             case 'オプション任意項目の隠し解除' :
  202.                 ConfigManager.customParamUnlock(args[0]);
  203.                 break;
  204.         }
  205.     };
  206.  
  207.     //=============================================================================
  208.     // ConfigManager
  209.     //  追加項目の設定値や初期値を管理します。
  210.     //=============================================================================
  211.     ConfigManager.customParams = null;
  212.     ConfigManager.hiddenInfo = {};
  213.  
  214.     ConfigManager.getCustomParams = function() {
  215.         if (this.customParams != null) return this.customParams;
  216.         this.customParams = {};
  217.         var i, result;
  218.         for (i = 1, result = true; result; i++) {
  219.             result = this._getCustomParamItem('スイッチ項目', 'Boolean', i);
  220.         }
  221.         for (i = 1, result = true; result; i++) {
  222.             result = this._getCustomParamItem('数値項目', 'Number', i);
  223.         }
  224.         for (i = 1, result = true; result; i++) {
  225.             result = this._getCustomParamItem('音量項目', 'Volume', i);
  226.         }
  227.         for (i = 1, result = true; result; i++) {
  228.             result = this._getCustomParamItem('文字項目', 'String', i);
  229.         }
  230.         return this.customParams;
  231.     };
  232.  
  233.     ConfigManager._getCustomParamItem = function(paramBaseName, symbolType, i) {
  234.         var param = getParamString(paramBaseName + '%1'.format(i)).split(':');
  235.         if (param.length > 1) {
  236.             try {
  237.                 var data        = {};
  238.                 data.symbol     = symbolType + '%1'.format(i);
  239.                 data.name       = getArgString(param[0]);
  240.                 data.initValue  = symbolType === 'Boolean' ? getArgBoolean(param[1]) : getArgNumber(param[1]);
  241.                 data.variable   = getArgNumber(param[2]);
  242.                 data.hidden     = getArgBoolean(param[3]);
  243.                 switch (symbolType) {
  244.                     case 'Number':
  245.                         data.min    = getArgNumber(param[4]);
  246.                         data.max    = getArgNumber(param[5]);
  247.                         data.offset = getArgNumber(param[6]);
  248.                         break;
  249.                     case 'String':
  250.                         data.values = getArgArrayString(param[4]);
  251.                         data.min    = 0;
  252.                         data.max    = data.values.length - 1;
  253.                         break;
  254.                 }
  255.                 this.customParams[data.symbol] = data;
  256.             } catch (e) {
  257.                 console.log('パラメータの指定に不正があります。: ' + param + ' : ' + e.toString());
  258.                 return false;
  259.             }
  260.             return true;
  261.         }
  262.         return false;
  263.     };
  264.  
  265.     var _ConfigManager_makeData = ConfigManager.makeData;
  266.     ConfigManager.makeData = function() {
  267.         var config = _ConfigManager_makeData.apply(this, arguments);
  268.         config.hiddenInfo = {};
  269.         this.getCustomParams().iterate(function(symbol) {
  270.             config[symbol] = this[symbol];
  271.             config.hiddenInfo[symbol] = this.hiddenInfo[symbol];
  272.         }.bind(this));
  273.         return config;
  274.     };
  275.  
  276.     var _ConfigManager_applyData = ConfigManager.applyData;
  277.     ConfigManager.applyData = function(config) {
  278.         _ConfigManager_applyData.apply(this, arguments);
  279.         this.getCustomParams().iterate(function(symbol, item) {
  280.             if (symbol.contains('Boolean')) {
  281.                 this[symbol] = this.readFlagCustom(config, symbol, item);
  282.             } else if (symbol.contains('Volume')) {
  283.                 this[symbol] = this.readVolumeCustom(config, symbol, item);
  284.             } else {
  285.                 this[symbol] = this.readOther(config, symbol, item);
  286.             }
  287.             this.hiddenInfo[symbol] = (config.hiddenInfo != null ? config.hiddenInfo[symbol] : item.hidden);
  288.         }.bind(this));
  289.     };
  290.  
  291.     ConfigManager.customParamUnlock = function(name) {
  292.         this.getCustomParams().iterate(function(symbol, item) {
  293.             if (item.name === name) this.hiddenInfo[symbol] = false;
  294.         }.bind(this));
  295.         this.save();
  296.     };
  297.  
  298.     ConfigManager.readOther = function(config, name, item) {
  299.         var value = config[name];
  300.         if (value !== undefined) {
  301.             return Number(value).clamp(item.min, item.max);
  302.         } else {
  303.             return item.initValue;
  304.         }
  305.     };
  306.  
  307.     ConfigManager.readFlagCustom = function(config, name, item) {
  308.         if (config[name] !== undefined) {
  309.             return this.readFlag(config, name);
  310.         } else {
  311.             return item.initValue;
  312.         }
  313.     };
  314.  
  315.     ConfigManager.readVolumeCustom = function(config, name, item) {
  316.         if (config[name] !== undefined) {
  317.             return this.readVolume(config, name);
  318.         } else {
  319.             return item.initValue;
  320.         }
  321.     };
  322.  
  323.     ConfigManager.exportCustomParams = function() {
  324.         if (!$gameVariables || !$gameSwitches) return;
  325.         this.getCustomParams().iterate(function(symbol, item) {
  326.             if (item.variable > 0) {
  327.                 if (symbol.contains('Boolean')) {
  328.                     $gameSwitches.setValue(item.variable, !!this[symbol]);
  329.                 } else {
  330.                     $gameVariables.setValue(item.variable, this[symbol]);
  331.                 }
  332.             }
  333.         }.bind(this));
  334.     };
  335.  
  336.     ConfigManager.importCustomParams = function() {
  337.         if (!$gameVariables || !$gameSwitches) return;
  338.         this.getCustomParams().iterate(function(symbol, item) {
  339.             if (item.variable > 0) {
  340.                 if (symbol.contains('Boolean')) {
  341.                     this[symbol] = $gameSwitches.value(item.variable);
  342.                 } else if (symbol.contains('Volume')) {
  343.                     this[symbol] = $gameVariables.value(item.variable).clamp(0, 100);
  344.                 } else {
  345.                     this[symbol] = $gameVariables.value(item.variable).clamp(item.min, item.max);
  346.                 }
  347.             }
  348.         }.bind(this));
  349.     };
  350.  
  351.     var _ConfigManager_save = ConfigManager.save;
  352.     ConfigManager.save = function() {
  353.         _ConfigManager_save.apply(this, arguments);
  354.         this.exportCustomParams();
  355.     };
  356.  
  357.     //=============================================================================
  358.     // Game_Map
  359.     //  リフレッシュ時にオプション値を同期します。
  360.     //=============================================================================
  361.     var _Game_Map_refresh = Game_Map.prototype.refresh;
  362.     Game_Map.prototype.refresh = function() {
  363.         _Game_Map_refresh.apply(this, arguments);
  364.         ConfigManager.importCustomParams();
  365.     };
  366.  
  367.     //=============================================================================
  368.     // DataManager
  369.     //  セーブ時とロード時にオプション値を同期します。
  370.     //=============================================================================
  371.     var _DataManager_setupNewGame = DataManager.setupNewGame;
  372.     DataManager.setupNewGame = function() {
  373.         _DataManager_setupNewGame.apply(this, arguments);
  374.         ConfigManager.exportCustomParams();
  375.     };
  376.  
  377.     var _DataManager_loadGameWithoutRescue = DataManager.loadGameWithoutRescue;
  378.     DataManager.loadGameWithoutRescue = function(savefileId) {
  379.         var result = _DataManager_loadGameWithoutRescue.apply(this, arguments);
  380.         ConfigManager.exportCustomParams();
  381.         return result;
  382.     };
  383.  
  384.     //=============================================================================
  385.     // Window_Options
  386.     //  追加項目を描画します。
  387.     //=============================================================================
  388.     var _Window_Options_initialize = Window_Options.prototype.initialize;
  389.     Window_Options.prototype.initialize = function() {
  390.         this._customParams = ConfigManager.getCustomParams();
  391.         _Window_Options_initialize.apply(this, arguments);
  392.     };
  393.  
  394.     var _Window_Options_makeCommandList = Window_Options.prototype.makeCommandList;
  395.     Window_Options.prototype.makeCommandList = function() {
  396.         _Window_Options_makeCommandList.apply(this, arguments);
  397.         this.addCustomOptions();
  398.     };
  399.  
  400.     Window_Options.prototype.addCustomOptions = function() {
  401.         this._customParams.iterate(function(key, item) {
  402.             if (!ConfigManager.hiddenInfo[key]) this.addCommand(item.name, key);
  403.         }.bind(this));
  404.     };
  405.  
  406.     var _Window_Options_statusText = Window_Options.prototype.statusText;
  407.     Window_Options.prototype.statusText = function(index) {
  408.         var result = _Window_Options_statusText.apply(this, arguments);
  409.         var symbol = this.commandSymbol(index);
  410.         var value  = this.getConfigValue(symbol);
  411.         if (this.isNumberSymbol(symbol)) {
  412.             result = this.numberStatusText(value);
  413.         } else if (this.isStringSymbol(symbol)) {
  414.             result = this.stringStatusText(value, symbol);
  415.         }
  416.         return result;
  417.     };
  418.  
  419.     Window_Options.prototype.isNumberSymbol = function(symbol) {
  420.         return symbol.contains('Number');
  421.     };
  422.  
  423.     Window_Options.prototype.isStringSymbol = function(symbol) {
  424.         return symbol.contains('String');
  425.     };
  426.  
  427.     Window_Options.prototype.numberStatusText = function(value) {
  428.         return value;
  429.     };
  430.  
  431.     Window_Options.prototype.stringStatusText = function(value, symbol) {
  432.         return this._customParams[symbol].values[value];
  433.     };
  434.  
  435.     var _Window_Options_processOk = Window_Options.prototype.processOk;
  436.     Window_Options.prototype.processOk = function() {
  437.         if (!this._shiftValue(1, true)) _Window_Options_processOk.apply(this, arguments);
  438.     };
  439.  
  440.     var _Window_Options_cursorRight = Window_Options.prototype.cursorRight;
  441.     Window_Options.prototype.cursorRight = function(wrap) {
  442.         if (!this._shiftValue(1, false)) _Window_Options_cursorRight.apply(this, arguments);
  443.     };
  444.  
  445.     var _Window_Options_cursorLeft = Window_Options.prototype.cursorLeft;
  446.     Window_Options.prototype.cursorLeft = function(wrap) {
  447.         if (!this._shiftValue(-1, false)) _Window_Options_cursorLeft.apply(this, arguments);
  448.     };
  449.  
  450.     Window_Options.prototype._shiftValue = function(sign, loopFlg) {
  451.         var symbol = this.commandSymbol(this.index());
  452.         var value = this.getConfigValue(symbol);
  453.         if (this.isNumberSymbol(symbol)) {
  454.             value += this.numberOffset(symbol) * sign;
  455.             this.changeValue(symbol, this._clampValue(value, symbol, loopFlg));
  456.             return true;
  457.         }
  458.         if (this.isStringSymbol(symbol)) {
  459.             value += sign;
  460.             this.changeValue(symbol, this._clampValue(value, symbol, loopFlg));
  461.             return true;
  462.         }
  463.         return false;
  464.     };
  465.  
  466.     Window_Options.prototype._clampValue = function(value, symbol, loopFlg) {
  467.         var maxValue = this._customParams[symbol].max;
  468.         var minValue = this._customParams[symbol].min;
  469.         if (loopFlg) {
  470.             if (value > maxValue) value = minValue;
  471.             if (value < minValue) value = maxValue;
  472.         }
  473.         return value.clamp(this._customParams[symbol].min, this._customParams[symbol].max);
  474.     };
  475.  
  476.     Window_Options.prototype.numberOffset = function(symbol) {
  477.         var value = this._customParams[symbol].offset;
  478.         if (Input.isPressed('shift')) value *= 10;
  479.         return value;
  480.     };
  481.  
  482.     Window_Options.prototype.windowHeight = function() {
  483.         return this.fittingHeight(Math.min(this.numVisibleRows(), 14));
  484.     };
  485. })();

作者: 白嫩白嫩的    时间: 2017-1-6 16:45
玄天 发表于 2016-8-23 22:09
同一个作者早就想到了。

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

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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1