跳到主要内容

动作:玩家

这一页的动作直接作用在玩家身上:回血、药水效果、生命与复活、给物品和钱、执行指令、离开副本。 每个动作的格式说明见 怎么看这几页动作说明,@对象 见 脚本写法。

heal 回血​

简写:heal [血量]

完整写法:$heal{amount=10} @alive

参数必填说明
第 1 个 / amount否回多少血(2 = 一颗心)。不写 = 补满,同时补满饱食度、灭火

对象:所有 @对象 都可以用,默认 @dungeon。旁观中(倒下、出局)的人不受影响。

script.yml
狂暴:
- if: "{v:碎片} >= 3"
then:
- "message &b寒冰碎片发出光芒,全队恢复了生命!"
- "heal"
trigger.yml
治疗泉水:
type: enter
region: 泉水
cooldown: 30
script:
- "heal 8 @self"
- "particle self HEART 10"

feed 补饱食​

把饱食度补满(饱食度 20、饱和度 10)。

简写:feed

完整写法:$feed{} @alive

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

monster.yml
前厅卫兵:
end:
- "feed"
- "message &a长老送来了食物,大家吃饱了。"

effect 药水效果​

给玩家药水效果。

简写:effect 效果 [秒数] [等级]

完整写法:$effect{type=SPEED;time=30;level=2} @alive

参数必填说明
第 1 个 / type(或 effect)是效果名称:SPEED、speed、slowness、resistance……(旧名称如 INCREASE_DAMAGE 也可以)
第 2 个 / time(或 seconds)否持续时间,默认 10 秒。可以写 30、1.5、1m、2m30s;写 0 = 整场副本
第 3 个 / level否等级,默认 1(2 = 速度 II)

对象:所有 @对象 都可以用,默认 @dungeon。旁观中的人不会被加上效果。效果不显示粒子,但会显示图标。

monster.yml
前厅卫兵:
end:
- "effect SPEED 30 2"
- "effect REGENERATION 10 1"
task.yml
毒雾:
auto-start: true
loop: true
timeline:
5:
- "effect POISON 3 1 @alive ~毒雾区"
trigger.yml
冰霜诅咒:
type: interact
point: 诅咒石像
script:
- "effect SLOWNESS 15 2 @self"
- "effect MINING_FATIGUE 15 1 @self"
- "tell &b寒气钻进了你的骨头……"

注意:时间的写法和 delay 相同,effect SPEED 2m30s 2 = 速度 II 持续 2 分 30 秒。

cleareffect 清除效果​

简写:cleareffect [效果]

完整写法:$cleareffect{type=POISON} @dungeon

参数必填说明
第 1 个 / type(或 effect)否只清这个效果。不写 = 清掉所有效果

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

monster.yml
沼泽巨蟒:
end:
- "cleareffect POISON"
- "message &a毒雾散去了。"
trigger.yml
净化泉水:
type: enter
region: 净化泉水
script:
- "cleareffect @self"

注意:不写效果时,config.yml 里 environment.effects 给的效果(例如夜视)也会被清掉,要等复活时才会重新加上。只想清负面效果,逐个写效果名称。

lives 生命数​

增加、减少或直接设定剩余生命(复活次数)。

简写:lives 数值

完整写法:$lives{amount=+1} @self

参数必填说明
第 1 个 / amount(或 value)是+1 = 加 1 条,-1 = 减 1 条,3 = 直接设成 3 条。可以用变量

对象:

生命模式(config.yml 的 lives.mode)效果
shared 全队共用一律改全队共用的生命,@对象 没有作用
每人各自不写对象 = 改所有队员;@self = 只改触发者;@player = 改每位在场的人
monster.yml
前厅卫兵:
end:
- "lives +1"
- "message &a击败卫兵,获得一次额外的复活机会!"
trigger.yml
生命之泉:
type: interact
point: 生命之泉
once: true
script:
- "lives +2 @self"
- "tell &a你喝下泉水,多了 2 次复活机会。"

注意:

  • 生命最少是 0,不会变成负数。生命无限(amount: -1)的副本改了也没有作用。
  • 加生命不会把已经出局的人救回来,要用 revive。
  • 每人各自的模式下,只有 @self 和 @player 会只改指定的人;写其他对象(例如 @leader)会改到所有队员。

revive 复活​

立刻救起倒下的人(正在等复活倒数的,以及已经出局的)。

简写:revive [checkpoint]

完整写法:$revive{death-location=false} @dead

参数必填说明
第 1 个 / at否写 checkpoint = 在存档点复活。不写 = 在倒下的位置复活
death-location否false = 在存档点复活(等同于上一项)

对象:所有 @对象 都可以用,默认 @dead。还活着的人不受影响。复活时会补满血和饱食度、重新加上副本环境效果。

