本帖最后由 开关关 于 2021-4-1 15:32 编辑
选择窗口本身就支持添加无数的选项。分享个人自用的代码,如果有现成的插件还是建议用插件。
插入第一段脚本,用于规定选项都有哪些。
$gameSystem._kgg_choiceList = ['小镇','城市','森林','四','五','六','七','八','九','十'];
$gameSystem._kgg_choiceList = ['小镇','城市','森林','四','五','六','七','八','九','十'];
$gameSystem._kgg_choiceList 后面的数组可以按照例子中的格式随便改,写多少个都没问题。
你甚至可以按条件规定有哪些选项。比如下面这种是我最常用的:
$gameSystem._kgg_choiceList = []; if ( !$gameParty.hasItem($dataItems[46]) ) { // 没有通行证 $gameSystem._kgg_choiceList.push('出价1000'); } if ( $gameVariables.value(1) == 232 ) { // 主线进度为232 $gameSystem._kgg_choiceList.push('揍一顿'); } $gameSystem._kgg_choiceList.push('离开');
$gameSystem._kgg_choiceList = [];
if ( !$gameParty.hasItem($dataItems[46]) ) { // 没有通行证
$gameSystem._kgg_choiceList.push('出价1000');
}
if ( $gameVariables.value(1) == 232 ) { // 主线进度为232
$gameSystem._kgg_choiceList.push('揍一顿');
}
$gameSystem._kgg_choiceList.push('离开');
插入第二段脚本,用于显示选项。
$gameMessage.setChoices($gameSystem._kgg_choiceList, defaultType=0, cancelType=-2); $gameMessage.setChoiceBackground(0); $gameMessage.setChoicePositionType(2); $gameMessage.setChoiceCallback(function(n) { $gameSystem._kgg_choice = n; // 记录选了哪个 }.bind(this)); this._index++; this.setWaitMode('message');
$gameMessage.setChoices($gameSystem._kgg_choiceList, defaultType=0, cancelType=-2);
$gameMessage.setChoiceBackground(0);
$gameMessage.setChoicePositionType(2);
$gameMessage.setChoiceCallback(function(n) {
$gameSystem._kgg_choice = n; // 记录选了哪个
}.bind(this));
this._index++;
this.setWaitMode('message');
defaultType 后面跟的数字规定的是光标默认在哪一个选项,0默认第一个,-1没有默认选项。
cancelType 后面跟的数字规定的是取消的类型,-2“分支”,-1“不允许”,0第一个选项。
这里面还有几个数字可以改,暂时不一一介绍了。
插入第三段脚本,用于将选项序号转为看得懂的选项名。
if ($gameSystem._kgg_choice == -2) { // cancelType==-2时有效 $gameSystem._kgg_choice = '离开'; // 取消转为选择“离开” } else { $gameSystem._kgg_choice = $gameSystem._kgg_choiceList[$gameSystem._kgg_choice]; }
if ($gameSystem._kgg_choice == -2) { // cancelType==-2时有效
$gameSystem._kgg_choice = '离开'; // 取消转为选择“离开”
} else {
$gameSystem._kgg_choice = $gameSystem._kgg_choiceList[$gameSystem._kgg_choice];
}
后面就可以愉快地用条件分支判断选择了什么选项。
在条件分支里选择“脚本”,然后输入“ $gameSystem._kgg_choice == '小镇' ”,就可以在条件分支里写玩家选了“小镇”的后续处理啦!
(截图里所有的“交易”都应该改成“小镇”,我截图的时候忘记改了,可能产生了误导,抱歉。)
什么,你想一边显示文字一边显示选项?那就需要插件了。可惜我知道的插件少,只能等更熟练的人发个传送门了。_(:з」∠)_
也可以直接修改object.js里的Game_Interpreter.prototype.command101,但是对我自己来说不改也够用,所以懒得改。
|