查看: 9702|回复: 29

[有事请教] 怎么才能当角色拥有某件物品时才显示某个选项呢?

[复制链接]
梦石
0
星屑
3341
在线时间
469 小时
注册时间
2014-2-6
回帖
217
发表于 2019-9-8 21:59:42 | 显示全部楼层 |阅读模式

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

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

×
直接用条件判断的话,少量还好说,如果是大量物品就条件肢太多了,主要是想用显示选项做一个快捷背包。然后就想问有没有什么方法,能用公共事件什么的判断当角色有某种物品时显示某个选项,没有时不显示。
梦石
3
星屑
5965
在线时间
1186 小时
注册时间
2014-9-6
回帖
189
发表于 2019-9-8 22:34:33 | 显示全部楼层
選擇物品的指令不滿足要求嗎?
回复

使用道具 举报

梦石
0
星屑
69
在线时间
10 小时
注册时间
2019-9-4
回帖
12
发表于 2019-9-8 22:35:10 | 显示全部楼层

  1. var opt=['选项1','选项2']
  2. if($gameParty._items[3]){
  3.         opt.push('选项3')
  4. }
  5. if($gameParty._armors[4]){
  6.         opt.push('选项4')
  7. }
  8. if($gameParty._weapons[5]){
  9.         opt.push('选项5')
  10. }
  11. this.setupChoices([opt])
复制代码
回复

使用道具 举报

梦石
0
星屑
69
在线时间
10 小时
注册时间
2019-9-4
回帖
12
发表于 2019-9-8 22:52:58 | 显示全部楼层
[pre lang="javascript"]
var opt=[]
for(var i in $gameParty._items){
        opt.push($dataItems.name)
}
for(var i in $gameParty._armors){
        opt.push($dataArmors.name)
}
for(var i in $gameParty._weapons){
        opt.push($dataWeapons.name)
}
this.setupChoices([opt])
[/pre]

点评

请问有了选项之后,怎么执行内容列...  发表于 2019-9-9 13:18
谢谢大哥!!!!!  发表于 2019-9-9 11:01
回复

使用道具 举报

梦石
0
星屑
3341
在线时间
469 小时
注册时间
2014-2-6
回帖
217
 楼主| 发表于 2019-9-9 11:03:40 | 显示全部楼层

那再小问一下,选择了某个选项的话,选项执行的内容应该放在哪里?事件脚本的代码我知道,但是不知道放在哪里才能执行....
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2019-9-9 11:21:36 | 显示全部楼层
本帖最后由 tseyik 于 2019-9-9 11:24 编辑

