设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 127|回复: 3
打印 上一主题 下一主题

[有事请教] 如何用脚本实现选项效果?

[复制链接]

Lv2.观梦者

梦石
0
星屑
531
在线时间
71 小时
注册时间
2024-5-16
帖子
26
跳转到指定楼层
1
发表于 2024-9-13 16:28:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 acips 于 2024-9-13 16:34 编辑

就是rm里正常的游戏选项分支
只是突发奇想...有没有大佬能给出一个模板让我学习一下
主要是选项框的位置之类的rm里可选的参数,看了下参考文档里也没写怎么用代码控制

Lv3.寻梦者

梦石
0
星屑
1496
在线时间
427 小时
注册时间
2023-5-18
帖子
155
2
发表于 2024-9-13 17:02:18 | 只看该作者
直接参考MZ源码,事件里的显示选项窗口: Window_ChoiceList
  1. // Show Choices
  2. Game_Interpreter.prototype.command102 = function(params) {
  3.     if ($gameMessage.isBusy()) {
  4.         return false;
  5.     }
  6.     this.setupChoices(params);
  7.     this.setWaitMode("message");
  8.     return true;
  9. };

  10. Game_Interpreter.prototype.setupChoices = function(params) {
  11.     const choices = params[0].clone();
  12.     const cancelType = params[1] < choices.length ? params[1] : -2;
  13.     const defaultType = params.length > 2 ? params[2] : 0;
  14.     const positionType = params.length > 3 ? params[3] : 2;
  15.     const background = params.length > 4 ? params[4] : 0;
  16.     $gameMessage.setChoices(choices, defaultType, cancelType);
  17.     $gameMessage.setChoiceBackground(background);
  18.     $gameMessage.setChoicePositionType(positionType);
  19.     $gameMessage.setChoiceCallback(n => {
  20.         this._branch[this._indent] = n;
  21.     });
  22. };
复制代码
B站传送门
-----------------------------------------------------------------------
“与其为做不到的事耿耿于怀,不如为自己做到的事而喜悦
吧!”

-----------------------------------------------------------------------
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
531
在线时间
71 小时
注册时间
2024-5-16
帖子
26
3
 楼主| 发表于 2024-9-13 21:45:47 | 只看该作者
Arrose 发表于 2024-9-13 17:02
直接参考MZ源码,事件里的显示选项窗口: Window_ChoiceList

不知道什么原因没成功执行选项
  1. // 1. 定义选项参数
  2. const choices = ["Option 1", "Option 2", "Option 3"]; // 选择项数组
  3. const cancelType = 2;  // 取消选项的索引
  4. const defaultType = 0; // 默认选择项的索引
  5. const positionType = 2; // 选项显示的位置类型
  6. const background = 0;  // 选择项的背景类型

  7. // 2. 设置选择项
  8. $gameMessage.setChoices(choices, defaultType, cancelType);
  9. $gameMessage.setChoiceBackground(background);
  10. $gameMessage.setChoicePositionType(positionType);

  11. // 3. 设置回调函数处理玩家的选择
  12. $gameMessage.setChoiceCallback(function(n) {
  13.     switch (n) {
  14.         case 0:
  15.             // 显示文本“你选择了选项1”
  16.             $gameMessage.add("You selected Option 1.");
  17.             break;
  18.         case 1:
  19.             // 显示文本“你选择了选项2”
  20.             $gameMessage.add("You selected Option 2.");
  21.             break;
  22.         case 2:
  23.             // 显示文本“你选择了选项3”
  24.             $gameMessage.add("You selected Option 3.");
  25.             break;
  26.         case -2:
  27.             // 显示文本“你取消了选择”
  28.             $gameMessage.add("You cancelled the selection.");
  29.             break;
  30.     }
  31. });

  32. // 4. 设置游戏解释器等待模式
  33. $gameMap._interpreter.setWaitMode("message");
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1926
在线时间
583 小时
注册时间
2012-4-8
帖子
415
4
发表于 7 天前 | 只看该作者
acips 发表于 2024-9-13 21:45
不知道什么原因没成功执行选项


怪(

确实不知道啥原因,新开的工程试了下,这份代码是能跑出来的
pokemon 和 digimon 正在路上
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-21 10:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表