monster.yml
前厅卫兵:
end:
- "revive checkpoint"
- "message &a倒下的队友都回来了。"
trigger.yml
复活图腾:
type: interact
point: 复活图腾
once: true
script:
- "revive"
- "message &e{self} 启动了复活图腾,所有倒下的人都站起来了!"

注意:用 revive 复活不会扣生命。

revive-setting 复活设定​

DungeonPlus 的 @init 脚本。改这一场的复活规则(覆盖 config.yml 的 lives 设定),一般写在 before.yml,也可以在中途改。

简写:revive-setting revive=true number=3 death-location=true time=10(只有 名称=值 的写法)

DungeonPlus 写法:$revive-setting{revive=true;number=3;death-location=true;time=10} @init

参数必填说明
revive否false = 不能复活,倒下直接出局;true = 可以复活。不写 = 维持目前的设定
number(或 lives)否把生命设成这个数(全队共用模式改共用生命,否则每个人都设成这个数)
death-location否true = 在倒下的位置复活;false = 在存档点复活
time(或 delay)否倒下后等几秒复活

对象:不看 @对象。

before.yml
script:
- "$revive-setting{revive=true;number=3;death-location=false;time=10} @init"
monster.yml
# 最终阶段:不能再复活
霜烬守卫:
start:
- "revive-setting revive=false"
- "title &4最终决战||&c倒下就无法再站起来"

注意:只有写出来的参数会被改,没写的维持原样。例如 revive-setting time=5 只改等待秒数,不会改变能不能复活。

give 给物品​

简写:give 物品 [数量]

完整写法:$give{item=DIAMOND;amount=3} @dungeon

参数必填说明
第 1 个 / item(或 name、type)是tickets.yml 里的门票 ID,或原版物品 ID(DIAMOND、minecraft:diamond)
第 2 个 / amount否数量,默认 1

对象:所有 @对象 都可以用,默认 @dungeon(每人各给一份)。背包满了会掉在脚边。

monster.yml
前厅卫兵:
end:
- "give GOLDEN_APPLE 2"
trigger.yml
冰之宝匣:
type: interact
point: 冰之宝匣
once: true
script:
- "give frost_key 1 @self"
- "message &b{self} 拿到了一把霜之钥匙。"

注意:只能给原版物品和门票。带名字、附魔或其他插件的物品,用 console 执行那个插件的给物品指令,或放进 end.yml 的奖励。

take 收物品​

从玩家背包里拿走物品。常和 item 条件搭配做「交钥匙开门」。

简写:take 物品 [数量]

完整写法:$take{item=霜之钥匙;amount=1} @self

参数必填说明
第 1 个 / item(或 name、type)是门票 ID → 拿这种门票;原版物品 ID → 拿这种材质的物品(不含门票);其他文字 → 拿名字里有这段文字的物品(不看颜色)
第 2 个 / amount否数量,默认 1

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

trigger.yml
交钥匙:
type: interact
point: 冰封大门
script:
- if: "item 霜之钥匙 @self"
then:
- "take 霜之钥匙 1 @self"
- "obstacle open 冰封大门"
else:
- "tell &c大门被冰封住了,需要一把霜之钥匙。"

注意:

  • 数量不够时一个都不拿,也不会提示,所以先用 item 条件判断。
  • 只看背包(含快捷栏),不看盔甲栏和副手。

money 金钱​

需要 Vault 和经济插件。

简写:money 金额 / money give 金额 / money take 金额

完整写法:$money{operation=give;amount=100} @dungeon

参数必填说明
第 1 个 / operation否give 给钱 / take 扣钱。不写时看金额正负:money 100 给 100,money -50 扣 50
第 2 个(或不写操作时第 1 个)/ amount是金额,可以有小数,可以用变量

对象:所有 @对象 都可以用,默认 @dungeon(每人各一份)。

monster.yml
前厅卫兵:
end:
- "money 100"
end.yml
clear:
- "money give {v:赏金}"
- "message &6每人获得赏金 {v:赏金} 金币"

注意:扣钱时余额不够会扣失败,不会提示也不会变成负数。

exp 经验​

简写:exp 数量 / exp level 数量

完整写法:$exp{type=level;amount=5} @dungeon

参数必填说明
第 1 个 / type否写 level = 给等级;不写 = 给经验点数
第 2 个(或不写 level 时第 1 个)/ amount是数量

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

monster.yml
前厅卫兵:
end:
- "exp 200"
end.yml
clear:
- "exp level 5"

command 执行指令​

别名:cmd

执行指令。简写和 DungeonPlus 写法的执行方式不一样,请看对象的说明。

简写:command 指令

DungeonPlus 写法:$command{text=eco give <player.name> 100;console=true;death-player=false;chance=100} @player