選択肢拡張(ver. 3.10)[pre lang="javascript"]//=============================================================================
// MPP_ChoiceEX.js
//=============================================================================
// Copyright (c) 2015-2019 Mokusei Penguin
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
* @plugindesc 【ver.3.10】選択肢の機能拡張
* @author 木星ペンギン
*
* @help ※[]内は未設定でも動作します。
* プラグインコマンド:
*   ChoicePos x y[ row]    # 選択肢の位置(x,y)と行数(row)指定
*   ChoiceVariableId n     # 選択肢のデフォルト位置を変数n番にする
*   ChoiceRect x y width height
*                          # 選択肢の座標とサイズを指定
*   ChoiceUnderMessage     # 選択肢をメッセージの下に表示
*
* ※ プラグインコマンドにて指定する値には変数が使用できます。
*    v[n] と記述することでn番の変数の値を参照します。
*
* 注釈:
*   選択肢ヘルプ             # 各項目の下に設定することでヘルプを表示させる
*
* 選択肢テキスト:
*   if(条件)                # 条件が偽になると項目が表示されなくなる
*   en(条件)                # 条件が偽になると項目が選択不可
*
* ================================================================
* ▼ 使い方
* --------------------------------
*  〇 選択肢を増やす
*   イベントコマンド『選択肢の表示』を続けて配置すると
*   一つの選択肢にまとめられます。
*   まとめたくない場合は、間に注釈などを入れることで
*   通常通り分けることができます。
*
*   『デフォルト』の処理は、なし以外を設定したものが適用されます。
*   『デフォルト』の処理が複数ある場合、
*   後に設定された選択肢のものが適用されます。
*
*   『キャンセル』の処理は、禁止以外を設定したものが適用されます。
*   『キャンセル』の処理が複数ある場合、
*   後に設定された選択肢のものが適用されます。
*
*  『背景』と『ウィンドウ位置』は後の選択肢のものが適用されます。
*
*
* ================================================================
* ▼ プラグインコマンド 詳細
* --------------------------------
*  〇 ChoicePos x y[ row]
*      x   : 選択肢ウィンドウのX座標
*      y   : 選択肢ウィンドウのY座標
*      row : 選択肢ウィンドウの行数。未設定の場合はすべて表示
*   
*   次に表示する選択肢の位置(x,y)と行数(row)指定します。
*   
* --------------------------------
*  〇 ChoiceVariableId n
*      n : 変数番号
*   
*   次に表示する選択肢のデフォルト位置を変数の値にします。
*   さらに現在のカーソル位置を変数に入れます。
*   
*   カーソル位置は最初の選択肢が上から0~5、次の選択肢は10~15と、
*   選択肢毎に+10されます。
*
*   変数に入った値の項目が表示されない場合、なしと同じ処理をします。
*
* --------------------------------
*  〇 ChoiceRect x y width height
*      x      : X座標
*      y      : Y座標
*      width  : 幅
*      height : 高さ
*   
*   次に表示する選択肢の座標とサイズを指定します。
*   
*   各項目、未設定もしくは-1を指定した場合、通常の値が適用されます。
*   
* --------------------------------
*  〇 ChoiceUnderMessage
*  
*   次に表示する選択肢をメッセージウィンドウ内に表示させます。
*   
*   この機能は[文章の表示]と併用しなければ機能しません。
*   [文章の表示]の前に実行してください。
*   
*   選択肢ウィンドウの[背景]は設定したものが適用されます。
*
*
* ================================================================
* ▼ 選択肢テキスト 詳細
* --------------------------------
*  〇 項目が表示される条件の設定
*   選択肢の文章中に
*     if(条件)
*   と入れ、その条件が偽になると項目が表示されなくなります。
*   
*   『デフォルト』の項目が表示されない場合の動作は、
*   プラグインパラメータの[Disabled Index]にて設定できます。
*   
*   『キャンセル』の項目が表示されない場合、禁止と同じ処理をします。
*   
*   条件内では s でスイッチ、v で変数を参照できます。
*   
*     例:if(s[1]) とした場合
*          => スイッチ1番がONで表示、OFFで非表示。
*        if(!s[2]) とした場合
*          => スイッチ2番がOFFで表示、ONで非表示。
*        if(v[5]>0) とした場合
*          => 変数5番が0より大きければ表示、0以下で非表示。
*     
*     変数で使える不等号
*       === : 等しい
*       !== : 等しくない
*       <   : より小さい
*       <=  : より小さいまたは等しい
*       >   : より大きい
*       >=  : より大きいまたは等しい
*     
*     条件式はeval関数で処理されているため、他演算子も使用できます。
*
* --------------------------------
*  〇 項目を半透明で表示する条件の設定
*   選択肢の文章中に
*     en(条件)
*   と入れ、その条件が偽になると項目が半透明で表示されます。
*   半透明となった項目は選択できなくなります。
*
*   条件は上の『項目が表示される条件の設定』と同じです。
*
*   『キャンセル』の項目が半透明の場合、ブザーが鳴ります。
*
*
* ================================================================
* ▼ プラグインパラメータ 詳細
* --------------------------------
*  〇 Disabled Index
*  
*   [デフォルト]となる項目がif(条件)により非表示となった場合、
*   デフォルト位置をどこにするかを設定します。
*   
*     none : [なし]と同じ
*     top  : 先頭の項目
*  
* --------------------------------
*  〇 Plugin Commands / Event Comment
*  
*   プラグインコマンドや注釈で使用するコマンドは、
*   プラグインパラメータから変更できます。
*  
*   コマンドを短くしたり日本語にしたりなどして、
*   自分が使いやすいようにしてください。
*  
*   プラグインコマンドのみ、変更後もデフォルトのコマンドでも動作します。
*
*
* ================================================================
* ▼ その他
* --------------------------------
*  〇 プラグインコマンドの実行タイミング
*   プラグインコマンドを使用する場合、[選択肢の表示]の前に実行するのが
*   好ましいです。
*   ただし、メッセージウィンドウを表示したまま選択肢の処理を実行したい場合、
*   [文章の表示]より前にプラグインコマンドを実行してください。
*
* --------------------------------
*  〇 ヘルプメッセージの表示
*   各選択肢項目の下に注釈で以下の文字列を入れると、
*   続きの文章をヘルプメッセージとしてカーソルを合わせたときに
*   標示させることができます。
*  
*     選択肢ヘルプ
*
*   ※注意点
*    ヘルプメッセージは[文章の表示]と同じ機能を使っているため、
*    制御文字が使用できます。
*    ただし、\!と\^は使用できません。
*
* ================================
* 制作 : 木星ペンギン
* URL : http://woodpenguin.blog.fc2.com/
*
* @param maxPageRow
* @type number
* @desc 1ページに表示される行数
* @default 6
*
* @param Disabled Index
* @type select
* @option none
* @option top
* @desc [デフォルト]となる選択肢が表示されない場合のデフォルト位置
* @default none
*
*
* @param === Command ===
*
* @param Plugin Commands
* @type struct<Plugin>
* @desc プラグインコマンド名
* @default {"ChoicePos":"ChoicePos","ChoiceVariableId":"ChoiceVariableId","ChoiceRect":"ChoiceRect","ChoiceUnderMessage":"ChoiceUnderMessage"}
* @parent === Command ===
*
* @param Event Comment
* @type struct<EventComment>
* @desc イベントの注釈で使うコマンド名
* @default {"ChoiceHelp":"選択肢ヘルプ"}
* @parent === Command ===
*
*/

