脚本概览
DM 的脚本系统内容并不少。副本流程、机关联动、刷怪节奏、状态控制、奖励发放、运营处理,基本都能落到脚本层。
这套系统平时看起来像是分散在很多 yml 里,实际能力面可以拆成四层:
- 语法层:负责脚本结构本身,支持赋值、判断、循环、概率分支、异常处理、延迟执行。
- 变量层:负责状态组织,区分副本公共变量、玩家个人变量、上下文读取值、外部输入值。
- 读取层:包括普通函数和大量
对象.方法()读取写法,用来做判断、计算、拼文本。 - 动作层:负责推动副本运转,处理刷怪、开门、切阶段、传送、发奖励、改状态。
常见脚本入口
main.yml的事件绑定、进入条件、通关条件、通关脚本阶段.yml的开始脚本、通关脚本、开始玩家脚本、通关玩家脚本区域.yml的进入脚本怪物组.yml的生成脚本、全灭脚本、玩家脚本奖励.yml的奖励脚本模块.yml的复活、保护、结算、层进、竞速、临时背包等玩法脚本交互.yml、全息.yml的触发脚本/dm script的临时执行脚本
脚本能力面
当前版本能确认的高频能力,至少包括这些方向:
- 语言语法:
if / else if / else、chance / fail、for、switch、require、try / catch、throw、delay、return / break / continue - 常规函数:数学、随机、字符串、集合、时间、逻辑、类型转换、玩家读取、调试输出、变量读写
- 读取型对象:
副本.*()、阶段.*()、怪物组.*()、区域.*()、交互.*()、障碍物.*()、全息.*()、变量.PAPI() - 基础动作:消息、标题、音效、粒子、命令、传送、怪物、区域、阶段、货币、物品、属性、复活
- 扩展动作:CraftX、AchieveMaster、SoulRingX、LyWarehouse 接入动作
- 模块动作:层进、竞速、中途结算、奖励加成、冷却递增、死亡抉择、临时背包
一段典型机制脚本
text
if 怪物组.全灭("第一波") {
副本.设置变量("Boss已开启", true)
障碍物.关闭("Boss门组")
消息.全体("&cBoss 房已开启")
怪物组.生成("Boss组")
}这类写法同时用到了三层:
怪物组.全灭("第一波")负责读取条件副本.设置变量("Boss已开启", true)负责记状态障碍物.关闭、消息.全体、怪物组.生成负责推进流程
建议阅读顺序
用脚本做副本时的整理习惯
- 公共机制状态统一放副本变量。
- 个人层数、个人积分、个人任务进度统一放玩家变量。
- 条件判断多用读取型方法,副作用多用动作。
- 长脚本先拆清阶段,再补细节。
- 复杂机制先跑通流程,再加表现和随机分支。