Project1

标题: 如何用脚本实现选项效果? [打印本页]

作者: acips    时间: 2024-9-13 16:28
标题: 如何用脚本实现选项效果?
本帖最后由 acips 于 2024-9-13 16:34 编辑

就是rm里正常的游戏选项分支
只是突发奇想...有没有大佬能给出一个模板让我学习一下
主要是选项框的位置之类的rm里可选的参数,看了下参考文档里也没写怎么用代码控制
作者: Arrose    时间: 2024-9-13 17:02
直接参考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. };
复制代码

作者: acips    时间: 2024-9-13 21:45
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");
复制代码

作者: 505681468    时间: 2024-9-14 01:49
acips 发表于 2024-9-13 21:45
不知道什么原因没成功执行选项


怪(

确实不知道啥原因,新开的工程试了下,这份代码是能跑出来的




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