/*~struct~Plugin:
* @param ChoicePos
* @desc 選択肢の位置(x,y)と行数(row)指定
* @default ChoicePos
*
* @param ChoiceVariableId
* @desc 選択肢のデフォルト位置を変数n番にする
* @default ChoiceVariableId
*
* @param ChoiceRect
* @desc 選択肢の座標とサイズ(x,y,width,height)指定
* @default ChoiceRect
*
* @param ChoiceUnderMessage
* @desc 選択肢をメッセージの下に表示
* @default ChoiceUnderMessage
*
*/

/*~struct~EventComment:
* @param ChoiceHelp
* @desc 各項目の下に設定することでヘルプを表示させる
* @default 選択肢ヘルプ
*/

(function() {

const MPPlugin = {};

{
   
    let parameters = PluginManager.parameters('MPP_ChoiceEX');
   
    MPPlugin.maxPageRow = Number(parameters['maxPageRow']);
    MPPlugin.DisabledIndex = parameters['Disabled Index'];
   
    MPPlugin.PluginCommands = JSON.parse(parameters['Plugin Commands']);
    MPPlugin.EventComment = JSON.parse(parameters['Event Comment']);

}

const Alias = {};

//-----------------------------------------------------------------------------
// Game_Message

//15
Alias.GaMe_clear = Game_Message.prototype.clear;
Game_Message.prototype.clear = function() {
    Alias.GaMe_clear.apply(this, arguments);
    this._choiceEnables = [];
    this._choiceResults = [];
    this._helpTexts = [];
    this._choiceX = -1;
    this._choiceY = -1;
    this._choiceWidth = -1;
    this._choiceHeight = -1;
    this._choiceMaxRow = MPPlugin.maxPageRow;
    this._choiceVariableId = 0;
    this.choiceUnderMes = false;
};

Game_Message.prototype.setChoiceEnables = function(enables) {
    this._choiceEnables = enables;
};

Game_Message.prototype.choiceEnables = function() {
    return this._choiceEnables;
};

Game_Message.prototype.setChoiceResults = function(results) {
    this._choiceResults = results;
};

Game_Message.prototype.setChoiceHelpTexts = function(texts) {
    this._helpTexts = texts;
};

Game_Message.prototype.isHelp = function() {
    return this._helpTexts.length > 0;
};

Game_Message.prototype.setChoicePos = function(x, y, row) {
    this._choiceX = x;
    this._choiceY = y;
    this._choiceWidth = -1;
    this._choiceHeight = -1;
    this._choiceMaxRow = row;
};

Game_Message.prototype.setChoiceRect = function(x, y, width, height) {
    this._choiceX = x;
    this._choiceY = y;
    this._choiceWidth = width;
    this._choiceHeight = height;
};

Game_Message.prototype.setChoiceVariableId = function(id) {
    this._choiceVariableId = id;
};

Game_Message.prototype.shiftLine = function(height) {
    this._choiceY += height;
    this._choiceHeight -= height;
};


//-----------------------------------------------------------------------------
// Game_Interpreter

//336
Game_Interpreter.prototype.setupChoices = function(params) {
    var data = {
        choices: [],
        enables: [],
        results: [],
        helpTexts: [],
        cancelType: -1,
        defaultType: -1,
        positionType: 0,
        background: 0
    };
    data = this.addChoices(params, this._index, data, 0);
    if (data.choices.length > 0) {
        var helpTexts = [];
        if (data.helpTexts.length > 0) {
            helpTexts = data.results.map( i => data.helpTexts );
        }
        var cancelType = -1;
        if (data.cancelType.mod(10) === 8 || data.results.contains(data.cancelType)) {
            data.results.push(data.cancelType);
            cancelType = data.choices.length;
        }
        var index = data.defaultType;
        if ($gameMessage._choiceVariableId > 0) {
            index = $gameVariables.value($gameMessage._choiceVariableId);
        }
        var defaultType = data.results.indexOf(index);
        if (index >= 0 && defaultType < 0 && MPPlugin.DisabledIndex === "top")  {
            defaultType = 0;
        }
        $gameMessage.setChoices(data.choices, defaultType, cancelType);
        $gameMessage.setChoiceEnables(data.enables);
        $gameMessage.setChoiceResults(data.results);
        $gameMessage.setChoiceHelpTexts(helpTexts);
        $gameMessage.setChoiceBackground(data.background);
        $gameMessage.setChoicePositionType(data.positionType);
        $gameMessage.setChoiceCallback( n => this._branch[this._indent] = data.results[n] );
    } else {
        this._branch[this._indent] = -1;
    }
};

Game_Interpreter.prototype.addChoices = function(params, i, data, d) {
    var regIf = /\s*if\((.+?)\)/;
    var regEn = /\s*en\((.+?)\)/;
    for (var n = 0; n < params[0].length; n++) {
        var str = params[0][n];
        if (regIf.test(str)) {
            str = str.replace(regIf, '');
            if (RegExp.$1 && !this.evalChoice(RegExp.$1)) continue;
        }
        var enable = true;
        if (regEn.test(str)) {
            str = str.replace(regEn, '');
            enable = this.evalChoice(RegExp.$1);
        }
        data.choices.push(str);
        data.enables.push(enable);
        data.results.push(n + d);
    }
    var cancelType = params[1];
    if (cancelType !== -1) {
        data.cancelType = cancelType + d;
    }
    var defaultType = params.length > 2 ? params[2] : 0;
    if (defaultType >= 0) {
        data.defaultType = defaultType + d;
    }
    data.positionType = params.length > 3 ? params[3] : 2;
    data.background = params.length > 4 ? params[4] : 0;
    var command;
    for (;;) {
        i++;
        command = this._list;
        if (!command) break;
        if (command.indent === this._indent) {
            if (command.code === 402) {
                this.getHelpText(command.parameters[0] + d, i + 1, data);
            } else if (command.code === 404) {
                break;
            }
        }
    }
    command = this._list[i + 1];
    if (command && command.code === 102) {
        this.addChoices(command.parameters, i + 1, data, d + 10);
    }
    return data;
};

Game_Interpreter.prototype.getHelpText = function(c, i, data) {
    var command = MPPlugin.EventComment.ChoiceHelp || '選択肢ヘルプ';
    if (this._list.code === 108 && this._list.parameters[0] === command) {
        var texts = [];
        while (this._list[i + 1].code === 408) {
            i++;
            texts.push(this._list.parameters[0]);
        }
        data.helpTexts[c] = texts;
    }
};

Game_Interpreter.prototype.evalChoice = function(formula) {
    try {
        var s = $gameSwitches._data;
        var formula2 = formula.replace(/v\[(\d+)\]/g,
            (match, p1) => $gameVariables.value(parseInt(p1)) );
        return !!eval(formula2);
    } catch (e) {
        alert("条件エラー \n\n " + formula);
        return true;
    }
};

//362
Game_Interpreter.prototype.command403 = function() {
    if (this._branch[this._indent] !== -2) {
        this.skipBranch();
    }
    return true;
};

Game_Interpreter.prototype.command404 = function() {
    if (this.nextEventCode() === 102) {
        this._branch[this._indent] -= 10;
        this._index++;
    }
    return true;
};

//1739
Alias.GaIn_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
    Alias.GaIn_pluginCommand.apply(this, arguments);
    var args2 = this.mppPluginCommandArgs(args);
    switch (command) {
        case MPPlugin.PluginCommands.ChoicePos:
        case 'ChoicePos':
            var x = args2[0];
            var y = args2[1];
            var row = args2[2] || 99;
            $gameMessage.setChoicePos(x, y, row);
            break;
        case MPPlugin.PluginCommands.ChoiceVariableId:
        case 'ChoiceVariableId':
            $gameMessage.setChoiceVariableId(args2[0]);
            break;
        case MPPlugin.PluginCommands.ChoiceRect:
        case 'ChoiceRect':
            var x = (args2[0] === undefined ? -1 : args2[0]);
            var y = (args2[1] === undefined ? -1 : args2[1]);
            var width = (args2[2] === undefined ? -1 : args2[2]);
            var height = (args2[3] === undefined ? -1 : args2[3]);
            $gameMessage.setChoiceRect(x, y, width, height);
            break;
        case MPPlugin.PluginCommands.ChoiceUnderMessage:
        case 'ChoiceUnderMessage':
            $gameMessage.choiceUnderMes = true;
            break;
    }
    return true;
};

Game_Interpreter.prototype.mppPluginCommandArgs = function(args) {
    var v = $gameVariables._data;
    return args.map(function(arg) {
        try {
            return eval(arg) || 0;
        } catch (e) {
            return arg;
        }
    });
};

//-----------------------------------------------------------------------------
// Window

Window.prototype.isClearWindowRect = function() {
    return true;
};

//-----------------------------------------------------------------------------
// WindowLayer

//7100
Alias.WiLa__canvasClearWindowRect = WindowLayer.prototype._canvasClearWindowRect;
WindowLayer.prototype._canvasClearWindowRect = function(renderSession, window) {
    if (window.isClearWindowRect())
        Alias.WiLa__canvasClearWindowRect.apply(this, arguments);
};

//7162
Alias.WiLa__maskWindow = WindowLayer.prototype._maskWindow;
WindowLayer.prototype._maskWindow = function(window, shift) {
    Alias.WiLa__maskWindow.apply(this, arguments);
    if (!window.isClearWindowRect()) {
        var rect = this._windowRect;
        rect.x = 0;
        rect.y = 0;
        rect.width = 0;
        rect.height = 0;
    }
};

//-----------------------------------------------------------------------------
// Window_ChoiceList

Window_ChoiceList.prototype.isClearWindowRect = function() {
    return !this._underMessage;
};

if (Window_ChoiceList.prototype.hasOwnProperty('close')) {
    Alias.WiChLi_close = Window_ChoiceList.prototype.close
}
Window_ChoiceList.prototype.close = function() {
    if ($gameMessage.isHelp()) this._messageWindow.onShowFast();
    var _super = Alias.WiChLi_close || Window_Command.prototype.close;
    _super.apply(this, arguments);
};

if (Window_ChoiceList.prototype.hasOwnProperty('select')) {
    Alias.WiChli_select = Window_ChoiceList.prototype.select;
}
Window_ChoiceList.prototype.select = function(index) {
    var variableId = $gameMessage._choiceVariableId;
    if (index !== this.index() && variableId > 0) {
        var results = $gameMessage._choiceResults;
        $gameVariables.setValue(variableId, results[index]);
    }
    var _super = Alias.WiChli_select = Window_Command.prototype.select
    _super.apply(this, arguments);
};

//34
Alias.WiChLi_updatePlacement = Window_ChoiceList.prototype.updatePlacement;
Window_ChoiceList.prototype.updatePlacement = function() {
    Alias.WiChLi_updatePlacement.apply(this, arguments);
    if ($gameMessage._choiceWidth >= 0) {
        this.width = Math.min($gameMessage._choiceWidth, Graphics.boxWidth);
    }
    if ($gameMessage._choiceHeight >= 0) {
        this.height = Math.min($gameMessage._choiceHeight, Graphics.boxHeight);
    }
    if ($gameMessage._choiceX >= 0) {
        this.x = Math.min($gameMessage._choiceX, Graphics.boxWidth - this.width);
    }
    if ($gameMessage._choiceY >= 0) {
        this.y = Math.min($gameMessage._choiceY, Graphics.boxHeight - this.height);
    }
    this._underMessage = $gameMessage.choiceUnderMes;
};

//67
Window_ChoiceList.prototype.numVisibleRows = function() {
    return Math.min($gameMessage.choices().length, $gameMessage._choiceMaxRow);
};

//103
Window_ChoiceList.prototype.makeCommandList = function() {
    var choices = $gameMessage.choices();
    var enables = $gameMessage._choiceEnables;
    for (var i = 0; i < choices.length; i++) {
        this.addCommand(choices, 'choice', enables);
    }
};

//110
Alias.WiChLi_drawItem = Window_ChoiceList.prototype.drawItem;
Window_ChoiceList.prototype.drawItem = function(index) {
    this.changePaintOpacity(this.isCommandEnabled(index));
    Alias.WiChLi_drawItem.apply(this, arguments);
};

//123
Alias.WiChLi_callOkHandler = Window_ChoiceList.prototype.callOkHandler;
Window_ChoiceList.prototype.callOkHandler = function() {
    Alias.WiChLi_callOkHandler.apply(this, arguments);
    this._messageWindow.forceClear();
};

//129
Alias.WiChLi_callCancelHandler = Window_ChoiceList.prototype.callCancelHandler;
Window_ChoiceList.prototype.callCancelHandler = function() {
    Alias.WiChLi_callCancelHandler.apply(this, arguments);
    this._messageWindow.forceClear();
};

if (Window_ChoiceList.prototype.hasOwnProperty('processCancel')) {
    Alias.WiChLi_processCancel = Window_ChoiceList.prototype.processCancel
}
Window_ChoiceList.prototype.processCancel = function() {
    var type = $gameMessage.choiceCancelType();
    var results = $gameMessage._choiceResults;
    var index = results.indexOf(results[type]);
    if (this.isCancelEnabled() && index !== type && !this.isCommandEnabled(index)) {
        this.playBuzzerSound();
    } else {
        var _super = Alias.WiChLi_processCancel || Window_Command.prototype.processCancel;
        _super.apply(this, arguments);
    }
};

Window_ChoiceList.prototype.callUpdateHelp = function() {
    if (this.active && this._messageWindow && $gameMessage.isHelp())
        this.updateHelp();
};

Window_ChoiceList.prototype.updateHelp = function() {
    this._messageWindow.forceClear();
    var texts = $gameMessage._helpTexts[this.index()];
    $gameMessage._texts = texts ? texts.clone() : [''];
    this._messageWindow.startMessage();
};


//-----------------------------------------------------------------------------
// Window_Message

//109
Alias.WiMe_updatePlacement = Window_Message.prototype.updatePlacement;
Window_Message.prototype.updatePlacement = function() {
    Alias.WiMe_updatePlacement.apply(this, arguments);
    this.clearUnderChoice();
};

Window_Message.prototype.clearUnderChoice = function() {
    if ($gameMessage.choiceUnderMes) {
        var x = this.x + this.standardPadding();
        x += this._textState.left || 0;
        var y = this.y + 4;
        var height = this.windowHeight();
        $gameMessage.setChoiceRect(x, y, -1, height);
    }
};

if (Window_Message.prototype.hasOwnProperty('processNewLine')) {
    Alias.WiMe_processNewLine = Window_Message.prototype.processNewLine;
}
Window_Message.prototype.processNewLine = function(textState) {
    if ($gameMessage.choiceUnderMes) $gameMessage.shiftLine(textState.height);
    var _super = Alias.WiMe_processNewLine || Window_Base.prototype.processNewLine;
    _super.apply(this, arguments);
};

//149
Alias.WiMe_updateInput = Window_Message.prototype.updateInput;
Window_Message.prototype.updateInput = function() {
    if ($gameMessage.isHelp() && this._textState) return false;
    return Alias.WiMe_updateInput.apply(this, arguments);
};

//196
Alias.WiMe_onEndOfText = Window_Message.prototype.onEndOfText;
Window_Message.prototype.onEndOfText = function() {
    if ($gameMessage.isHelp() && !this._choiceWindow.active) {
        this.startInput();
    } else {
        Alias.WiMe_onEndOfText.apply(this, arguments);
    }
};

//207
Alias.WiMe_startInput = Window_Message.prototype.startInput;
Window_Message.prototype.startInput = function() {
    if (this._choiceWindow.active) return true;
    if ($gameMessage.isChoice() && $gameMessage.choiceUnderMes)
        $gameMessage.shiftLine(this._textState.height);
    return Alias.WiMe_startInput.apply(this, arguments);
};

Window_Message.prototype.forceClear = function() {
    this._textState = null;
    this.close();
    this._goldWindow.close();
};

Window_Message.prototype.onShowFast = function() {
    this._showFast = true;
};

//243
Alias.WiMe_newPage = Window_Message.prototype.newPage;
Window_Message.prototype.newPage = function(textState) {
    Alias.WiMe_newPage.apply(this, arguments);
    this.clearUnderChoice();
};






})();
[/pre]

