跳到主要内容

动作:消息与音效

这一页是给玩家「看」和「听」的动作。三种写法、@对象、~区域 的通用规则见 脚本写法。

怎么看这几页动作说明​

每个动作都按同样的格式写:

  • 简写:动作 参数1 参数2 …,参数按顺序填。表格里的「第 1 个」就是动作名称后面的第一个词。
  • DungeonPlus 写法:DungeonPlus 原本就有的脚本,$动作{参数=值;…} @对象 可以直接贴进来。
  • 完整写法:DungeonPlus 没有这个动作,但同样可以用 $动作{参数=值;…} 的格式写,参数名称见表格。
  • 表格的「参数」一栏同时列出简写的位置和完整写法的参数名称,例如「第 1 个 / text」。
  • 文字里可以用颜色代码:&a、&l 这种 & 代码,&#66ccff 这种十六进制颜色,也支持 MiniMessage。
  • 文字里可以用变量({v:碎片}、{self}、%player_level%……),见 变量与占位符。
文字类动作的简写也能接参数

简写里可以夹带 名称=值(例如 mob 霜烬守卫 王座 amount=2)。最后一个参数是一整段文字的动作 (message、title、actionbar、broadcast、command、console、hologram 的文字、npc 的名字、fail 的原因……) 可以把下面这些参数接在文字后面,它们会被当成参数,不会显示出来:

click= clickable= glow= ai= type= fade-in= fadein= stay= fade-out= fadeout= delay= at= location= point= volume= pitch= chance= console=

例如 title &c第二波||&7更多骷髅来了 stay=3、hologram create 传送石 传送石 &e点我传送 click=true、npc spawn 冰之精灵 王座 FrostSpirit &b冰之精灵 glow=true。 文字前面写 type=title 也可以(message type=title &4第二阶段,&7守卫的护甲碎裂了)。 其他的 名称=值(例如文字里的 血量=100)照样当成文字显示。

message 聊天消息​

别名:msg、text、tell。tell 和 message 完全一样,只是默认对象是 @self。

在聊天栏发一条(或多条)消息。

简写:message 文字

DungeonPlus 写法:$message{type=text;text=文字} @dungeon

参数必填说明
第 1 个起的整段 / text是消息内容,中间可以有空格。用 || 分成多行,一次发好几行
type否简写可以写在文字前面(type=title)或后面。text(默认,聊天栏)/ title(屏幕标题,text 用英文逗号分开主标题和副标题)/ actionbar(快捷栏上方)
fadein stay fadeout否只在 type=title 时有用:淡入、停留、淡出的秒数,默认 0.3 / 2.2 / 0.5(也可以写 10t 表示 tick)

对象:所有 @对象 都可以用,默认 @dungeon(tell 默认 @self)。文字里的 {player} 会换成收到这条消息的那位玩家。

monster.yml
前厅卫兵:
end:
- "message &a前厅清空了,大门已经打开!"
- "message &7长老:「做得好。」||&7长老:「祭坛就在前面,小心脚下。」"
trigger.yml
长老对话:
type: npc
id: 长老
cooldown: 3
script:
- "tell &e长老&7:「祭坛的封印只能撑一阵子,动作要快。」"
- "message &7{self} 和长老聊了几句。 @others"
script.yml
第二阶段:
- "$message{type=title;text=&4第二阶段,&7守卫的护甲碎裂了;stay=3} @dungeon"

注意:

  • 简写默认发聊天消息;写成 message type=title 主标题,副标题 就会显示成标题。只要标题、快捷栏文字时,也可以直接用下面的 title、actionbar 动作。
  • 简写时整行最后一个词如果刚好是 @self、@leader 这类对象名,会被当成 @对象,不会显示出来。
  • type=title 时 text 里第一个英文逗号用来分开主标题和副标题,所以主标题里不能有英文逗号(用中文逗号「,」)。

title 标题​

在屏幕中间显示大标题和副标题。

简写:title 主标题||副标题

完整写法:$title{text=主标题||副标题;fadein=0.5;stay=3;fadeout=1} @dungeon

参数必填说明
第 1 个起的整段 / text(或 title)是主标题,|| 后面是副标题;不需要副标题就不写 ||
fadein否淡入秒数,默认 0.3(6t)
stay否停留秒数,默认 2.2(44t)
fadeout否淡出秒数,默认 0.5(10t)

对象:所有 @对象 都可以用,默认 @dungeon。

monster.yml
前厅卫兵:
waves:
- mobs:
- "minecraft:zombie 3"
- mobs:
- "minecraft:stray 4"
start:
- "title &c第二波||&7冰霜流浪者出现了"
end.yml
clear:
- "title &6&l通关!||&7评价 {rank} ‧ 用时 {elapsed}"
script.yml
倒计时:
- "$title{text=&e3;fadein=0;stay=0.8;fadeout=0} @dungeon"
- "delay 1"
- "$title{text=&e2;fadein=0;stay=0.8;fadeout=0} @dungeon"
- "delay 1"
- "$title{text=&e1;fadein=0;stay=0.8;fadeout=0} @dungeon"

