开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[游戏相关] 这个监听器打开ActionFormData表单的脚本怎么写

 发表于 2025-7-1 21:55:47 来自手机|显示全部楼层|阅读模式 IP:山东省
88铁粒
本帖最后由 EnderTrekker 于 2025-7-2 16:25 编辑

我的想法是,当在聊天栏输入“菜单”二字的时候,打开这个菜单表单,表单的标题是菜单,里面有两个按钮,当玩家点击第一个按钮(开启)执行指令/tag @s add oy ,当玩家点击第二个按钮(关闭)执行指令/tag remove oy,下面是我原本写的一个,但是就是不行,找AI帮我改也没改好:
  1. import { world } from "@minecraft/server";
  2. import { ActionFormData } from "@minecraft/server-ui";
  3. //表单定义
  4. class SoulMenu {
  5.     static showMainMenu(player) {
  6.         const form = new ActionFormData()
  7.             .title("§l§a菜单")
  8.             .body("§7选择操作:")
  9.             .button("§a开启")
  10.             .button("§c关闭");
  11.         
  12.         form.show(player)
  13.             .then((response) => {
  14.                 if (response.canceled) return;
  15.                
  16.                 const commands = {
  17.                     0: { cmd: "tag @s add outofbody" },
  18.                     1: { cmd: "tag @s remove outofbody" }
  19.                 };
  20.                
  21.                 if (commands[response.selection]) {
  22.                     player.runCommandAsync(commands[response.selection].cmd)
  23.                         .then(() => player.sendMessage("§a操作成功!"))
  24.                         .catch(console.error);
  25.                 }
  26.             })
  27.             .catch(console.error);
  28.     }
  29. }
  30. //监听
  31. world.beforeEvents.chatSend.subscribe((event) => {
  32.     if (event.message === "帮助") {
  33.         event.cancel = true;
  34.         event.sender.sendMessage(HELP_MESSAGE);
  35.         return;
  36.     }
  37.    
  38.     if (event.message === "菜单") {
  39.         event.cancel = true;
  40.         SoulMenu.showMainMenu(event.sender);
  41.     }
  42. })
复制代码

 UI.js(1.26 KB, 下载次数: 7)
我是一个新手开发者,对代码很多都不太了解,如果有会修改的麻烦帮忙修改一下,谢谢!!!

最佳答案

查看完整内容

现在没有什么方便的办法能在玩家在聊天栏发出特定消息之后打开菜单,因为打开菜单的优先级貌似是低于聊天栏的优先级的,在玩家打开聊天栏时调用打开菜单的方法没有作用。一个比较好的办法是换成自定义命令解决,这时候需要system.run(() => SoulMenu.showMainMenu(event.sender));这样
苦力怕论坛,感谢有您~
 发表于 2025-7-1 21:55:48 来自手机|显示全部楼层 IP:天津
现在没有什么方便的办法能在玩家在聊天栏发出特定消息之后打开菜单,因为打开菜单的优先级貌似是低于聊天栏的优先级的,在玩家打开聊天栏时调用打开菜单的方法没有作用。一个比较好的办法是换成自定义命令解决,这时候需要system.run(() => SoulMenu.showMainMenu(event.sender));这样
2#2025-7-1 21:55:48回复收起回复
苦力怕论坛,感谢有您~
回复

使用道具举报

 楼主|  发表于 2025-7-4 14:17:17 来自手机|显示全部楼层 IP:山东省
Cat_Anchor 发表于 2025-7-3 17:02
现在没有什么方便的办法能在玩家在聊天栏发出特定消息之后打开菜单,因为打开菜单的优先级貌似是低于聊天栏 ...

具体怎么改呢,不太会啊,这个自定义指令东西我试了试,不会写网上也没找到合适的教程
3#2025-7-4 14:17:17回复收起回复
苦力怕论坛,感谢有您~
回复

使用道具举报

 楼主|  发表于 2025-7-4 14:17:55 来自手机|显示全部楼层 IP:山东省
Cat_Anchor 发表于 2025-7-3 17:02
现在没有什么方便的办法能在玩家在聊天栏发出特定消息之后打开菜单,因为打开菜单的优先级貌似是低于聊天栏 ...

另外感谢大佬回复
4#2025-7-4 14:17:55回复收起回复
苦力怕论坛,感谢有您~
回复

使用道具举报

 发表于 2025-7-4 17:21:00 来自手机|显示全部楼层 IP:广东省
使用ui.isbusy()
5#2025-7-4 17:21:00回复收起回复
苦力怕论坛,感谢有您~
回复

使用道具举报

 楼主|  发表于 2025-7-4 21:08:48 来自手机|显示全部楼层 IP:山东省
屑空白 发表于 2025-7-4 17:21
使用ui.isbusy()

感谢回复,但是我好像不太会
6#2025-7-4 21:08:48回复收起回复
苦力怕论坛,感谢有您~
回复

使用道具举报

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

| 由 木韩网络 提供支持 | GMT+8, 2026-6-24 05:15

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4