http://woodpenguin.web.fc2.com/MV_Plugin/MPP_ChoiceEX.html
    通常6つまでしか表示できない選択肢を、無制限に拡張できます。
通常最多只能顯示6個選項可以無限擴展。
    スイッチや変数などによる条件で、その選択肢の有無を設定できます。
您可以根據開關和變量等條件設置該選項是否可用。
    選択肢ウィンドウの表示位置を一時的に変更することができます。
可以臨時更改選項窗口的顯示位置
    条件を設定することで、その項目を半透明にして選択不可にすることができます。
通過設置條件,您可以使項目半透明而不可選擇。

回复 1 0

使用道具 举报

梦石
0
星屑
3341
在线时间
469 小时
注册时间
2014-2-6
回帖
217
 楼主| 发表于 2019-9-9 11:31:01 | 显示全部楼层
tseyik 发表于 2019-9-9 11:21
[fold=選択肢拡張(ver. 3.10)]//====================================================================== ...

Thanks♪(・ω・)ノ
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2019-9-9 19:22:16 | 显示全部楼层
説明
◆選択肢を繋げて項目数を増やす

    『選択肢の表示』を続けて配置すると、一つの選択肢にまとめられます。
    まとめたくない場合は、間に注釈などを入れることで通常通り分けることができます。
    『デフォルト』の処理は、なし以外を設定したものが適用されます。
    『デフォルト』の処理が複数ある場合、後に設定された選択肢のものが適用されます。
    『キャンセル』の処理は、禁止以外を設定したものが適用されます。
    『キャンセル』の処理が複数ある場合、後に設定された選択肢のものが適用されます。