注意:简写也可以改淡入、停留、淡出,接在文字后面就好:title &c第二波||&7冰霜流浪者出现了 stay=3 fadein=0.5。

subtitle 副标题​

只显示副标题(主标题留空),适合不想遮住画面的提示。

简写:subtitle 文字

完整写法:$subtitle{text=文字;stay=2} @dungeon

参数必填说明
第 1 个起的整段 / text是副标题文字
fadein stay fadeout否同 title

对象:所有 @对象 都可以用,默认 @dungeon。

trigger.yml
走进冰窟:
type: enter
region: 冰窟
once: true
script:
- "subtitle &7有什么东西在冰层下面移动……"

actionbar 快捷栏文字​

在快捷栏上方显示一行字,停留约 2 秒,适合计数、进度这类频繁出现的提示。

简写:actionbar 文字

完整写法:$actionbar{text=文字} @self(DungeonPlus 风格也可以写 $message{type=actionbar;text=文字})

参数必填说明
第 1 个起的整段 / text是要显示的文字

对象:所有 @对象 都可以用,默认 @dungeon。

trigger.yml
捡碎片:
type: mob-death
mob: minecraft:stray
script:
- "var add 碎片 1"
- "actionbar &b寒冰碎片 +1({v:碎片}/3)"
trigger.yml
岩浆警告:
type: enter
region: 岩浆区
script:
- "actionbar &c好热!快离开岩浆区 @self"

broadcast 全服公告​

对整个服务器所有在线玩家发聊天消息(不只是副本里的人)。

简写:broadcast 文字

完整写法:$broadcast{text=文字}

参数必填说明
第 1 个起的整段 / text是公告内容

对象:不看 @对象 和 ~区域,一律发给全服。{player} 和 %…% 会对每位收到的玩家各自代入。

end.yml
clear:
- "broadcast &6[副本] &e{leader} &7的队伍通关了 {dungeon}&7,用时 &a{elapsed}"
monster.yml
霜烬守卫:
start:
- "broadcast &4[副本] &7有一支队伍唤醒了霜烬守卫……"

注意:同时开很多场副本时,公告会很多,建议只放在通关、首杀这类重要时刻。

sound 音效​

播放音效。可以是原版音效,也可以是资源包里自己加的音效。

简写:sound 音效 [音量] [音调] [位置]

DungeonPlus 写法:$sound{type=ENTITY_WITHER_SPAWN;volume=1;pitch=0.8} @dungeon

参数必填说明
第 1 个 / type(或 sound、name)是原版音效名称:ENTITY_WITHER_SPAWN 或 entity.wither.spawn 都可以;资源包音效写 sounds.json 里的名称,例如 myserver:boss.roar
第 2 个 / volume否音量,默认 1。大于 1 时远处也听得到(约 16 格 × 音量)
第 3 个 / pitch否音调,默认 1,范围 0.5~2,越大越尖
第 4 个 / location(或 at、point)否在这个位置播放(写法见 位置的写法)。不写 = 在每位玩家自己身上播放,一定听得清楚

对象:所有 @对象 都可以用,默认 @dungeon。只有对象听得到,其他人听不到。

monster.yml
前厅卫兵:
end:
- "obstacle open 大门"
- "sound BLOCK_IRON_DOOR_OPEN 1 0.7"
monster.yml
霜烬守卫:
start:
- "sound myserver:boss.frost_music 1 1"
- "sound ENTITY_WITHER_SPAWN 3 0.6 王座"
trigger.yml
启动祭坛:
type: interact
point: 祭坛
script:
- "sound BLOCK_BEACON_ACTIVATE 1 1.2 @self"

注意:

  • 要指定位置,前面的音量和音调都要写(sound 音效 1 1 王座);只写 sound 音效 王座 时「王座」会被当成音量而被忽略。不想写音量音调时改用 sound 音效 at=王座。
  • 找不到的原版名称会被当成资源包音效播放,不会报错;如果什么都没听到,先检查名称有没有拼错。
  • 资源包音效要玩家装了你的资源包才听得到。

stopsound 停止音效​

停止正在播放的音效,常用来关掉资源包里的 Boss 背景音乐。

简写:stopsound [音效]

完整写法:$stopsound{type=myserver:boss.frost_music}

参数必填说明
第 1 个 / type(或 sound)否要停止的音效,写法同 sound。不写 = 停止这位玩家正在听的所有音效(包括原版背景音乐)

对象:所有 @对象 都可以用,默认 @dungeon。

monster.yml
霜烬守卫:
start:
- "sound myserver:boss.frost_music 1 1"
end:
- "stopsound myserver:boss.frost_music"
- "sound UI_TOAST_CHALLENGE_COMPLETE 1 1"
end.yml
fail:
- "stopsound"
- "message &c挑战失败:{reason}"