主题
脚本配置 scripts.yml
scripts.yml 定义了地牢的生命周期脚本,在不同阶段自动执行。
完整配置
yaml
# 副本初始化时执行(世界创建完毕、玩家传送前)
init:
- "action.world_time('day')"
- "action.weather('clear')"
# 副本开始后执行
start:
# 可选:开始条件(JavaScript 表达式,返回 true 才执行脚本)
condition:
- "dungeon.getOnlinePlayerCount() >= 1"
script:
- "action.title('@all', '&6地牢开始', '&7准备战斗!')"
- "action.spawn_group('wave_1')"
# 副本通关时执行(调用 action.complete() 后触发)
complete:
- "action.title('@all', '&a恭喜通关!', '&7即将返回大厅')"
- "action.grant_reward('通关奖励')"
- "action.wait('5s')"
- "action.exit_dungeon()"
# 副本退出时执行(所有玩家被传送回主世界前)
exit:
- "action.message('@all', '&7感谢参与!')"
# 副本失败时执行(调用 action.fail() 后触发)
fail:
- "action.title('@all', '&c挑战失败', '&7再接再厉')"
- "action.wait('3s')"
- "action.exit_dungeon()"
# 玩家死亡时执行(每个玩家死亡都会触发)
player_death:
- "action.message('@all', '{player.name} 倒下了!')"
# 全队死亡时执行(所有玩家都死亡)
all_death:
- "action.fail('全员死亡')"生命周期说明
| 事件 | 触发时机 | 说明 |
|---|---|---|
init | 世界创建完成后 | 设置世界环境,创建初始障碍物等 |
start | 玩家传送到副本后 | 可设置条件。用于开场演出和第一波怪物 |
complete | 调用 action.complete() 后 | 发放奖励、播放通关效果 |
exit | 玩家被传送回主世界前 | 清理工作 |
fail | 调用 action.fail() 后 | 失败提示和退出处理 |
player_death | 每个玩家死亡时 | 可用于复活机制 |
all_death | 所有玩家都死亡时 | 通常直接调用 action.fail() |
多行字符串格式
脚本也可以使用 YAML 多行字符串格式,适合包含 if/else 等代码块:
yaml
complete: |-
action.title('@all', '&a通关!', '')
let time = dungeon.getRunningTime()
if (time < 300) {
action.grant_reward('速通奖励')
action.message('@all', '&a速通奖励已发放!')
} else {
action.grant_reward('普通奖励')
}
action.wait('5s')
action.exit_dungeon()变量
脚本中可以使用以下内置变量:
player/trigger- 触发脚本的玩家对象dungeon- 当前副本实例对象action- 动作调用对象