◆条件によって、項目を表示させない

    選択肢の文章中に if(条件) と書くことで、その条件が偽になると項目が表示されなくなります。
    s でスイッチを参照できます。
    (例: if(s[3]) でスイッチ番号 3 が ON のとき項目が表示されます)
    v で変数を参照できます。
    (例 : if(v[5] >= 4) で変数番号 5 が 4 以上のとき項目が表示されます)
    この機能により『デフォルト』や『キャンセル』の項目が表示されない場合、なしや禁止と同じ処理をします。

◆条件によって、項目を半透明で表示する

    選択肢の文章中に en(条件) と書くことで、 その条件が偽になると項目が半透明で表示されます。
    「項目を表示させない方法」との併用は可能です。
    条件については、「項目を表示させない方法」と同じです。
    半透明の項目を選択すると、ブザーが鳴ります。
    この機能により「キャンセルの場合」の項目が半透明で表示された場合、ブザーが鳴ります。

◆選択肢ウィンドウの位置を変更する

    プラグインコマンドにて以下のコマンドを実行すると、選択肢ウィンドウの表示位置を一時的に変更することが出来ます。

    プラグインコマンド         説明
    ChoicePos x y[ row]         x : 選択肢ウィンドウの X 座標 (-1でデフォルト値)
    y : 選択肢ウィンドウの Y 座標 (-1でデフォルト値)
    row : 選択肢ウィンドウの最大表示行数
       (未設定の場合、すべて表示)
    ChoiceRect x y[ width[ height]]         x : 選択肢ウィンドウの X 座標 (-1でデフォルト値)
    y : 選択肢ウィンドウの Y 座標 (-1でデフォルト値)
    width : 選択肢ウィンドウの幅 (-1でデフォルト値)
    height : 選択肢ウィンドウの高さ (-1でデフォルト値)
    ※[]内は表記しなくても動作します。

    選択肢ウィンドウの位置変更は、指定した後の一度のみ適用されます。
    メッセージウィンドウと選択肢ウィンドウを同時に表示する場合、【文章の表示】の前に実行してください。