参数必填说明
第 1 个起的整段 / text(或 command)是指令,开头的 / 可写可不写。多条指令用 || 分开;或每条都以 / 开头、用英文逗号分开(/指令1,/指令2)
console否完整写法:true = 由控制台执行;不写 = 由玩家自己执行(简写本来就由控制台执行)
death-player否只在完整写法 @player 时有用:true = 倒下的人也执行
chance否执行机率(%),默认 100。简写接在指令后面:command crate key give {player} frost 1 chance=20

对象:

写法执行方式
简写,不写对象 / 任何对象控制台对每位对象各执行一次,{player} = 那位玩家。默认 @dungeon = 每人一次
完整写法 @dungeon(或不写)控制台执行一次,{player} = 触发者(没有触发者时是空的)
完整写法 @player每位还活着的人各执行一次(death-player=true 时含倒下的人)
完整写法 @self 等其他对象对象里的每个人各执行一次

<player.name>(DungeonPlus 的写法)会换成执行那一次的玩家名字,简写、完整写法、任何对象都可以用。

end.yml
clear:
- "command eco give {player} 500"
- "command lp user {player} permission settemp title.frost true 7d"
trigger.yml
领取称号:
type: interact
point: 称号石碑
once: true
script:
- "command title give {player} 霜烬征服者 @self"
monster.yml
霜烬守卫:
end:
- "$command{text=/eco give <player.name> 100,/say <player.name> 打倒了守卫;console=true} @player"
- "$command{text=crate key give <player.name> frost 1;console=true;chance=20} @player"

注意:

  • 简写写 command say 副本开始了 会每个人各执行一次(4 个人就说 4 次)。只想执行一次,用 console。
  • 完整写法不写 console=true 时由玩家自己执行,玩家没有那个指令的权限就会失败。
  • DungeonPlus 习惯用英文逗号分开多条指令(text=指令1,指令2);本插件只有在每条都以 / 开头时才会用逗号分开(/指令1,/指令2 或 /指令1, /指令2),否则请改用 ||。
  • 简写的指令是最后一整段文字,后面可以接 chance=20、delay= 这类参数(见 怎么看这几页动作说明);指令本身的 名称=值(例如 血量=100)照样留在指令里。

console 控制台指令​

由控制台执行一次指令。

简写:console 指令

完整写法:$console{text=指令}

参数必填说明
第 1 个起的整段 / text(或 command)是指令,多条用 || 分开(或每条以 / 开头、用英文逗号分开)

对象:不看 @对象。{player}、%…% 对触发者代入;没有触发者时 {player} 是空的。

monster.yml
霜烬守卫:
start:
- "console say 有一支队伍正在挑战霜烬守卫({players} 人)"
trigger.yml
首杀公告:
type: kill
mob: FrostWarden
once: true
script:
- "console say {self} 给了霜烬守卫最后一击!"

player-command 玩家指令​

让玩家自己执行指令(和玩家在聊天栏打指令一样,需要权限)。

简写:player-command 指令

完整写法:$player-command{text=指令} @self

参数必填说明
第 1 个起的整段 / text(或 command)是指令,多条用 || 分开

对象:所有 @对象 都可以用,默认 @dungeon(每人各自执行)。

trigger.yml
打开商店:
type: npc
id: 商人
script:
- "player-command shop open frost @self"

gamemode 游戏模式​

暂时切换玩家的游戏模式。

简写:gamemode 模式

完整写法:$gamemode{mode=adventure} @alive

参数必填说明
第 1 个 / mode是survival / adventure / creative / spectator

对象:所有 @对象 都可以用,默认 @dungeon。只会改活着的人,旁观中的人不受影响。

trigger.yml
进入建筑区:
type: enter
region: 搭桥区
script:
- "gamemode survival @self"

注意:这是暂时的,复活、重连后会回到副本的游戏模式。要整场改掉,用 setting mode=SURVIVAL(见 动作:环境与规则)。

leave 离开副本​

别名:kick

让玩家离开副本,传回进入前的位置(和玩家自己输入离开指令一样)。

简写:leave [原因]

完整写法:$leave{reason=原因} @self

参数必填说明
第 1 个起的整段 / reason(或 text)否离开原因:会在聊天栏发给被请出去的那位玩家,也会传给开发者 API 事件

对象:所有 @对象 都可以用,默认 @self。没有触发者又没写对象时不会踢任何人。

trigger.yml
逃生出口:
type: enter
region: 逃生出口
script:
- "leave &7你选择了离开古殿。"
trigger.yml
禁止作弊:
type: command
command: fly
cancel: true
script:
- "kick &c副本里不能飞行,你被请出了副本。 @self"

注意:

  • 写了原因时,被请出去的玩家会在聊天栏看到这段文字(可以用 & 颜色代码)。
  • 所有人都离开时副本会判定失败。