副本文件夹
plugins/CloudDungeon/dungeons/ 底下每个文件夹就是一个副本,文件夹名称就是副本 ID(/cd join <副本ID>)。
dungeons/
└─ mine/
├─ config.yml 基本设置:名称、地图、人数、组队、时间、生命、天气、门票、入场条件、冷却、计分板、音效、内建提示
├─ before.yml 开始前脚本(进场后、倒数前)
├─ start.yml 开始后脚本(倒数结束、开始计时)
├─ monster.yml 怪物组
├─ script.yml 脚本组(可重复使用的一串动作)
├─ task.yml 任务组(时间轴)
├─ trigger.yml 触发组(某件事发生时执行)
├─ end.yml 通关组 / 失败组 / 奖励
├─ loot.yml 宝箱组(选用)
├─ map.schem 地图方块(编辑模式自动产生)
└─ points.yml 地图范围与点位(编辑模式自动产生,也可以手改)
没用到的文件可以留空或删掉;/cd admin create 建出来的范本每个都有注释。
执行顺序
| 时机 | 执行 | 说明 |
|---|---|---|
| 队长开始 | 检查 config.yml 的条件、门票、次数 | 不符合会列出每一条原因;门票先「押着」 |
| 地图贴好、全员传送进场 | before.yml | 剧情、布置(NPC、全息字、关门)。这里跑完才开始倒数 |
| 倒数结束 | start.yml;auto-start: true 的怪物组、任务组、触发组同时开始 | 开始计时 |
| 进行中 | 怪物组、任务组、触发组、脚本组互相呼叫 | 见下方「串起来」 |
任何脚本执行 clear | end.yml 的 clear,发 rewards | 进入结算时间(默认 20 秒,可以开宝箱),之后送回原处 |
时间到 / 全灭 / fail | end.yml 的 fail | 失败原因放在 {reason} |
串起来
所有文件都是用同一种脚本写的,每一行一个动作。文件之间靠这几个动作串起来:
| 动作 | 作用 |
|---|---|
monstergroup 组名 | 叫出怪物组(怪物组打完会执行它的 end) |
script 名称 | 执行脚本组(跑完才接着跑下一行) |
task start 名称 | 开始任务组的时间轴 |
trigger enable 名称 | 打开一个本来关着的触发组 |
clear / fail 原因 | 通关 / 失败 |
一个常见的流程:
start.yml monstergroup 前厅卫兵
monster.yml 前厅卫兵.end → obstacle open 大门、trigger enable 启动祭坛
trigger.yml 启动祭坛(右键祭坛)→ monstergroup 守卫
monster.yml 守卫.end → clear
end.yml clear → 通关讯息、奖励
插件内建的范例副本「霜烬古殿」就是这个流程,可以打开 dungeons/example/ 对照着看。
地图与点位
地图与点位在编辑模式里做(编辑模式),存在 map.schem 与 points.yml。
脚本里写位置时用点位名称(例如 teleport 王座),也可以写坐标 x,y,z——X/Z 相对于副本格子的原点、Y 是世界高度,
跟编辑模式里用指南针左键看到的坐标一样。详见 点位。
config.yml 的 map: 可以填别的副本 ID 共用地图,或填一个清单每场随机一张。