| 赞 | 150 |
| VIP | |
| 好人卡 | |
| 积分 | 314 |
| 经验 | |
| 最后登录 | 2026-9-21 |
| 在线时间 | 1525 小时 |
- 梦石
- 18
- 星屑
- 13373
- 在线时间
- 1525 小时
- 注册时间
- 2020-3-21
- 回帖
- 334
 
|
发表于 2021-12-2 09:52:59
|
显示全部楼层
本帖最后由 仇九 于 2021-12-2 10:15 编辑
任小雪 发表于 2021-12-2 07:26
choices = []; params = [];
$gameMessage.setChoices(choices, "选项1")
choices.push("选项1");choices ...
呃……我还以为你想知道的是“在选择选项的时候,如何在玩家不自己按下确认键的时候,系统帮助玩家按下确认键,也就是选择选项/选项选择”。
你这么做是想让选项框里的文字能动态变化吗?
如果单纯显示的话,那这样就行:
this._params = [["测试1","测试2"],1,0,2,0];
this._indent = 0;
this.command102();
其中this._params的详细格式是这样:
[选项数组,取消选项,默认选项,窗口位置类型,背景类型]
选项数组:选项的文字,比如["测试1","测试2"]
取消选项:写-2时代表分支,
写-1时代表不允许,
写0时代表选项1(选项1代表选项数的第一个元素,也就是上面的"测试1"),
写1时代表选项2(选项2代表选项数的第二个元素,也就是上面的"测试2"),
以此类推。
默认选项:写-1时代表无默认选项。
写0时代表选项1(选项1代表选项数的第一个元素,也就是上面的"测试1"),
写1时代表选项2(选项2代表选项数的第二个元素,也就是上面的"测试2"),
以此类推。
窗口位置类型:0代表左侧,1代表中间,2代表右侧。
背景类型:0代表窗口,1代表暗淡,2代表透明。
但是这样还是只能看不能选(实际上所谓的不能选是说不能指定选择哪个选项后执行哪些指令吧?我还是不确定你到底问的是啥,如果能说得更清楚些就好了。)
如果要为每个选项添加对应的指令的话在下面再添加一个“事件指令中的选项”就好了。
看下面这个图中的例子:
一看会觉得系统会先显示一个有"测试1"和"测试2"两个选项的窗口,然后再显示一个有"1","2","3","4","5"五个选项的窗口,但实际上不是。
系统会显示一个有"测试1"和"测试2"两个选项的窗口,
如果你选择了"测试1",那么直接就会执行下方那个选项指令中第一个选项框的console.log("选择了选项1"),然后执行下方的console.log("选项完全结束");,
若是选择了"测试2",那么直接就会执行下方那个选项指令中第二个选项框的console.log("选择了选项2"),然后执行下方的console.log("选项完全结束");。
也就是说上方的那个脚本指令中的内容覆盖了下方选项框中的设定。永远不会显示那个有"1","2","3","4","5"五个选项的窗口。
而且在这种情况下下方的console.log("选择了选项3"),console.log("选择了选项4")和console.log("选择了选项5")都不可能执行,因为你上面只有["测试1","测试2"]两个选项。
如果再添加一个"测试3",也就是说变成["测试1","测试2","测试3"],那么玩家选择"测试3"的时候就会执行console.log("选择了选项3"),然后再执行console.log("选项完全结束");。
这应该能满足我理解的那个需求了。
按照上方的那个要求,只执行脚本而不执行事件指令那很简单,这样就行:
this._params = [["测试1","测试2"],1,0,2,0];
this._indent = 0;
this.command102();
$gameMessage.setChoiceCallback((n)=>{
if(n==0){console.log('0123');}
if(n==1){console.log(123);}
if(n==2){console.log(23);}
if(n==3){console.log(3);}
}
这个和2楼的脚本等同。 |
评分
-
查看全部评分
|