循环就是一张优先级清单:软件每隔一会儿从上往下过一遍,第一条「条件成立」的就发出去。 本文里的字段名和法术 ID 都从软件的契约里自动生成,照抄不会错。
一套循环是一个数组,每条规则有四个字段(holdMs 可省):
{
"action": "spell_12294", // 放什么:动作名(见下方动作表,不是技能名)
"when": ["and", // 什么时候放:条件(见下一节)
["flag", "target_valid", true],
["num_at_least", "rage", 30],
["avail", 12294]],
"reason": "怒气够 30,打致死打击", // 给人看的说明,会显示在软件界面上
"tag": "输出", // 分类标签,随便分:起手/输出/自保/增益
"holdMs": 1500 // 放过之后 1.5 秒内不再考虑这条(防连发)
}
顺序就是优先级。软件从上往下扫,第一条条件成立的立刻发出去,后面的不管。 所以「爆发 / 自保 / 保增益」这类要抢在输出前面,就把它们放上面。
| 算子 | 含义 | 写法 |
|---|
组合起来读就是人话:["and", ["flag","target_valid",true], ["num_below","player_health_pct",35]]
= 「有目标 且 自己血量低于 35%」。
| 字段类型 | 该用 | 说明 |
|---|
「现成循环用过」= 这个组合在现有手写循环里真的出现过,最保险。
| 字段 | 类型 | 用哪个算子 | 说明 |
|---|
动作名填进 action;法术 ID 填进 avail / ready。
两者不是一回事 —— avail 只认数字 ID。
| 动作名 | 技能 | 法术 ID | 按键 |
|---|
| 现象 | 原因与改法 |
|---|---|
| 这条规则从来不触发 | 字段名拼错(大小写敏感),或算子用错类型 —— 比如对数值字段用了 flag。对照上面的字段表逐字核。 |
avail 判断永远不成立 | 里面填的是法术 ID 数字,不是动作名也不是技能名。["avail","spell_12294"] 是错的,要写 ["avail",12294]。 |
| 同一个技能被连着放好几次 | 没写 holdMs。加上「这个技能大概多久用一次」的毫秒数,比如雷霆一击 4000。 |
| 软件一直在发同一个技能,其他都不放 | 有条规则的条件永远成立(比如只判了「技能可用」没判别的),它挡住了后面所有规则。一条规则至少要带一个会变化的条件(血量、怒气、目标状态、增益在不在)。 |
| 给怪上完 DoT 后疯狂重复上 | 缺「增益在不在」的检查。用 ["flag","<dot字段>",false] 判断「没这个 DoT 才补」。字段名在职业专属表里找。 |
| 没目标也在发技能 | 漏了 ["flag","target_valid",true]。几乎所有伤害规则都该带这一条。 |
| 读条技能老是放不出来 | 不是你的问题:软件在你自己读条期间会自动停发(防止打断自己)。别为这个改循环。 |
本页数据由 tools/gen_guide.py 从软件契约自动生成(),
与软件实际识别的字段、动作一一对应。