跳转到内容

脚本配置 scripts.yml

scripts.yml 定义了地牢的生命周期脚本,在不同阶段自动执行。

# 副本初始化时执行(世界创建完毕、玩家传送前)
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 等代码块:

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 - 动作调用对象

详见 脚本系统概述,其中包含各类动作(消息 / 地牢 / 世界 / 玩家 / 战斗等)的完整参考。