◆選択肢のカーソル初期位置の指定と保存

    プラグインコマンドにて以下のコマンドを実行すると、選択肢ウィンドウのデフォルト位置を変数の値にして、
    選択肢が変更されるたびにその位置を変数に入れます。

    プラグインコマンド         説明
    ChoiceVariableId n         n : 変数番号

    カーソル位置は最初の選択肢が上から0~5、次の選択肢は10~15と、選択肢毎に+10されます。
    メッセージウィンドウと選択肢ウィンドウを同時に表示する場合、【文章の表示】の前に実行してください。

◆選択肢にヘルプを表示する

    各選択肢の分岐の下に注釈で選択肢ヘルプと書くと、
    続きの注釈を項目のヘルプメッセージとしてカーソルを合わせたときに標示させることができます。

        →        

    ヘルプメッセージの表示にはメッセージウィンドウを使用しています。
    よって選択肢直前の【文章の表示】は無視されます。
    選択肢ヘルプがどの選択肢にも設定されていない場合、通常通りの動作をします。
    一つでも設定されていれば、メッセージウィンドウは選択肢ヘルプの表示に使用されます。
    【文章の表示】と同じ機能を使用しているため、制御文字が使用できます。
    ただし、\! と \^ は使用できません。
回复

使用道具 举报

梦石
0
星屑
3341
在线时间
469 小时
注册时间
2014-2-6
回帖
217
 楼主| 发表于 2019-9-9 21:54:28 | 显示全部楼层
tseyik 发表于 2019-9-9 19:22
説明
◆選択肢を繋げて項目数を増やす

想问一下怎么用来着............就是选择不同物品的选项有不同的事件执行,而不是选择第一个选项就执行第一个选项,选择第二个选项就执行第二个选项.
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2019-9-10 09:12:41 | 显示全部楼层
本帖最后由 tseyik 于 2019-9-10 09:14 编辑
天空娃娃 发表于 2019-9-9 21:54
想问一下怎么用来着............就是选择不同物品的选项有不同的事件执行,而不是选择第一个选项就执行第 ...


例(VA版,MV版一様)
choice_ex3.jpg choice_ex4.jpg
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部